0

私は CDI -> EJB アプリを持っています。以前は JBoss j_security でセキュリティを行っていました。シロとのセキュリティは機能しています。

しかし、私の唯一の問題は、EJB でSessionContextを取得するにはどうすればよいかということです。Jboss Security を使用して、次の場所にログインするユーザー名を取得しました。

SessionContext sessionContext; 文字列メール = sessionContext.getCallerPrincipal().getName();

ここで、EJB でユーザー名を取得したいと考えています。SessionContext でユーザー名を設定するにはどうすればよいですか?

ご協力ありがとう御座います

4

1 に答える 1

0

これは少しトリッキーで、使用している JBoss のバージョンにも依存します。AS 7.x および EAP 6.x の範囲では、いくつかのバグのため、パブリック API を使用してこれを実際に行うことはできません。

ユーザー名とロールを認識するために、ここで使用したようなJBosssessionContext固有のコードを使用できます。

それは次のようなものでなければなりません。

SecurityContext context = SecurityActions.getSecurityContext();
context.getUtil().createSubjectInfo(new SimplePrincipal(userName), 
    null,
    someSubject
);

ファイルの残りの部分を見て、 のsomeSubject作成方法と設定方法を確認してください。

残念ながら、前述の JBoss バージョン@RolesAllowedは機能しません。JBoss はローカルの呼び出し元から認証済みの ID を引き継がないためです。ただし、実際の Bean を呼び出す直前に、常に JBoss 固有の「セキュリティ ドメイン」を参照します。もちろんシロのことは何も知らなかった。

于 2014-01-09T23:06:33.807 に答える