我正在尝试将自定义属性添加到我的openldap结构中,以便为每个用户存储角色,以便以后处理我的Spring Web应用程序用户。
只有3个角色:admin,manager和viewer。是否可以为此添加任何规则?
如何修复下面提到的错误?
# CUSTOM ATTRIBUTE
dn: cn=schema,cn=config
changeType: modify
add: attributeTypes
attributeTypes: (
2.25.128424792425578037463837247958458780603.1
NAME 'role'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
-
add: objectClasses
objectClasses: (
2.25.128424792425578037463837247958458780603.2
NAME 'rolePerson'
SUP person
AUXILIARY
MUST ( role )
)
# USERS
dn: ou=people,dc=ubuntu,dc=local
objectClass: organizationalUnit
ou: people
dn: cn=demo_admin,ou=people,dc=ubuntu,dc=local
objectClass: rolePerson
userPassword: {MD5}fe01ce2a7fbac8fafaed7c982a04e229
uid: demo
cn: demo
sn: demo
role: admin
ldapadd -x -W -D "cn=admin,dc=ubuntu,dc=local" -f roleuser.ldif
的输出:
modifying entry "cn=schema,cn=config"
ldap_modify: Invalid syntax (21)
additional info: attributeTypes: value #0 invalid per syntax
答案 0 :(得分:1)
使用群组可以更好地处理此类事情。如果您将它与参照完整性模块以及在用户对象上维护成员资格数据的模块相结合,它将以更标准的方式为您提供相同的好处。
答案 1 :(得分:0)
“分离问题”怎么样? LDAP应负责存储用户信息和支持身份验证,即决定用户是否确实是他/她声称的人。但是,角色因应用程序而异,因为它们授权已知用户执行各种活动。
让每个应用程序管理自己的一组角色并根据应用程序的需要将经过身份验证的用户映射到角色和活动/权限可能是个更好的主意。
设置这种方式您的LDAP可用于多个应用程序。如果要在LDAP中存储角色信息,则在编写新应用程序时需要另一个LDAP。或者你的LDAP会变得非常复杂。
如果您可以期望在一组应用程序中扮演相同角色的用户集合,则在LDAP中定义组当然很有用。然后,您的应用可以将其角色链接到用户组,而不仅仅是个人用户。但原则仍然是一样的。