ASP.NET Membership - Qual RoleProvider de usar para User.IsInRole () verifica ActiveDirectory grupos?
-
21-08-2019 - |
Pergunta
Uma pergunta muito simples, na verdade:
Actualmente tenho acesso IIS anónimo desactivado, os usuários são automaticamente conectado usando seu login do Windows. No entanto chamando User.IsInRole ( "Nome da função") retorna falso. Eu verifiquei User.Identity.Name () eo "Nome da função" e ele deve retornar verdadeiro.
Actualmente tenho isso no meu Web.Config:
Atualização
Eu estava chamando User.IsInRole ( "Nome da função"), onde eu deveria chamar User.IsInRole ( "DOMÍNIO \ Nome da função")
No entanto, eu ainda gostaria de saber se o
O que devo mudar? ( e é o
<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>
Solução
Se você usa o Windows autenticação IsInRole vai trabalhar com nenhuma configuração extra, contanto que você lembre-se de prefixar o papel com o domínio, ou seja, DOMÍNIO \ groupName.
Além disso, você pode papel (trocadilho intencional) seu próprio e usar o Windows auth contra, por exemplo, um provedor de SQL Role, onde você não quer que seu AD repleta de funções personalizadas para a sua aplicação.
Então, não, você não precisa a configuração do provedor de todo.
Outras dicas
O provedor de associação aqui não vai ajudar. O ActiveDirectoryMembershipProvider parece melhor (apenas?) Em forma com autenticação de formulários.
BlogEngine.NET tem um Ativo provedor de função Diretório .
certeza que a única coisa que você precisa lá é o grupo roleManager (juntamente com o modo de autenticação base = configuração 'janelas')
Fora da caixa, não há provedor de função para usar o Active Directory diretamente. Você pode usar a tabela de papel no ASP.NET Membership-e role-sistema, ou você pode usar o Gerenciador de Autorização (AzMan).
Há um artigo sobre CodeProject que mostra a implementação de um provedor de função que trabalha contra o Active Directory - com código fonte completo. Talvez isso ajude?
Marc