私は.NET Windows認証を使用し、ユーザーのグループメンバーシップを利用してWebサイトのさまざまな領域にユーザーを承認するWebアプリケーションを作成しています。現在、私はISドメインの一部ではなく、ADを使用していない開発用マシンを使用しています。代わりに、ローカルユーザーグループを使用しています。通常、これはそのまま正常に機能しています。
ただし、アプリケーションをテストするときは、ユーザーアカウントでロールを追加および削除して、機能していることを確認する必要があります。ロールを追加しても、Windowsからログアウトして再度ログインするまで、ロールが反映されないようです。
ログオフせずにグループメンバーシップを強制的に更新できますか?
taskkill.exe /F /IM Explorer.exe
runas /user:%USERDOMAIN%\%USERNAME% Explorer.exe
これにより、Explorerが強制終了され、ユーザーアカウントで再開されます...パスワードの入力を求めるプロンプトが表示され、新しいトークンが取得され、メンバーシップが更新されます。
これをシステム全体で実行することは困難ですが、個々の実行可能ファイルでは、プロセスを強制終了し、ユーザーの資格情報で再起動することで可能です。
ログオンすると、グループメンバーシップなどを反映したトークンを受け取ります。このトークンを更新する唯一の方法は、ログインすることです。
Webサイトへのログインを許可するために、ADのユーザーのメンバーシップに依存するWebサイトの同様の状況がありました。考慮すべきことの1つは、Webサーバーに提供された資格情報を使用してADサーバーへの認証/クエリを実行させることです。 WebサーバーがADにアクセスでき、ユーザーにグループXYZに属しているかどうかをサーバーに照会するだけの場合、新しいリストを取得するためにログオン/ログオフを必要とするユーザーのログイントークンからではなく、ADから直接リストを取得します適切な特権を持つトークン。
説明から、あなたの開発マシンには現在そのアクセス権がないことを知っていますが、デプロイするときにこの機能が必要なことを意味しているようです。
トークンに依存している場合は、ログオフしてから再度ログインする必要があります。
コマンドラインから完全にこれを行うスクリプト化された方法があります。 klist を使用できます。
klist purge