5

アプリで初めてOpenID認証を使用しています。選択したプロバイダーに対してユーザーを正常に認証できますが、Java EEサーバーにユーザーを正しくログインする方法がわからないため、ユーザーはフォームベースのログインなどでログインしたように見えます。サーブレット3.0を使用することもできますloginが、ユーザー名とパスワードのペアが必要であり、OpenIDを使用するときにパスワードがありません。

Principalオブジェクトを取得してメソッドなどを使用できるようにしたいのですが、isUserInRole何か足りないものがありますか?このアプリはJBoss7.1で実行していますが、一般的な方法があるはずです。または、OpenIDを使用すると、何かが足りずPrincipal、ユーザーの役割が異なる方法で実行される可能性がありますか?

4

1 に答える 1

1

それを行うための一般的な方法があるはずだと思います。

確かにあります。いわゆる JASPIC 認証モジュールを作成する必要があります。OpenID で使用できるものは既にあります。以下を参照してください。

Servlet 3.0 ログインを使用できましたが、ユーザー名とパスワードのペアが必要であり、OpenID を使用する場合はパスワードがありません。

そのとおりです。そのため、代わりに Servlet 3.0認証メソッドを呼び出す必要があります。loginユーザー名/パスワードに強く結び付けられているため、独自の認証モジュールを定義した場合でも、Java EE 7 で例外がスローされます! (Java EE 6 では何が起こるかは未定義ですが、通常は動作しません)。

Java EE で OpenID のような認証モジュールを作成する方法のその他の例については、私自身のプロジェクトOmniSecurityと、そのプロジェクトの以前のバージョンを使用する実際のアプリケーションを参照してください。(残念ながら、CDI を JASPIC SAM で動作させるには非常に複雑で複雑な回避策が必要だったため、コードを理解するのは少し難しいですが、それでも一般的なパターンを確認できることを願っています)

于 2013-08-04T13:34:37.180 に答える