2012-05-28 107 views
1

我想在JBoss 6.1 Final中使用自定义主体类。从the JBoss documentation它看起来像我必须添加行如何设置自定义主体类

<principalClass="es.caib.gesma.browseldap.LdapPrincipal"/> 

到login-config.xml文件,但目前还不清楚究竟在何处。我在我的应用程序策略定义中的几个位置尝试过,但它总是会引发异常。

,我已经尝试了地方(一次一个)是:

<application-policy name="GesManPolicy"> 
              <----- Here 
    <authentication> 
              <----- Here 
    <login-module code="es.caib.gesma.browseldap.BrowseLdapLoginModule" flag="required"> 
              <----- And here 
    <module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option> 
    ... 

,我一次比一次是

10:17:05,359 WARN [XMLLoginConfigImpl] End loadConfig, failed to load config: vfs:/C:/desarrollo/jboss-6.1.0.Final/server/default/conf/login-config.xml: 
org.jboss.security.auth.login.ParseException: Encountered " <ANY> "<?xml "" at line 1, column 1. Was expecting one of: 
<EOF> 
<IDENTIFIER> ... 
at org.jboss.security.auth.login.SunConfigParser.generateParseException(SunConfigParser.java:415) [:3.0.0.CR2] 
at org.jboss.security.auth.login.SunConfigParser.jj_consume_token(SunConfigParser.java:352) [:3.0.0.CR2] 
at org.jboss.security.auth.login.SunConfigParser.config(SunConfigParser.java:99) 
.... 

的地方/我应该如何设置的任何想法异常自定义主体?

在此先感谢。

回答

1

最后,JBoss文档是错误的。使用模块的module-option这是否意味着委托人未被容器传递给模块,而是由模块创建的?)它的工作原理。

<module-option name="principalClass">es.caib.gesma.browseldap.LdapPrincipal</module-option> 

如果你正在检查这一点,你会得到与此对象(而不是SimplePrincipal复印件),以获得JBoss容器接下来的麻烦。为此,您的模块必须将您的主体对象添加到RolesSets,如下所示:

protected Group[] getRoleSets() throws LoginException { 
    SimpleGroup callerPrincipal = new SimpleGroup("CallerPrincipal"); 
    callerPrincipal.addMember(this.getIdentity()); <--- YOUR PRINCIPAL OBJECT 
    Group[] roleSets = { userRoles , callerPrincipal }; 
    return roleSets; 
}