User: jules_gosnell
Date: 01/06/10 14:37:45
Added: jetty/src/main/org/jboss/jetty JBossUserRealm.java
Log:
Scott's new JAAS integration - first cut - thanks Scott!
Revision Changes Path
1.1 contrib/jetty/src/main/org/jboss/jetty/JBossUserRealm.java
Index: JBossUserRealm.java
===================================================================
package org.jboss.jetty;
import java.util.HashSet;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.mortbay.HTTP.HttpRequest;
import com.mortbay.HTTP.UserPrincipal;
import com.mortbay.HTTP.UserRealm;
import org.jboss.security.EJBSecurityManager;
import org.jboss.security.RealmMapping;
import org.jboss.security.SimplePrincipal;
import org.jboss.security.SecurityAssociation;
import org.jboss.security.SubjectSecurityManager;
/** An implementation of UserRealm that integrates with the JBossSX security
manager associted with the web application.
* @author [EMAIL PROTECTED]
* @version $Revision: 1.1 $
*/
public class JBossUserRealm implements UserRealm
{
private String realmName;
class User extends SimplePrincipal implements UserPrincipal
{
HttpRequest request;
User(String name, HttpRequest request)
{
super(name);
this.request = request;
}
public boolean authenticate(String password)
{
boolean authenticated = false;
String username = this.getName();
System.out.println("Authenticating access, username: " + username + " "
+request);
try
{
// Get the JBoss security manager from the ENC context
InitialContext iniCtx = new InitialContext();
EJBSecurityManager securityMgr = (EJBSecurityManager)
iniCtx.lookup("java:comp/env/security/securityMgr");
if( securityMgr.isValid(this, password) )
{
authenticated = true;
request.setAttribute(UserPrincipal.__ATTR, this);
System.out.println("User: "+username+" is authenticated");
SecurityAssociation.setPrincipal(this);
SecurityAssociation.setCredential(password.toCharArray());
/*
if( useJAAS == true && securityMgr instanceof
SubjectSecurityManager )
{
SubjectSecurityManager subjectMgr = (SubjectSecurityManager)
securityMgr;
Subject subject = subjectMgr.getActiveSubject();
request.setAttribute(subjectAttributeName, subject);
}
*/
}
else
{
System.out.println("User: "+username+" is NOT authenticated");
}
}
catch(NamingException e)
{
System.err.println("Error during authenticate");
e.printStackTrace();
}
return authenticated;
}
public boolean isUserInRole(String role)
{
boolean isUserInRole = false;
String username = this.getName();
System.out.println("Authorizing access, username: " + username + " "
+request);
try
{
// Get the JBoss security manager from the ENC context
InitialContext iniCtx = new InitialContext();
RealmMapping securityMgr = (RealmMapping)
iniCtx.lookup("java:comp/env/security/realmMapping");
HashSet requiredRoles = new HashSet();
requiredRoles.add(role);
if( securityMgr.doesUserHaveRole(this, requiredRoles) )
{
isUserInRole = true;
System.out.println("User: "+username+" is authorized");
}
else
{
System.out.println("User: "+username+" is NOT authorized,
requiredRoles="+requiredRoles);
}
}
catch(NamingException e)
{
System.err.println("Error during authorization");
e.printStackTrace();
}
return isUserInRole;
}
public UserRealm getUserRealm()
{
return JBossUserRealm.this;
}
}
/** Creates new JBossUserRealm */
public JBossUserRealm(String realmName)
{
this.realmName = realmName;
System.out.println("+++ Created JBossUserRealm, realmName="+realmName);
}
public String getName()
{
return realmName;
}
public UserPrincipal getUser(String username, HttpRequest request)
{
System.out.println("+++ JBossUserRealm.getUser, username="+username);
return new User(username, request);
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development