ASP.NET MVC4 Razor アプリケーションを構築しています。Windows 認証を使用して、さまざまな機能へのアクセスを特定の Windows グループのメンバーであるユーザーに制限したいと考えています。ドメインに参加していない Windows 8 VM (MYVM という名前) で開発していますが、アプリはドメインに参加している Win2008 サーバーにデプロイされます。
次のように web.config を構成しました。
<authorization>
<deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
認証は機能します - @User.Identity.Name は "MYVM\MYUSERNAME" を表示します
ただし、いくつかの Windows グループにアカウントを追加しましたが、@User.IsInRole("GROUP_NAME") を呼び出すと常に false が返されます。
これは、開発用 VM がドメインに参加していないためだと思われます。ASP.NET MVC の Windows 認証がワークグループの役割とドメインの役割で機能するかどうかは誰にもわかりませんか?
編集
役割を列挙できることがわかりました-これにより、次のことが得られます。
?System.Web.Security.Roles.GetRolesForUser()
{string[9]}
[0]: "None"
[1]: "CONSOLE LOGON"
[2]: "Everyone"
[3]: "NT AUTHORITY\\This Organization"
[4]: "NT AUTHORITY\\INTERACTIVE"
[5]: "NT AUTHORITY\\Authenticated Users"
[6]: "NT AUTHORITY\\NTLM Authentication"
[7]: "LOCAL"
[8]: "BUILTIN\\Users"
しかし、[コンピューターの管理] 画面で自分のグループ メンバーシップを見ると、次のグループに属しています。
Administrators
Users
GROUP_NAME
@User.IsInRole("None") は true を返します。@User.IsInRole("GROUP_NAME") は false を返します。
GetRolesForUser はどこからグループ リストを取得していますか?