# Kerberos

Authentication | Users | Password
--- | --- | ---
✔ |  |

## Presentation

Kerberos is a network authentication protocol used to authenticate users based on their desktop session.

LL::NG uses GSSAPI module to validate Kerberos ticket against a local keytab.

## LLNG Configuration

In Manager, go in `General Parameters` > `Authentication modules` and choose Kerberos for authentication. Then go to “Kerberos parameters” and configure the following parameters:

- keytab file (required): the Kerberos keytab file

- Use Ajax request: set to “enabled” if you want to use an Ajax request instead of a direct Kerberos attempt. This is required if you want to chain Kerberos in a combination

- Kerberos authentication level: default to 3

- Use Web Server Kerberos module: set to “enabled” to use the Web Server module (for example Apache mod_auth_kerb) instead of Perl Kerberos code to validate Kerberos ticket

- Remove domain in username: set to “enabled” to strip username value and remove the ‘@domain’.

- Allowed domains: if set, tickets will only be accepted if they come from one of the domains listed here. This is a space-separated list. This feature can be useful when using combination and cross-realm Kerberos trusts.

Attention

- Due to a perl GSSAPI issue, you may need to copy the keytab in /etc/krb5.keytab which is the default location hardcoded in the library

- As Kerberos ticket is passed inside Authorization header, you may need to set CGIPassAuth on in Apache (with old Apache, use `RewriteCond %{HTTP:Authorization}` followed by `RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]`)

### Kerberos configuration

The Kerberos configuration is quite complex. You can find some configuration tips on this page.

### Web Server Kerberos module

If you want to let Web Server Kerberos module validates the Kerberos ticket, set the according option to “enabled” and configure the portal virtual host to launch the module if “kerberos” GET parameter is in the request.

Example with Apache and mod_auth_kerb:

    <If "%{QUERY_STRING} =~ /kerberos=/">
      <IfModule auth_kerb_module>
        AuthType Kerberos
        KrbMethodNegotiate On
        KrbMethodK5Passwd Off
        KrbAuthRealms EXAMPLE.COM
        Krb5KeyTab /etc/lemonldap-ng/auth.keytab
        KrbVerifyKDC On
        KrbServiceName Any
        require valid-user
      </IfModule>
    </If>