web-dev-qa-db-ja.com

ASP.NET CoreでのWindows認証:手動ログインと自動イントラネットログインおよび使用可能なグループ

ログインしているユーザーを識別するためにローカルイントラネットWindows認証と連携するASP.NET Core 3.0アプリケーションがあります。標準のWindows認証動作を使用して、ユーザーのWindowsIdentityを問題なくキャプチャできます。

ただし、ユーザーが自動イントラネットブラウザーログイン(つまり、パスワードダイアログなし)を使用してブラウザーにログインする方法、またはブラウザーのパスワードダイアログボックスを使用して明示的にログインする方法に応じて、ユーザーのグループ

以下は、フィルタリングされたグループメンバーシップリスト(組み込みアカウントを除く)を含むユーザー情報をエコーバックするAPIリクエストです。左側は手動ログイン、右側は自動ログインです。

明示的なログインでは、ユーザーが所属するすべてのカスタムグループが正しく表示されます。ただし、自動ログインの場合、これらの同じグループは表示されません。

group differences for manual vs. auto login

また、サーバーのUserインスタンスとIdentityインスタンスを詳しく調べたところ、ユーザーのまったく同じSIDを参照しているため、グループメンバーシップに対して異なる結果が返されるのは奇妙に思われます。

同じアカウントが返されたときにグループリストが異なる理由はありますか?グループはローカルであるため、ドメインアクセスによる問題ではないことに注意してください。

注:ローカルホストでもローカルでテストしています。これをテストするために、ここでWindowsプロキシ設定を設定します。

Login configuration

チェックボックスをオフにすると、ログインする必要があります。それらをオンにして(とにかくChromiumブラウザーで)、ブラウザーのログインダイアログに資格情報を明示的に入力する必要があります。

9
Rick Strahl

ユーザーは、それらのグループに追加されてからコンピューターからログアウトしましたか?

リストされたグループは、ユーザーのログイントークンに保持されます。自動ログインではユーザーの既存のログイントークン(ユーザーがWindowsにログインしたときに作成されたもの)を送信するため、最後にログインしてから追加されたグループが含まれないことが考えられます。

ユーザー名とパスワードを手動で入力すると、新しいログインが実行され、ログイン時にすべてのグループの新しいトークンが取得されます。新しいグループがそこに現れるでしょう。

9
Gabriel Luci