本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7603548
建立时间:2006年5月29日




[J2SE]JAAS:认证篇[续]
软件技术

lhwork 发表于 2006/8/18 16:51:52

JAAS:认证篇[续]步骤二: 实现Principal.Principal干什么,我觉得就是和Subject关联的属性数据,如果你把User当作subject,Principal可以存放帐号,密码以及其他的Email等. 必须实现该方法. public String getName() {    return this.name; } 我这里简单写了一个Principal. package cn.com.tiansky.auth.Principal; import java.io.Serializable;import java.security.Principal; /** * @author tiansky * @version 1.0 * 实现Principal接口的对象,可以存放于subject的Principal集合中。 * */public class Operator implements Principal,Serializable{  /**  * serialVersionUID  */ private static final long serialVersionUID = 1789L; /**  * name is for Principal标识  */ private String name; private String id; private String pwd; private String email; private String content; private String loginname;  public String getLoginname() {  return loginname; } public void setLoginname(String loginname) {  this.loginname = loginname; } /**  *   */ public Operator() {   } /**  * @param id  */ public Operator(String id) {  this.id =id; } public String getName() {    return this.name; }  public void setName(String name) {  this.name = name; }  public String getContent() {  return content; }  public void setContent(String content) {  this.content = content; }  public String getEmail() {  return email; }  public void setEmail(String email) {  this.email = email; }  public String getId() {  return id; }  public void setId(String id) {  this.id = id; }  public String getPwd() {  return pwd; }  public void setPwd(String pwd) {  this.pwd = pwd; } } 步骤三: 配置文件C:\tomcat4\conf\login.config Sample {   cn.com.tiansky.auth.LoginModule.MyJAASModule required debug=true              mark="MD5"             debug=true              check=true             jndi="jdbc/EmployeeDB";}; 步骤四:配置Server.xml <Context path="/myjaas" docBase="D:/CAS src/myjaas" debug="0" reloadable="true" crossContext="true">   <Realm className="org.apache.catalina.realm.JAASRealm"    appName="Sample"    userClassNames="cn.com.tiansky.auth.Principal.Operator"   roleClassNames="cn.com.tiansky.auth.Principal.Role"   debug="99">         </Realm>            <Resource name="jdbc/EmployeeDB" auth="Container"              type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"              url="jdbc:oracle:thin:@192.168.3.124:1521:cudms"              username="report" password="report" maxActive="20" maxIdle="10"              maxWait="-1"/> </Context> 注意:userClassNames,roleClassNames.你自己的Principal,一定要在这里注册. 步骤五:   配置Djava.security.auth.login.config 在 tomcat 启动脚本中加入 JAVA_OPTS=-Djava.security.auth.login.config==C:\tomcat4\conf\login.config   步骤四中的appName="Sample" 应用与配置文件login.config 保持一致. 步骤六:    你自己再搞 <security-constraint>    <web-resource-collection>      <web-resource-name>User Protected</web-resource-name>      <url-pattern>/protected/*</url-pattern>      <url-pattern>/protected.jsp</url-pattern>    </web-resource-collection>    <auth-constraint>       <role-name>user</role-name>    </auth-constraint>  </security-constraint>  <login-config>    <auth-method>BASIC</auth-method>    <realm-name>MyJAASRealm</realm-name>  </login-config> 笔者采用From校验方式,如下 <?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>yutou1.0</display-name>  <filter>  <filter-name>Set Character Encoding</filter-name>  <filter-class>my.SetCharacterEncodingFilter</filter-class>  <init-param>   <param-name>encoding</param-name>   <param-value>utf-8</param-value>  </init-param>  <init-param>   <param-name>ignore</param-name>   <param-value>true</param-value>  </init-param> </filter> <filter-mapping>  <filter-name>Set Character Encoding</filter-name>  <servlet-name>*</servlet-name> </filter-mapping>  <session-config>   <session-timeout>30</session-timeout> </session-config> <security-constraint>    <web-resource-collection>      <web-resource-name>User Protected</web-resource-name>      <url-pattern>/protected/*</url-pattern>      <url-pattern>/protected.jsp</url-pattern>    </web-resource-collection>    <auth-constraint>       <role-name>*</role-name>    </auth-constraint>  </security-constraint>  <!--<login-config>    <auth-method>BASIC</auth-method>    <realm-name>MyJAASRealm</realm-name>  </login-config>-->  <!-- Default login configuration uses form-based authentication -->  <login-config>      <auth-method>FORM</auth-method>      <realm-name>Anonymous Form-Based Authentication Area</realm-name>      <form-login-config>        <form-login-page>/protected/login.jsp</form-login-page>        <form-error-page>/protected/error.jsp</form-error-page>      </form-login-config>  </login-config>           <!-- Security roles referenced by this web application -->  <security-role>     <role-name>*</role-name>  </security-role><resource-ref>  <description>    Resource reference to a factory for java.sql.Connection    instances that may be used for talking to a particular    database that is configured in the server.xml file.  </description>  <res-ref-name>    jdbc/EmployeeDB  </res-ref-name>  <res-type>    javax.sql.DataSource  </res-type>  <res-auth>    Container  </res-auth></resource-ref>  <!-- The Usual Welcome File List -->  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list> <error-page>  <exception-type>org.springframework.context.ApplicationContextException</exception-type>  <location>/WEB-INF/view/jsp/brokenContext.jsp</location> </error-page>  <error-page>  <exception-type>java.lang.Exception</exception-type>  <location>/WEB-INF/view/jsp/errors.jsp</location> </error-page>  <error-page>  <error-code>404</error-code>  <location>/</location> </error-page></web-app> 打完收工:  注意事项,关于自己的loginModule,Principal等类,最好放在Apache/Common/classes下面,否则可能会找不到,猜想和容器的类装载策略有关.                                                                                                              [待续!]


阅读全文(3584) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144765767 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号