SSO sem emenda com Kerberos, IE, Firefox, LDAP Active Directory

6
Alias /students /var/www/students

<Location /students>
  KrbServiceName HTTP
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  KrbSaveCredentials off
  KrbAuthRealms DOMAIN.LOCAL
  Krb5KeyTab /etc/httpd/keytab
  KrbAuthoritative off

  AuthType Kerberos
  AuthName "Please Login"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?userPrincipalName?sub?(objectClass=*)"
  AuthLDAPBindDN "CN=ldapsearchuser,CN=Users,DC=domain,DC=local"
  AuthLDAPBindPassword ldapsearchuserpass
  require ldap-group CN=Students,CN=Users,DC=domain,DC=local
  require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
</Location>

Isso permite que todos os usuários que sejam membros dos Grupos de Alunos / Equipe do AD acessem páginas por trás do link sem precisar especificar credenciais de login, desde que o IE / Firefox estão configurados corretamente.

O userPrincipalName foi usado em vez de sAMAccountName porque o módulo kerberos estava passando o nome de usuário @ REALM para o módulo ldap.

Agora tenho o problema em que, se alguém não estiver autorizado, será apresentado a você:

Autorização necessária Este servidor não pôde verificar se você está autorizado a acessar o documento solicitado. Você forneceu as credenciais incorretas (por exemplo, senha incorreta) ou seu navegador não entende como fornecer as credenciais necessárias.

Alguém sabe como fazer com que ele abra uma caixa de diálogo de nome de usuário / senha para que eles possam tentar credenciais alternativas? Depois de obter autorização sem sucesso, a única maneira de obter credenciais é limpar meu cache. Se eu estiver logado no PC como um usuário autenticado, mas não estiver autorizado para este recurso, não tenho como creditar credenciais alternativas (o que pode ser bom).

    
por Brad 28.09.2009 / 19:36

1 resposta

3

Nós enfrentamos um problema muito semelhante. Finalmente, concluímos que, embora o suporte ao logon integrado do NTLM no Internet Explorer e no Firefox seja conveniente, há muitos casos de exceção que resultam em uma falha na qual mudamos nossa abordagem.

O problema com a autenticação integrada é que ele funciona apenas quando o nome de usuário e a senha atualmente conectados ainda estão corretos e autorizados para acessar o recurso.

Existem mais circunstâncias em que não funciona:

  • Se o nome de usuário e / ou senha estiverem incorretos, não é possível usar credenciais alternativas como você declarou acima
  • Se a conta e / ou senha expirarem ou se a senha estiver incorreta, o navegador retornará uma mensagem "não autorizada" sem a menor ideia de qual dos problemas ela é

A abordagem que padronizamos foi a de colocar uma página web de logon de nome de usuário / senha (na frente do aplicativo) que aceita as credenciais. Quando as credenciais são enviadas, o aplicativo por sua vez validaria essas credenciais no diretório e responderia de acordo (em um mundo .NET você poderia usar a Autenticação de Formulários link para forçar o acesso ao aplicativo por meio dessa página de login). Como o aplicativo está fazendo a validação de credencial, você obtém informações valiosas sobre a natureza da falha de login. Além disso, mesmo se o login for bem-sucedido, mas houver informações relevantes a serem exibidas ao usuário, por exemplo, sua senha expirará em breve, etc., isso oferece uma oportunidade para fazê-lo.

ATUALIZAÇÃO: Esqueci de mencionar que, se você adotar essa abordagem, precisará permitir o acesso anônimo à raiz do aplicativo IIS. Isso permitirá o acesso à página da web de login sem primeiro tentar a autenticação automática do NTLM. Cabe a você se você deixa a autenticação NTLM ativada; talvez você queira que alguns clientes ainda façam login automaticamente.

    
por 22.10.2009 / 05:14