1

私たちは、2 段階の認証プロセスを持つ Worklight アプリケーションを作成中です。

ステップ 1: フォーム認証
ここでは、すぐに使える WASLTPARealm を使用しています。これは、WebSphere のカスタム JAAS モジュールに対して認証を行い、LTPA トークンを返します。これは期待どおりに機能します。

ステップ 2: カスタム認証システム
2 番目のステップは、カスタム認証システムとログイン モジュールです。

  • ステップ 1 で設定された LTPA Cookie を読み取ります
  • LTPA Cookie を使用して別のアプリケーションに POST 要求を行います (これら 2 つのアプリケーションはシングル サインオンによって信頼されています)。
  • POST リクエストは、追加のセッション Cookie を含むレスポンスを返します
  • ユーザーが認証される

問題は、ドキュメントで提供されているクライアント コードを使用すると、カスタム認証システムが起動しないことです。基本的

customAuthenticator は、通常の方法で作成されます

var customAuthenticator = WL.Client.createChallengeHandler("MyCustomRealm");

次に、クライアントコードのさらに下に

var reqURL = '/my_custom_auth_request_url';
var options = {};
options.parameters = {};
options.headers = {};
customAuthenticator.submitLoginForm(reqURL, options, customAuthenticator.submitLoginFormCallback);

404 の結果

[27/05/13 10:35:07:616 NZST] 00000326 WebSphereForm I com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator processRequest FWLSE0055I: Not recognized.
[27/05/13 10:35:07:616 NZST] 00000326 Authenticatio E com.worklight.core.auth.impl.AuthenticationFilter doFilter FWLSE0048E: Unhandled exception caught: SRVE0190E: File not found: /apps/services/my_custom_auth_request_url
                                 java.io.FileNotFoundException: SRVE0190E: File not found: /apps/services/my_custom_auth_request_url

これは、カスタム・オーセンティケーターではなく、WebSphereFormBasedAuthenticator によってリクエストが取得されるために発生します。

カスタムオーセンティケーター内のログにリクエスト URL を書き込みます。

public AuthenticationResult processRequest(HttpServletRequest request, HttpServletResponse response, boolean isAccessToProtectedResource) throws IOException,   ServletException {
        logger.info("Request URL is: " + request.getRequestURI());

しかし、そのラインはヒットすることはありません。

2 つのオーセンティケーターを並べて使用できますか? 私が見ている動作は、

var wlFormsAuthenticator = WL.Client.createChallengeHandler("WASLTPARealm");

var customAuthenticator = WL.Client.createChallengeHandler("MyCustomRealm");

混みそうです。customAuthenticator の呼び出しsubmitLoginFormは、WebSphereForms オーセンティケーターによって取得されるべきではなく、代わりにカスタム オーセンティケーターに送られるべきだと考えました。

予想される動作と考えられる回避策を明確にしていただけますか?

また、機能するのは呼び出しです

WL.Client.login("MyCustomRealm", {
    onSuccess: function() {

    },
    onFailure: function() {

    }
});

この場合、Java コードがヒットし、認証に成功しましたが、 URL

http://localhosT:9080/worklight/apps/services/api/MyApp/common/login

my_custom_auth_request_urlこれは、Java コードでリクエストを除外できないという意味ではありません。

これが理にかなっていることを願っています。前もって感謝します。

4

1 に答える 1