0

アダプターベースの認証を使用しています。クライアントはいくつかの資格情報を取得し、アダプターはそれらを再度エンタープライズ サービスとして検証します。その結果、私は自分の enterpriseRealm にいます。

その後、そのレルムによって保護された HTTP アダプターが他のエンタープライズ サービスからデータを取得し、元の認証が行われたときに取得した資格情報を提供します。

考えられる結果の 1 つは、ユーザーのセッションが有効でなくなったことをエンタープライズ サービスが検出する可能性があることです。考えられるシナリオの 1 つは、ユーザーの権限が取り消されたことです。そのため、HTTP アダプターは、ユーザーを処理する必要がないことを「認識」しています。 enterpriseRealm で認証されているため、HTTP アダプターへの今後の呼び出しには再認証が必要です。

サーバー側で「ログアウト」するか、ワークライトにセッションが無効であることを通知する方法を探していました。これまでのところ、特定のエラー応答をクライアントに送り返し、クライアント コードで WL.Client.logout() を呼び出すのが最善の方法です。HTTP アダプター メソッドのすべてのクライアントがこのエラー状態を正しく処理する必要があるため、これについては少し不安です。より良い代替手段はありますか?

4

2 に答える 2

2

認証が成功した後にアクティブ ユーザーを設定する方法と同様に、WL.Server.setActiveUser("your-realm", null) API を使用できます。これにより、WL サーバーに保存されている userIdentity が破棄されます。これを行うと、次の受信リクエストで認証チャレンジが取得されます。

于 2014-07-01T09:14:18.627 に答える
0

この質問に対する私自身の部分的な答えを推測します:

アダプタベースの認証を使用する場合、クライアントにはチャレンジ ハンドラがインストールされます。すべてのアダプター応答は、インストールされたチャレンジ ハンドラーに提供されるため、チャレンジ ハンドラーが期待するパターンに一致する応答を HTTP アダプターが返す場合、セッションを終了する機会があります。

これにより、チャレンジ ハンドラが単一の制御ポイントになり、このチェックを行うためにアダプタ呼び出しを行うさまざまなクライアント コードが不要になります。

この時点で、チャレンジ ハンドラは logout(); を呼び出すことができると仮定します。

于 2014-07-01T07:29:59.567 に答える