1

我正在尝试在 JBoss 6.1 Final 中使用自定义主体类。从JBoss 文档看来,我必须添加该行

    <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) 
....

知道我应该在哪里/如何设置自定义主体吗?

提前致谢。

4

1 回答 1

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;
}
于 2012-06-08T12:34:35.147 回答