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 entrada é necessária em tudo?

O que devo mudar? ( e é o entrada necessária em tudo? )

  <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>
Foi útil?

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.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top