Closed3

NestJSでSSO,saml認証を実装する

jlmn1026jlmn1026

上記記事内では、APIサーバにGETでアクセスする流れになっているが、SPAでフロントを構築する上ではAPIの結果を受け取ってから、フロントエンドの処理で認証基盤へリダイレクトしたいと思った。

そのように実装したところ、自サービスからSSOの認証基盤サービスにリダイレクトする際にCORSで蹴られる事象が発生。非同意なリダイレクト処理をブラウザJSのレベルで組めないのはセキュリティ上当然といえば当然であった。

https://rinoguchi.net/2019/05/302-redirect-cors.html

NestJS、passport-samlではリダイレクト以外で処理する方法はないようなので、最初の記事通りの実装となった。

jlmn1026jlmn1026

passport-samlでエラーになったりならなかったりする
私自身は頻度としてはに1日1回くらい発生していた。別の開発者は5回に1回発生していたらしい

エラー内容でぐぐっていると以下の記事がヒット

https://stackoverflow.com/questions/57290983/passport-saml-express-redirected-url-not-submitting-form-gives-saml-assertio

デフォルトでは、Idp側から有効な処理時刻の期間が指定され、Sp側はその期間内に認証処理を行わないといけない。これはセキュリティの問題で、有効期間が長いと悪意のある第三者が入り込むリスクがあるからだ。ネットワークの状態によっては短い有効期間だと難しくなる。この期間指定自体を無効にしたい場合はacceptedClockSkewMs=-1をコンフィグに追加して対応する

このスクラップは2023/04/27にクローズされました