SAML 2 SSO 認証を有効にする小さな bitbucket プラグインを作成しようとしています。
bitbucket のサンプル認証プラグインのソース コードを見てきましたが、非常に簡単に見えます。
ただし、私の質問は、個別のリクエストにまたがる認証を処理するための最良のアプローチは何かということです。
SAML SSO を行うには、ユーザーのブラウザーを介して POST を IdP に送信する必要があります。その後、POST を介して SAML トークンを再度送信しますが、認証の途中ではありません。そのため、認証プロセスを再び開始する最もクリーンな方法を見つけようとしています。現在の考えは次のとおりです。
- 実装する認証ハンドラー
com.atlassian.bitbucket.auth.HttpAuthenticationHandler
に、メソッドで SAML 認証が行われたかどうかを確認してもらいauthenticate()
、必要に応じてそれらを IdP にリダイレクトします。(リダイレクトにより認証処理が停止しました) - 別のサーブレットで IdP から SAML トークンを受け取り、SAML トークンが適切であることを確認します。問題がなければ、サーブレット リクエスト属性 (またはセッション属性) に検証済みのユーザー名を設定し、アクセスしようとした元のページにユーザーを転送します。これにより、認証プロセスが再び開始されます。
- 認証ハンドラが再度実行され、リクエスト/セッション属性がチェックされ、今回は、正常に完了
ApplicationUser
するために必要な が作成されます。authenticate()
これは良いアプローチのように聞こえますか? Crowd SSO ハンドラーがどのように機能するかについてビットバケットのソース コードを確認しましたが、Crowd SSO では外部ログイン ページにリダイレクトする必要がないため、このフローの例はありません。
アイデア?