(用語が間違っている場合はお詫びします。LDAPはかなり新しいです)
次の構造でローカルLDAPサーバー(Apache Directory Server)をセットアップしています。
o={my organization name} [objectClass=organization]
ou=groups [objectClass=organizationalUnit]
cn=someGroup [objectClass=groupOfUniqueNames]
cn=otherGroup [objectClass=groupOfUniqueNames]
...
ou=users [objectClass=organizationalUnit]
cn=user1 [objectClass=inetOrgPerson]
cn=user2 [objectClass=inetOrgPerson]
cn=user3 [objectClass=inetOrgPerson]
...
また、いくつか設定しました マニュアルによる基本認証 。
すべてがうまく機能します。
今、私は問題を抱えています。このLDAPへのアクセスを必要とするAtlassianCrowdを実行している別のサーバーがあり、アクセス権を分割するために、そのサービスに独自のLDAP認証エントリを付与したいと思います。しかし、それはユーザーではなく、サービスです。
サービスIDに使用されるobjectClassは何ですか?
(LDAPの初心者として、groupOfUniqueNamesがグループに使用され、inetOrgPersonがユーザーエントリに使用されていることをどのように確認しますか?それは標準のようです。)
サービスIDに使用されるobjectClassは何ですか?
あなたが望むものは何でも、本当に。 Crowd(またはその他のもの)が認証されるためには、ツリーのどこかに識別名が必要であり、userPassword
属性が必要です。
スキーマを見ると(OpenLDAPを使用している場合、通常は/etc/openldap/schema
です)、この条件を満たすobjectClassesを見つけることができます。
最も単純なのはおそらくperson
オブジェクトクラスであり、その定義は次のようになります。
objectclass ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person'
SUP top STRUCTURAL
MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
つまり、sn
属性とcn
属性が必要であり、オプションでuserPassword
属性(およびその他のいくつか)を持つことができます。したがって、次のようなエントリを追加する可能性があります。
dn: cn=crowd,ou=serviceAccounts, o=myOrganization
objectClass: person
cn: crowd
sn: Service Account
description: Service account for Crowd access to LDAP
userPassword: {SSHA}MZO/eoDUg/nFJDAZBvawCRYIxSeQUm3U
これは、この種のものを配置するserviceAccounts
OUがあることを前提としています。これは、おそらく良い考えです(これにより、サービスアカウントがユーザーアカウントから明確に分離されるため)。
Crowdはcn=crowd,ou=serviceAccountrs,o=myOrganization
として認証され、このDNに適切なアクセス許可を与えるようにLDAPディレクトリを構成する必要があります。
サービスアカウントには、オブジェクトクラスaccount
(構造)とsimpleSecurityObject
(補助)を使用します。このように、サービスアカウントにはuid
とuserPassword
があり、どちらも認証と承認を行うときに便利です。
dn: uid=kerberos,ou=services,dc=example,dc=com
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
uid: kerberos
userPassword: {SSHA}xxxxxxxxxx
RFC 2256/RFC 4519は、この種のことに対して_objectClass: applicationProcess
_を推奨しています。
'applicationProcess'オブジェクトクラス定義は、コンピュータシステムで実行されているアプリケーションを表すエントリの基礎です。
関連する属性:cn
(必須)、seeAlso
、ou
、l
、およびdescription
(オプション)。
RDNにcn
の代わりにuid
を使用する利点の1つは、ldap_filter: (uid=%U)
のようなものを使用している場合、サービスアカウントがユーザーアカウントとして誤って照合されないことです。ユーザールックアップクエリ。