9

実際には非常に簡単な質問ASP.NETメンバーシップ - どのRoleProviderを使用すると、User.IsInRole()はActiveDirectoryグループをチェックしますか?

現在、IISの匿名アクセスが無効になっていますが、ユーザーはWindowsログインを使用して自動的にログオンします。ただし、User.IsInRole( "Role name")を呼び出すとfalseが返されます。私はUser.Identity.Name()と "Role name"をダブルチェックし、trueを返します。

UPDATE
私はUser.IsInRoleを呼び出す必要があります( "ロール名")User.IsInRoleを呼んでいた(「DOMAIN \役割名:

私は現在、私のWeb.Configでこれを持っています")

しかし、<のメンバーシップ>のエントリがまったく必要かどうかはまだ分かりますか?

変更する必要はありますか? (とは全く必要<会員>エントリがある?

<authentication mode="Windows"> 
     <forms 
     name=".ADAuthCookie" 
     timeout="10" /> 
    </authentication> 


<membership defaultProvider="ADMembershipProvider"> 
    <providers> 
    <clear/> 
     <add 
     name="ADMembershipProvider" 
     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     connectionStringName="ADConnectionString" 
     connectionUsername="XXX\specialAdUser" 
     connectionPassword="xx" 
     /> 
    </providers> 
</membership> 

<roleManager enabled="true" defaultProvider="WindowsProvider"> 
    <providers> 
    <clear /> 
     <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

答えて

4

Windows認証を使用している場合、役割にドメイン(DOMAIN \ groupName)のプレフィックスを付けることを忘れない限り、IsInRoleは特別な設定なしで動作します。

さらに、独自の役割(punを意図したもの)を使用して、アプリケーションのカスタムロールにADを散らばらないSQLロールプロバイダなどのWindows認証を使用できます。

だから、プロバイダの設定はまったく必要ありません。

1

は、ここではメンバシッププロバイダが助けに行くのではありません。 ActiveDirectoryMembershipProviderは、フォーム認証に最も適しているようです(?)。

0

あなたがそこに必要な唯一のものは、(基本認証モード= 'Windowsの設定と一緒に)roleManagerグループ

+0

ロールはActivedirectoryで既に自動的にチェックされていませんか? – Ropstah

0

は箱の外にあるかなり確信して、直接Active Directoryを使用するには何の役割プロバイダはありません。 ASP.NETメンバーシップおよびロールシステムでロールテーブルを使用することも、承認マネージャ(AzMan)を使用することもできます。

CodeProjectには、Active Directoryに対して機能するロールプロバイダの実装を示した記事があります。完全なソースコードです。これはおそらく助けになるだろうか?

マルク・

関連する問題