Como dizer ao mod_auth_kerb para fazer seu trabalho apesar de não requerer "usuário válido"

11

Eu implementei uma autenticação SSO usando o mod_auth_kerb no Apache. Minha configuração é assim:

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>

Meu problema é que, sem require valid-user , mod_auth_kerb nem tenta autenticar o usuário e KERBEROS_USER acaba sendo (null) . Se eu adicionar require valid-user , o usuário será autenticado automaticamente se o navegador suportar, mas será mostrado um formulário de login restrito e feio (autenticação HTTP básica de ala) se o navegador não suportar negociação de Kerberos.

O que eu quero alcançar é que, se um usuário visitar /login/ , mod_auth_kerb tentará autenticar o usuário por meio do Kerberos Negotiate. Se isso falhar, um formulário de login HTML normal será apresentado ao usuário.

É possível configurar o Apache / mod_auth_kerb de tal maneira?

    
por Benjamin Wohlwend 22.11.2010 / 19:52

1 resposta

12

Eu fiz isso uma vez quando criei uma ferramenta simples de conexão única (para mesclar o Kerberos com o mod_auth_tkt). Foi necessário um pouco de chicanice:

  • / webauth / login foi protegido por uma diretiva require valid-user . Se alguém se conectasse com credenciais válidas do Kerberos, recebemos o nome de usuário de REMOTE_USER, fornecemos um cookie de autenticação e o enviamos pelo caminho.

  • A configuração do Apache usou uma solicitação ErrorDocument para redirecionar usuários não autenticados para / webauth / require_authentication:

    ErrorDocument 401 / webauth / require_authentication

    Isso executaria as seguintes ações:

    • Retorna um código de resultado 401 (normalmente, ErrorDocuments come seu código de resultado) e
    • Apresentar um formulário de login.
  • O formulário de login faria exatamente o que você esperava: apresentar um formulário de nome de usuário / senha, validar o mesmo e, em seguida, fornecer o cookie de autenticação.

por 22.11.2010 / 20:24