通過JAAS驗(yàn)證的用戶,要想得到驗(yàn)證的用戶的所有的角色,考試,大提示JBOSS目前推薦的是如下代碼段
主要是基于新的JACC規(guī)范:
Java Authorization Contract for Containers (Java ACC) specification (JSR-115)
import javax.security.auth.Subject ;
import javax.security.jacc.PolicyContext;
private String findRole() throws Exception
{
String result="";
// Get the Authenticated Subject
Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
// Now look for a Group called Roles
Set principals = subject.getPrincipals(Principal.class);
Iterator iter = principals.iterator();
while(iter.hasNext())
{
Principal p = (Principal)iter.next();
if(p instanceof SimpleGroup)
{
SimpleGroup sg = (SimpleGroup)p;
if("Roles".equals(sg.getName()))
{
Enumeration en = sg.members();
while(en.hasMoreElements())
{
String role = en.nextElement().toString();
result=result+","+role;
System.out.println("Role:"+role);
}
}
}
}
return result;
}
主要是基于新的JACC規(guī)范:
Java Authorization Contract for Containers (Java ACC) specification (JSR-115)
import javax.security.auth.Subject ;
import javax.security.jacc.PolicyContext;
private String findRole() throws Exception
{
String result="";
// Get the Authenticated Subject
Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
// Now look for a Group called Roles
Set principals = subject.getPrincipals(Principal.class);
Iterator iter = principals.iterator();
while(iter.hasNext())
{
Principal p = (Principal)iter.next();
if(p instanceof SimpleGroup)
{
SimpleGroup sg = (SimpleGroup)p;
if("Roles".equals(sg.getName()))
{
Enumeration en = sg.members();
while(en.hasMoreElements())
{
String role = en.nextElement().toString();
result=result+","+role;
System.out.println("Role:"+role);
}
}
}
}
return result;
}