JAVA技巧:Jboss如何獲取用戶驗(yàn)證后的角色?

字號:

通過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;
    }