EJBプロジェクトでは、 "javax.ejb.SessionContext"内の呼び出しのプリンシパル名を置き換える必要があります。私はJboss AS 6.0 Finalをアプリケーションサーバーとして使用します。カスタムプリンシパルはJboss ASのEJB SessionContextに伝播されません
UsernamePasswordLoginModuleを拡張してカスタムプリンシパルを追加したカスタムUserLoginModuleを定義しましたが、カスタムプリンシパルはEJB SessionContextに伝播されません。ここで
は私のカスタムログインモジュールからいくつかのコードです:
@Override
protected Group[] getRoleSets() throws LoginException {
Group[] groups = new Group[2];
groups[0] = new SimpleGroup("Roles");
groups[0].addMember(createRoleIdentity());
Group callerPrincipal = new SimpleGroup("CallerPrincipal");
callerPrincipal.addMember(createIdentity(this.getUsername()));
groups[1] = callerPrincipal;
subject.getPrincipals().add(callerPrincipal);
return groups;
}
@Override
protected Principal createIdentity(String username) throws LoginException {
return new MyCustomPrincipal(username);
}
}
マイカスタムログインモジュールはうまく動作しますが、私は「javax.ejb.SessionContextの」から取得呼び出し側プリンシパルはまだSimplePrincipalです。
それはJobssのバグがあることが判明:http://community.jboss.org/thread/44388:EJBContext.getCallerPrincipal()は、カスタムプリンシパルhttps://issues.jboss.org/browse/JBAS-8427
と関連トピックを返すされていません。
これについていくつかの経験があり、Jbossが作成するデフォルトのプリンシパルを置き換えても安全だと思いますか?それらの副作用はありますか?
これは解決策に残ったJBoss 7 –