从Stringbeans3.1开始,其默认的验证服务是JAAS和LDAP。
默认的验证方案
Stringbeans默认使用J2EE架构标准用户验证方案。使用Servlet过滤器来验证用户/角色信息,这些信息保存在SB_USERS, SB_ROLES and SB_USER_ROLES表中。所有的表定义在$STRINGBEANS_HOME/WEB-INF/setup/sql文件夹下。你可以修改为不同的数据库或者表名,这一个可以参考数据库配置章节,验证所需要的表名称也可以进行修改,参看以下步骤。
1. 修改$STRINGBEANS_HOME/WEB-INF下的webservice.xml文件(查询列必须按照相同的顺序)。
a) 修改authByUserNameSQL和authByEmailSQL参数,以适应你自己的表名称。
SELECT <username column name>, <password column name> FROM <users table name> WHERE upper(<username column name>) = upper(?)
upper()也可以替换为lower(),如果你的数据库支持这个函数的话。这个主要用来在登录的时候登录名不区分大小写。
b) 修改rolesSQL参数以适应自己的定义要求
2. 此外,Stringbeans默认使用MD5进行密码加密。
1. 为了使用JAAS,需要在webservice.xml中对JAAS验证Web service进行配置。(需要删除或者注释掉其它验证服务)。配置内容如下:
修改必要的参数。loginAppName参数必须具体指定,登录应用名称必须和登录模块配置文件相符。
2. 创建一个登录模块配置文件。Stringbeans提供了一个登录模块配置文件,sb-jaas.login,在$STRINGBEANS_HOME/WEB-INF/目录下。这个配置文件指定了JAAS应用名称和使用的登录模块。下面这个例子显示登录应用是:“SbPortalLoginApp”,Stringbeans提供的登录模块是:“com.nabhinc.portal.spi.impl.jaas.DBLoginModule”。如果使用自己的模块实现,需要在这里进行定义。
SbPortalLoginApp {
com.nabhinc.portal.spi.impl.jaas.DBLoginModule required;
};
3. 修改java.security原文件。一般情况下该文件位于$JAVA_HOME/jre/lib/security文件夹下。
a) 增加login.config.url入口,并指向在第2步创建的登录配置文件。例如:
login.config.url.1=file:${tomcat-home}/webapps/stringbeans/WEB-INF/sb-jaas.login
注意:
使用真实路径替换${tomcat-home}
b) 为JAAS添加额外的授权,可以有两种方式:
i. 添加一个java.policy.url入口指向一个策略文件。Stringbeans提供了一个策略文件sb-jaas.policy,在$STRINGBEANS_HOME/WEB-INF/目录下,它为用户授权指定了必要的授权。java.security通常已经指定了默认的策略文件,比如java.policy。添加一个额外的策略文件的url入口,下面这个例子展示了如何添加第三方策略文件:
policy.url.3=file:${tomcat-home}/webapps/stringbeans/WEB-INF/sb-jaas.policy
ii. 为$JAVA_HOME/jre/lib/security下的java.policy添加额外的授权
grant codeBase “file:${tomcat.home}/webapps/stringbeans/WEB-INF/lib” {
permission javax.security.auth.AuthPermission “createLoginContext”;
permission javax.security.auth.AuthPermission “modifyPrincipals”;
permission javax.security.auth.AuthPermission “modifyPrivateCredentials”;
permission javax.security.auth.AuthPermission “doAsPrivileged”;
}
4. 下面这一步是可选的,对于使用Principal或者CallbackHandler类。
a) 你的CallbackHandler类必须实现Stringbeans的StringbeansCallbackHandler接口,并且指定上面提到的loginCallbackHandlerClass初始化参数。
b) 分别指定你的用户或角色Principal类到JAAS验证服务配置中的userPrincipalClasses和rolePrincipalClasses。使用逗号来分隔类的名字,如果需要多个类的话。
欢迎光临我的小站:http://www.saasrv.cn