1

JBoss 6.1 Final でカスタム プリンシパル クラスを使用しようとしています。JBossのドキュメントから、次の行を追加する必要があるようです

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

login-config.xml ファイルに追加されますが、正確な場所は明確ではありません。アプリケーション ポリシー定義のいくつかの場所で試しましたが、常に例外がスローされます。

私が試した場所(一度に1つずつ)は次のとおりです。

<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 に答える