2011-07-14 19 views
6

WCFサービスに接続するWPFクライアントがあり、特定のユーザーのみが特定の操作を実行できるように機能の一部をロックする必要があります。 WCFサービスは、サービスメソッドの実行時にクライアントユーザーを偽装します。 OSはWindows XPです。IsInRoleチェックがキャッシュされた資格情報を使用していないことを確認する方法

アプリケーションの機能にユーザーロールを適用するための最良の方法(私はユーザーをADセキュリティグループに割り当て、次にIsInRoleをチェックしたい)を調べる際の一環として、this questionを読んでいました。権限がなくなったユーザーが許可をもたない機能にアクセスできるようにします。逆に、アップグレードしたユーザーがWindowsアカウントからログアウトする必要があるか、WCFサービスを再起動しなければならない(最悪のシナリオ)こともあります。

クライアントとサーバーの両方にADセキュリティグループの変更がすぐに反映されるようにする最も簡単な方法は何ですか?

+0

あなたがプライマリとセカンダリがある場合はロールメンバーシップの変更は、例えば、.FOR(ユーザー新しいログオンを含む)に伝播するためにいくつかの時間がかかることはかなり正常ですドメインコントローラでは、変更が同期されるまでに時間がかかることがあり、ユーザーはセカンダリコントローラから古い権限を引き続き受け取ることができます。 –

+0

@Ladislav Mrnka私はいくらか遅れて生きなければならないだろうと思っていますが、特に(ユーザーのマシン上で)ローカルにキャッシュされたアクセス許可を使用しないようにしたいと考えています。私は、WCFサービスが、ユーザーを偽装している間にロールメンバーシップをチェックする独自のリクエストか、アイデンティティと共にクライアントからこれらの詳細を受け取るかどうかはわかりません。 – Franchesca

答えて

2

ADを照会する独自のメンバーシッププロバイダをいつでも実装できます。 これは簡単ですし、すべてのアクセス許可の評価が正確であるか、少なくとも正確に必要であることを確認します。

各評価のADサーバーにパフォーマンスが「高価」であることがわかっている場合は、クライアントに独自のキャッシュを作成して、定期的または必要に応じて強制的に更新することができます。 このキャッシュは、かなり高速にクエリできるアクセス許可のインデックス付きリスト(ディクショナリなど)と同じくらい簡単です。

ここでADと対話する方法についての良い記事です: http://www.codeproject.com/KB/system/everythingInAD.aspx

+0

これはかなり包括的な記事です、ありがとう!私はそれがクエリの遅さを確認するためにそれを試してみるだろうと思うが、クライアントの起動時に一度それをやって、私が最も心配していたセキュリティホールを差し込む必要があります。 – Franchesca

関連する問題