Apache mod_auth_kerb und LDAP-Benutzergruppen

12

Ich habe überlegt, mod_auth_kerbauf unseren internen Webservern SSO zu aktivieren. Das offensichtliche Problem, das ich sehe, ist, dass es sich um einen Alles-oder-Nichts-Ansatz handelt, bei dem entweder alle Domain-Benutzer auf eine Site zugreifen können oder nicht.

Ist es möglich, mod_auth_kerbmit etwas zu kombinieren mod_authnz_ldap, um die Gruppenzugehörigkeit in einer bestimmten Gruppe in LDAP zu überprüfen? Ich vermute, die KrbAuthoritativeOption hätte etwas damit zu tun?

Soweit ich weiß, legt das Modul den Benutzernamen username@REALMnach der Authentifizierung fest, aber natürlich werden die Benutzer im Verzeichnis nur als Benutzername gespeichert. Darüber hinaus haben einige interne Websites, die wir betreiben, wie beispielsweise trac, bereits ein Benutzerprofil, das mit jedem Benutzernamen verknüpft ist. Gibt es eine Möglichkeit, dies zu beheben, indem Sie das Realm-Bit nach der Authentifizierung möglicherweise irgendwie entfernen?

Kamil Kisiel
quelle
Nur eine Frage zur Implementierung. Verwenden Sie ein Windows ADS für den Kerberos-Bereich oder eine andere Implementierung?
Jeremy Bouse
Apples OpenDirectory mit MIT Kerberos v5
Kamil Kisiel
Okay ... Ich habe noch nie mit Apples OpenDirectory gearbeitet. Ich konnte Apache dazu bringen, sich mit NTLM gegen Windows ADS zu authentifizieren, indem ich die Anmeldeinformationen der Arbeitsstationen verwendete und sie dann auf bestimmte Gruppen beschränkte.
Jeremy Bouse
Ohne den Realm vom Benutzernamen zu entfernen, können Sie ein alternatives Attribut in der LDAP-Abfrage verwenden, um nach einer Benutzerentität zu suchen, z. B. das Attribut "userPrincipalName" in Ms ActiveDirectory.
Yves Martin

Antworten:

13

In mod_auth_kerb 5.4 ist es nun möglich, den Realm mit der folgenden config-Direktive von REMOTE_USER zu entfernen:

KrbLocalUserMapping On

styro
quelle
Wow, es sieht so aus, als ob dies im Jahr 2008 veröffentlicht wurde, aber keine Erwähnung (der Version oder des Parameters) auf ihrer Website.
Kamil Kisiel
7

Es ist der springende Punkt der authn / authz-Trennung in 2.2, dass Sie sich mit einem Mechanismus authentifizieren und mit einem anderen autorisieren können. Bei der Authentifizierung erhalten Sie die Einstellung REMOTE_USER, für die Sie dann authz_ldap verwenden können. Außerdem sucht authn_ldap dann nach einem Benutzer (konvertiert den REMOTE_USER in einen DN, wenn er gefunden wird, und verwendet dabei Suchkriterien, die Sie angeben müssen, z. B. die Suche nach CN). Wenn ein DN gefunden wurde, können Sie Anforderungen für das LDAP-Objekt festlegen. Wenn sich beispielsweise alle Benutzer, die auf eine Ressource zugreifen, in derselben Organisationseinheit befinden müssen, geben Sie an

erfordern ldap-dn ou = Manager, o = Unternehmen

Martin v. Löwis
quelle
Ist es möglich, die Variable REMOTE_USER zu ändern, bevor sie an die Berechtigungsstufe übergeben wird? Um beispielsweise den REALM-Teil des Kerberos-Benutzernamens für die Suche in einer LDAP-Datenbank zu entfernen?
Kamil Kisiel
Nicht durch Konfiguration. Im Quellcode des Apache-Moduls ist dies jedoch relativ einfach. Suchen Sie nach Zuordnungen zu request-> user und passen Sie diese an. Erstellen Sie dann das Modul mit apxs2 -c neu. OTOH, es ist möglicherweise einfacher, die Kerberos-Namen in LDAP unter einem separaten Attribut abzulegen und den Benutzer vom LDAP-Modul nach diesem Attribut durchsuchen zu lassen.
Martin v. Löwis
2

Debian Stable wird jetzt mit Version 5.4 von mod_auth_kerb ausgeliefert .

Wenn Sie mit einer älteren Version nicht weiterkommen , wird auf dieser Seite erläutert, wie mod_map_user in Kombination mit mod_auth_kerb und mod_authnz_ldap verwendet werden kann.

jcharaoui
quelle