シンプルバインディング

シンプルバインディング

objectClassuserPrincipalNameプロパティを使用してActive Directoryにログインできますuser[email protected]

OpenLDAPまた、サーバーインスタンスを設定し、ただ認証に使用しますdn。例:

"cn=somecn,cn=anothercn,ou=someou,dc=mydomain,dc=com"

OpenLDAP認証に別のフィールド(mail属性など)を使用するにはinetOrgPerson

でも、でももしそうならはい可能であれば、フィールドの一意性をどのように保証できますか? (userPrincipalNameこの分野ではADがそのような機能を提供すると思います)

ベストアンサー1

OpenLDAPは2つの認証方法(simpleおよびSASL)をサポートしていSASLますが、ldap-utilsおよび他の認証方法の基本的な方法ですldapsearch

DN を使用して認証すると、「単純バインディング」と呼ばれる操作が実行されます。

シンプルバインディング

このsimple方法には3つの動作モードがあります。

  • 匿名
  • 未確認
  • ユーザー/パスワードが確認されました。

たとえば、

# ldapwhoami -x
anonymous

または:

# ldapwhoami -x -D uid=rda,ou=people,dc=phys,dc=ethz,dc=ch -w secret1234
dn:uid=rda,ou=people,dc=phys,dc=ethz,dc=ch

SASL

OpenLDAPクライアントとサーバーは、SASL(Simple Authentication and Security Layer)フレームワークを介して認証できます。RFC4422。 SASL は複数の認証メカニズムをサポートします。 OpenLDAPの最も一般的なメカニズムEXTERNALGSSAPI

これ外部このメカニズムは、低レベルプロトコル(通常はTLSまたはUnix IPC)によって実行される認証を利用します。たとえば、Unix IPC をユーザーのルートとして使用する場合:

# ldapwhoami -Y EXTERNAL -H ldapi://
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth

認証されたユーザーはツリーのDNにマップされますcn=peercred,cn=external,cn=auth

これGSAPIこのメカニズムは通常Kerveros 5を参照しています。 Kerberos 5インフラストラクチャを展開した場合は、認証にKerberosサブジェクトを使用できます。

まず、KDCに対して認証し、TGTを取得します。

# kinit rda
Password for [email protected]: secret1234

その後、GSSAPIを使用してOpenLDAPに対して認証できます。

# ldapwhoami
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,cn=gssapi,cn=auth

サブジェクトは[email protected]ツリーのDNにマップされますcn=gssapi,cn=auth

olcAuthzRegexpこれで、次のように構成された正規表現を使用して、認証されたDNをデータベースの物理DNにマッピングできますcn=config

dn: cn=config
objectClass: olcGlobal
cn: config
olcAuthzRegexp: {0}uid=([^,/]*),cn=phys.ethz.ch,cn=gssapi,cn=auth uid=$1,ou=people,dc=phys,dc=ethz,dc=ch
...

このolcAuthzRegexp行は、ゾーン内のすべてのユーザープリンシパルを、その項目の下の属性と同じユーザー名を持つその項目PHYS.ETHZ.CHにマップします。posixAccountou=people,dc=phys,dc=ethz,dc=chuid

たとえば、次の posix エントリを使用します。

# ldapsearch uid=rda
dn: uid=rda,ou=people,dc=phys,dc=ethz,dc=ch
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux
uid: rda
krbPrincipalName: [email protected]
...

ldapwhoami提示されます:

# ldapwhoami
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
dn:uid=rda,ou=people,dc=phys,dc=ethz,dc=ch

使用されるマッピングはolcAuthzRegexpDITの一意のエントリと一致する必要があります。これは管理者または管理ソフトウェアによって保証されます。

おすすめ記事