KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jdon > security > ejb > LoginClientUtil


1 /**
2  * Copyright 2003-2006 the original author or authors.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6
7        http://www.apache.org/licenses/LICENSE-2.0
8
9   * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */

15
16 package com.jdon.security.ejb;
17
18 import com.jdon.util.Debug;
19 import javax.security.auth.Subject JavaDoc;
20 import java.security.Principal JavaDoc;
21 import javax.security.auth.login.LoginContext JavaDoc;
22 import javax.security.auth.callback.CallbackHandler JavaDoc;
23
24 import org.jboss.security.SimplePrincipal;
25 import org.jboss.security.auth.callback.SecurityAssociationHandler;
26
27 /**
28  * please config Login.Module.Name in web.xml
29  *
30  * 该方法loginå?ªå¯¹EJB访问有效,login方法实行å?Žï¼Œå?¯ä»¥è®¿é—®è¢«æŽˆæ?ƒçš„EJB了。
31  * 该类适å?ˆè‚¥å®¢æˆ·ç«¯ç­‰é€šè¿‡RMI对EJB实行访问。
32  * 1. 在login-config.xmlé…?ç½®ClientLoginModule(缺çœ?)
33  * 2. 在login-config.xml中é…?ç½®Login.Module.Name ,如下,这样和自己的数æ?®åº“
34  * 实现了è?”系:
35  * <application-policy name = "SecurityRealm">
36        <authentication>
37           <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required">
38              <module-option name = "dsJndiName">java:/Security</module-option>
39              <module-option name="principalsQuery">SELECT password FROM User WHERE name = ?</module-option>
40              <module-option name="rolesQuery">SELECT RL.name, 'Roles' FROM role as RL, user as U , users_roles as RU WHERE U.userid = RU.userid and RU.roleid = RL.roleid and U.name = ?</module-option>
41              <module-option name = "managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=Security</module-option>
42           </login-module>
43        </authentication>
44   </application-policy>
45  * 3. 在客户端调用本login,å?³å?¯å®žçŽ°å¯¹æŽˆæ?ƒEJB访问。
46  *
47  *
48  *
49  * <p>Copyright: Jdon.com Copyright (c) 2003</p>
50  * <p></p>
51  * @author banq
52  * @version 1.0
53  */

54
55 public class LoginClientUtil {
56   private final static String JavaDoc module = LoginClientUtil.class.getName();
57
58   /**
59    * 实现j_security_check功能
60    * Login_Module_Name : SecurityRealm (Jboss login-config.xml)
61    * @param username
62    * @param password
63    * @return boolean
64    */

65   public static boolean login(String JavaDoc username, String JavaDoc password,
66                               String JavaDoc Login_Module_Name) {
67     Subject JavaDoc subject = null;
68     try {
69       //jboss
70
CallbackHandler JavaDoc pch = getJBossCallbackHandler(username, password);
71       LoginContext JavaDoc loginCtx = new LoginContext JavaDoc(Login_Module_Name, pch);
72       Debug.logVerbose("[JdonFramework] begin to login ", module);
73       loginCtx.login();
74
75       Debug.logVerbose("[JdonFramework] login successfully, subject=" + subject, module);
76       return true;
77     } catch (Exception JavaDoc e) {
78       e.printStackTrace();
79       Debug.logError(e, module);
80       return false;
81     }
82
83   }
84
85   private static CallbackHandler JavaDoc getJBossCallbackHandler(String JavaDoc username,
86       String JavaDoc password) {
87     SecurityAssociationHandler pch = new SecurityAssociationHandler();
88     Principal JavaDoc user = getJBossPrincipal(username);
89     pch.setSecurityInfo(user, password.toCharArray());
90     return pch;
91   }
92
93   private static Principal JavaDoc getJBossPrincipal(String JavaDoc username) {
94     return new SimplePrincipal(username);
95   }
96
97   private static CallbackHandler JavaDoc getCallbackHandler(String JavaDoc username,
98       String JavaDoc password) {
99     AppCallbackHandler pch = new AppCallbackHandler(username, password);
100     return pch;
101
102   }
103
104 }
105
Popular Tags