LDAP:服务条目?

Jas*_*n S 3 ldap authorization apache-ds

(抱歉,如果我弄错了术语,我对 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]
    ...
Run Code Online (Sandbox Code Playgroud)

我还根据手册设置了一些基本的授权

一切都很好。

现在我有一个问题。我有另一台运行 Atlassian Crowd 的服务器需要访问此 LDAP,我想为该服务提供自己的 LDAP 授权条目,以划分访问权限。但这不是用户,而是服务

什么 objectClass 用于服务标识?

(作为 LDAP 的新手,您如何发现 groupOfUniqueNames 用于组,inetOrgPerson 用于用户条目?这似乎是常态。)

lar*_*sks 11

什么 objectClass 用于服务标识?

随心所欲,真的。为了让 Crowd(或其他任何东西)进行身份验证,您需要在树中的某处有一个专有名称,并且它需要有一个userPassword属性。

如果您查看您的架构(如果您使用 OpenLDAP,通常是 /etc/openldap/schema),您可以找到满足此条件的对象类。

最简单的可能是person对象类,其定义如下所示:

objectclass ( 2.5.6.6 NAME 'person'
        DESC 'RFC2256: a person'
        SUP top STRUCTURAL
        MUST ( sn $ cn )
        MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
Run Code Online (Sandbox Code Playgroud)

也就是说,它需要sncn属性,并且可以选择有一个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
Run Code Online (Sandbox Code Playgroud)

这假定您有一个serviceAccountsOU,您将在其中放置此类东西,这可能是一个好主意(因为这清楚地将服务帐户与用户帐户分开)。

Crowd 将验证为 cn=crowd,ou=serviceAccountrs,o=myOrganization,并且您需要配置您的 LDAP 目录以授予此 DN 适当的访问权限。


daf*_*aff 6

我将对象类account(结构)和simpleSecurityObject(辅助)用于服务帐户。这样,服务帐户就有了 auid和 a userPassword,这在进行身份验证和授权时都很好。

dn: uid=kerberos,ou=services,dc=example,dc=com
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
uid: kerberos
userPassword: {SSHA}xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)


小智 6

RFC 2256 / RFC 4519 建议objectClass: applicationProcess用于此类事情:

“applicationProcess”对象类定义是代表在计算机系统中执行的应用程序的条目的基础。

相关属性:cn(必需的), ,seeAlsoouldescription(可选)。

使用cn代替uidRDN 的优点之一是,如果您使用类似ldap_filter: (uid=%U)用户查找查询的方式,服务帐户不会被错误地匹配为用户帐户。