私はJASPICを研究しています。最初から小さなプロジェクトを開始して、JASPICとWildflyでの動作を調査します。最初のステップは、SAMvalidateRequest
メソッドを呼び出して、保護されていないリソースのコンテンツであるindex.html
ページを返すことです。OK、validateRequest
が呼び出されます。MessageInfo
javax.security.auth.message.MessagePolicy.isMandatory
プロパティがに設定されてfalse
いるかどうかを確認します。ここに困難な時期がやってくる。私の最初の試みでは、プロパティがfalseに設定されていると値がvalidateRequest
返されAUTH_SUCCESS
ますが、ブラウザは403
エラーを返します。2回目の試行で、ブラウザはaをvalidateRequest
返しますが、応答にデータがありません(については何もありません)。サーブレットリクエストを正しく処理するにはどうすればよいですか?ここでソースを見つけることができます。ありがとう。null
200
index.html
サーブレットリクエストを正しく処理するにはどうすればよいですか?
仕様の関連セクションを理解し、それを順守します。典型的なサーブレット指向ServerAuthModule
(SAM)の場合、それらは次のとおりです。
validateRequest
§1.2.5および§2.1.5.2で提供される、サーバー側のメッセージ処理モデルの一般的な概要(ポイント2は呼び出される場所です)。後者、および25ページのモデルの状態図(PDFの39ページ)は特に重要です。もちろん、ファクトリも実装しているので、知っておくべきさまざまな重要性の詳細がかなりあります。したがって、最初の3つの章全体を読まないようにするのは難しいでしょう。
SUCCESS
から戻るvalidateRequest
validateRequest
SAMの実装が戻る場合AuthStatus.SUCCESS
(オプションでnull
はありません)は、呼び出し元が実際に認証されているか匿名であるかに関係なく、戻る前に呼び出し元のIDを(サーブレット)ランタイムに伝達する必要があります。これは、ランタイムが提供するを介して、、CallerPrincipalCallback
および/または少なくとも1つGroupPrincipalCallback
(匿名の呼び出し元にグループを割り当てることが可能)を処理することで実現できますCallbackHandler
。これらのコールバックのいずれかをnull Principal
(name)引数は、呼び出し元が匿名と見なされること、またはグループが関連付けられていないことをランタイムに通知します。繰り返しになりますが、呼び出し元が匿名であるというデフォルトの仮定は、準拠したランタイムによって行われないことに注意してください。明示的に伝える必要があります。そうでない場合、結果は未定義です。
のセマンティクスはSUCCESS
、グループ(ロール)ベースの呼び出し元の承認が成功した場合に、要求が(サーブレットベースの)サービスエンドポイントに伝播できるようにすることです。ただし、承認を行うには、ランタイムに呼び出し元のIDを認識させる必要があります。そのため、前述のコールバックが必要です。
AuthStatus
値とHTTP応答ステータスコード
2つの関係は少し混乱する可能性があります。前者はプロトコルに依存せず、メッセージ処理モデルの本質的に状態遷移ラベルです。理論的には、それらは後者を制約します。複数のコンポーネントとアプリケーションサーバー自体が応答のステータスを変更することができるので、実際には、あなたが非でそれを自分で割り当てることをお勧めですAuthStatus.SUCCESS
/ AuthStatus.SEND_SUCCESS
validateRequest
/secureResponse
戻り例。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加