Apusic 应用服务器内置了三种安全提供程序实现,包含文件、JDBC以及LDAP存储,以方便用户根据自身业务进行选择。要使用这些安全提供 程序,首先需要配置%DOMAIN_HOME%/config/security.xml,如何配置以下将逐个介绍。
<realm> <realm-name>default</realm-name> <provider-type>FileStore</provider-type> </realm>
JDBC配置属性说明:
datasource-jndi-name: 连接用户与组信息所在数据库的数据源的JNDI名
user-table-name: 用户信息表名
usernameField: 用户字段名
passwordField: 密码字段名
needEncode: 指定密码是否需要编码
encoder-class-name: 用于对密码进行编码的全类名,该类必须实现接口: com.apusic.security.realm.Encoder
query-by-groupname-sql: 根据组名查询其包含用户的SQL语句
示例配置:
<realm> <realm-name>default</realm-name> <provider-type>RDBMS</provider-type> <attribute name="datasource-jndi-name" value="jdbc/mssqlserver" /> <attribute name="usernameField" value="uname" /> <attribute name="passwordField" value="pwd" /> <attribute name="user-table-name" value="userbase" /> <attribute name="query-by-groupname-sql" value="select uname from groupbase where gname=?" /> </realm>
LDAP配置属性说明:
host: LDAP服务器所在主机名或IP
port: LDAP服务器监听的端口号
rootDN: 登录LDAP服务器的根DN
password: 登录LDAP服务器的根DN对应的密码
searchBaseDN: 搜索用户的基DN
groupBaseDN: 搜索组的基DN
userField: 用户字段名
passwordField: 密码字段名
memberField: 组项中定义一个用户成员的字段名,此字段值对应用户的DN
注: 组字段固定名称为cn
假设有一个LDAP服务器,其中定义了一个名为 manager的组,该组包含用户andy及jacky。
dn: cn=manager,ou=groups,dc=example,dc=com objectClass: groupOfNames objectClass: top cn: manager member: uid=andy,ou=DeptA,dc=example,dc=com member: uid=jacky,ou=DeptA,dc=example,dc=com
配置:
<realm> <realm-name>ldap</realm-name> <provider-type>ldap</provider-type> <attribute name="host" value="localhost" /> <attribute name="port" value="10389" /> <attribute name="rootDN" value="uid=admin,ou=system" /> <attribute name="password" value="secret" /> <attribute name="searchBaseDN" value="ou=DeptA,dc=example,dc=com" /> <attribute name="userField" value="uid" /> <attribute name="passwordField" value="userpassword" /> <attribute name="groupBaseDN" value="ou=groups,dc=example,dc=com" /> <attribute name="memberField" value="member" /> </realm>