コマンドライン経由でLDAPで認証するにはどうすればよいですか?


35

LDAPサーバーはSolarisでホストされます。クライアントはCentOSです。LDAPを介したOpenLDAP / NSLCD / SSH認証は正常に機能しますが、ldapsearchコマンドを使用してLDAPの問題をデバッグすることはできません。

[root@tst-01 ~]# ldapsearch
SASL/EXTERNAL authentication started
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
        additional info: SASL(-4): no mechanism available:
[root@tst-01 ~]# cat /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://ldap1.tst.domain.tld ldap://ldap2.tst.domain.tld
BASE dc=tst,dc=domain,dc=tld
[root@tst-01 ~]# ls -al /etc/openldap/cacerts
total 12
drwxr-xr-x. 2 root root 4096 Jun  6 10:31 .
drwxr-xr-x. 3 root root 4096 Jun 10 10:12 ..
-rw-r--r--. 1 root root  895 Jun  6 10:01 cacert.pem
lrwxrwxrwx. 1 root root   10 Jun  6 10:31 cf848aa4.0 -> cacert.pem
[root@tst-01 ~]#

/etc/openldap/cacerts/cacert.pemをパラメーターとして指定して、ldapsearchを介して証明書による認証を試みましたが、この証明書を認証に受け入れませんでした。

回答:


60

SASLをオフにして、「-x」オプションを指定した単純な認証を使用することもできます。たとえば、特定のユーザーを見つけるための検索

ldapsearch -x -D "uid=search-user,ou=People,dc=example,dc=com" \
           -W -H ldap://ldap.example.com -b "ou=People,dc=example,dc=com" \
           -s sub 'uid=test-user'

「テストユーザー」を見つける

  • -D-バインドユーザー「search-user」を使用
  • -W-パスワードのプロンプト
  • -H -LDAPサーバーのURL。この場合の非SSL。SSLには「ldaps://」を使用します
  • -b-検索ベース
  • -s -検索範囲-すなわちベースツリーのベースのため、1レベル上のダウンとのためのサブツリーダウン再帰的に検索のため(一方を取ることができます)
  • 最後に、非オプション引数としての検索フィルター。この場合、「test-user」のuidを検索します

2
Fredにはそれが正しくありますが、検索ベースまたはホストを指定する必要がない場合は例外です。/etc/openldap/ldap.confつまり、次のように動作するはずです:ldapsearch -x -D "<bind dn>" -W <query >
ジェイソンタン

LDAP

「ユーザー名」の意味によって異なります。バインドDN(実際にクエリを実行するための認証用)は、-D引数で指定されます。この例のユーザーレコードの実際の検索は、最後の引数としてフィルターで指定されます。
フレッドクラウゼン

1
どうもありがとう!あなたは私の命を救った:)
Marslo

6

私は同じ質問をするようです:https : //stackoverflow.com/questions/27571558/how-was-authentication-built-on-ldap

http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/を参照してください。

  • LDAPサーバーへの接続を取得します。
  • アプリケーションユーザーとしてバインドします。
  • 認証されるユーザーのDN(識別名)を検索します。
  • 手順3のDNを使用して認証されるユーザーとしてバインドします。

(コマンドラインでの実験)として要約できます:

$ ldapsearch -x -h ldap.company.com -s sub -b 'dc=europe,dc=com' "uid=XYZ"
....
dn: uid=XYZ,dc=sales,dc=europe,dc=com
...
$ ldapsearch -W -h ldap.company.com -D 'uid=XYZ,dc=sales,dc=europe,dc=com' \
    -s sub -b 'dc=europe,dc=com' "uid=XYZ"

1

完全なバインドDNがわからない場合は、通常のユーザー名またはメールを使用して -U

ldapsearch -v -h contoso.com -U turiya.gouw@contoso.com -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'

0

私たちは、使用しているFreeIPAの/ IDMを、私は、以下のものを使用して、このに対して認証することができました:

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=<my username>
説明
  • これにより、周辺のすべての詳細が返されます uid=<my username>
  • uid=<my username> フィルタです(RFC 4515準拠のLDAP検索フィルタ)
  • uid=<my username>実行するクエリ/フィルタであり、
  • o ldif-wrap=no 結果のラッピングを無効にします
  • -Wldapsearchバインド識別名のパスワードの照会にuid=<my username>,cn=users,cn=accounts,dc=somedcdom,dc=com
  • このユーザーのパスワードの入力を求められると、プロンプトは次のようになります。

    Enter LDAP Password:
    
レファレンス

ldapsearchマンページおよびCLIヘルプからの参照:

   -D binddn
          Use the Distinguished Name binddn to bind to the LDAP directory.  
          For SASL binds, the server is expected to ignore this value.

   -b searchbase
          Use searchbase as the starting point for the search instead of the 
          default.

   -W     Prompt for simple authentication.  This is used instead of specifying 
          the password on the command line.

  -o <opt>[=<optparam] general options
             nettimeout=<timeout> (in seconds, or "none" or "max")
             ldif-wrap=<width> (in columns, or "no" for no wrapping)

完全な例

$ ldapsearch -h idm-01a.somednsdom.com \
    -D 'uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com' \
    -o ldif-wrap=no \
    -b 'cn=accounts,dc=somedcdom,dc=com' \
    -W uid=joeuser

# extended LDIF
#
# LDAPv3
# base <cn=accounts,dc=somedcdom,dc=com> with scope subtree
# filter: uid=joeuser
# requesting: ALL
#

# joeuser, users, accounts, somedcdom.com
dn: uid=joeuser,cn=users,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=sysadmin,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=eng-systems,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=hbac,dc=somedcdom,dc=com
memberOf: cn=admins,cn=groups,cn=accounts,dc=somedcdom,dc=com
memberOf: ipaUniqueID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX,cn=sudorules,cn=sudo,dc=somedcdom,dc=com
memberOf: cn=User Administrator,cn=roles,cn=accounts,dc=somedcdom,dc=com
memberOf: cn=User Administrators,cn=privileges,cn=pbac,dc=somedcdom,dc=com
memberOf: cn=System: Add User to default group,cn=permissions,cn=pbac,dc=somedcdom,dc=com
...
...
krbLoginFailedCount: 0
krbLastFailedAuth: 20190320223946Z
loginShell: /bin/bash
krbExtraData:: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
krbPasswordExpiration: 20190829144625Z
krbLastPwdChange: 20190302144625Z
krbLastAdminUnlock: 20190111080021Z
ipaSshPubKey: ssh-rsa A....XXXXXXXXXXXX...jelByox0PM5Q== joeuser@somednsdom.com
mepManagedEntry: cn=joeuser,cn=groups,cn=accounts,dc=somedcdom,dc=com
displayName: Joe User
uid: joeuser
krbCanonicalName: joeuser@SOMEDCDOM.COM
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
objectClass: inetuser
objectClass: posixaccount
objectClass: krbprincipalaux
objectClass: krbticketpolicyaux
objectClass: ipaobject
objectClass: ipasshuser
objectClass: ipaSshGroupOfPubKeys
objectClass: mepOriginEntry
initials: JU
gecos: Joe User
sn: Mingolelli
homeDirectory: /home/joeuser
mail: joeuser@somednsdom.com
krbPrincipalName: joeuser@SOMEDCDOM.COM
givenName: Joe
cn: Joe User
ipaUniqueID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
uidNumber: 900000000
gidNumber: 900000000
krbPwdPolicyReference: cn=admins,cn=SOMEDCDOM.COM,cn=kerberos,dc=somedcdom,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.