問題タブ [spring-saml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-security - SAML アサーションで必要な NameID
IdP と統合しようとすると、NameID がアサーションに存在しないというエラーが発生します。org.springframework.security.saml.websso.WebSSOProfileConsumerImpl の processAuthenticationResponse の 250 ~ 253 行目に、NameID の明示的なチェックがあることに気付きました。NameID が必須である 2.0 仕様のどこにも見つかりません。どちらの metatdata も NameIDPolicy を指定しておらず、AuthnRequest も NameIDPolicy を指定していない場合、NameID のチェックはオプションにする必要がありますか?
spring - SAMLException: NameID 要素は、応答メッセージの件名の一部として存在する必要があります。IDP 構成で有効にしてください
spring-saml実装を使用しています。クラス WebSSOProfileConsumerImpl で、SAML 応答のアサーションでnameId をチェックする次のコード行を見つけることができました。
コードに基づいて、nameId が件名の一部であることは明らかです。しかし、私が使用しているものを含む IDP のほとんどは、 nameId がsubject/attributeの一部である可能性があると述べています。SimpleSAMLPHP と同じように、サブジェクトに nameId を受け入れる実装がいくつかあるようです。
私が受け取っている件名は次のとおりで、nameId が含まれていません。
ただし、属性値としてnameIdを持つ属性があります。件名の代わりにこれを使用できないのはなぜですか。
spring-saml実装でnameIdがサブジェクトのみの一部である理由を誰でも説明できますか。
@vschafer securityContext.xmlをカスタマイズして、 subjectからではなく特定の属性の一部であるnameIdを選択する方法はありますか?
spring - spring saml:LOGOUTはどのように処理されますか? IDP メタデータ xml にログアウト エンドポイントを含めることは必須ですか?
Spring SAML 実装を使用しています。SSO サークル メタデータ xml には、ローカル ログアウトとグローバル ログアウトに役立つログアウト エンドポイントがありました。しかし、私がやり取りしていて、メタデータ xml にログアウト エンドポイントがない他の IDP がいくつかあります。
これらのシナリオで LOGOUT をどのように処理する必要がありますか?
リクエストの Cookie を削除することがこの問題の唯一の解決策ですか、それともこのシナリオの回避策はありますか?
この点であなたの助けに感謝します。
spring - spring saml - IDP が開始した SSO
SPRING SAML 実装を使用し、SP (例: ALPHA) として機能しています。SP によって開始された SSO を実行でき、IDP でユーザーを認証できます。この実装では問題ありません。
しかし、アプリケーション内で、同じ IDP にリンクされている別の SP (Eg:BETA) URL にアクセスする必要があります。ALPHA と BETA の両方のサービス プロバイダーは、同じ IDP によって信頼されています。このシナリオでは、ALPHA が SP INIT SSO を介して IDP でユーザーを認証した後、BETA SP URL へのリダイレクトが発生したときに資格情報を再度入力するよう求められます。SP が異なるセッションを実行することを理解しています。
ALPHA SP で認証されたのと同じ SAMLCredential を使用して BETA SP でログインを有効にするにはどうすればよいですか。いくつかのドキュメントを調べたところ、IDP INIT SSO を介して可能であることがわかりました。
SP INIT SSO と IDP INIT SSO を処理できるようにアプリケーションを構成する方法を誰か教えてもらえますか?
ALPHA SP は shibboleth、その他の SP は EZPROXY
java - 応答のこのヘッダー日付はどこから来たのですか? (Tomcat を使用した spring-saml2)
接続を確立するために spring-security-saml2 API を使用しています。
しばらくはうまくいきましたが、最近、応答ヘッダーの日付に問題が発生しました。フィルターorg.springframework.security.saml.SAMLProcessingFilter
が呼び出されると (url -> /saml/SSO/alias/defaultAlias
)、応答にはヘッダーが含まれ、date
この日付は2 時間遅れます。
したがって、エラーが発生しますEtat HTTP 401 - Authentication Failed : Response issue time is either too old or with date in the future, skew 60, time 2014-10-22T08:25:55.967Z
(10h25でテスト)
日付を取得する方法と、この動作が定期的にしか発生しない理由がわかりません。手がかりを探しています。ありがとう。
spring-mvc - Spring SAML 拡張機能と Spring Security CSRF 保護の競合
CSRF保護を含むSpring Security(3.2.4)を備えたSpring MVC(4.0.5)アプリケーションがあり、正常に動作します。現在、CSRF 保護で問題を引き起こす SAML セキュリティ拡張機能 (spring-security-saml2-core 1.0.0) を追加しています。
http://localhost:8080/myapp
SSOCircle でメタデータが構成されており、SSOCircleのログイン ページに直接アクセスしようとしています。認証後、ブラウザは次のようにリダイレクトしhttp://localhost:8080/myapp/saml/SSO
、エラーを生成します。
HTTP ステータス 403 - 期待される CSRF トークンが見つかりません。セッションの有効期限が切れていますか?
CSRF 保護をオフにすると、すべてが機能します。CSRF 保護を維持しながら SAML 拡張機能を使用するにはどうすればよいですか?
SAML 拡張機能をセットアップする前に、ログイン フォームを使用し、CSRF 保護が機能し、ログイン JSP でエラーを受信せず、トークンもありませんでした。
SAML の前のコード:
SAML を使用したコード:
アップデート
CSRF 保護を再度有効にし、ロギングを DEBUG に設定した後、認証が成功した直後に発生するログは次のとおりです。
spring - Spring Security Saml 2.0 は Assertion Level Encryption と AES-256 を暗号化アルゴリズムとしてサポートしていますか?
私はSSOに比較的慣れていません。Spring Framework 環境に対して確認したい要件が 2 つあります (タイトルを参照) が、答えを得る方法がわかりません。ドキュメントもこれに対する直接的な答えを提供していないようです。
この SAML 実装でサポートされているものとサポートされていないものを判断する方法について、ご意見をお寄せください。
saml - SAML セキュア認証リクエストが失敗する
Shibboleth IdP に対してセキュアな ECP AuthnRequest を作成できません。Spring SAML 拡張機能サンプル アプリに大きく基づいた、小規模な概念実証 SP を実行しています。私の SP メタデータは、Spring SAML 拡張サンプル アプリのメタデータ ジェネレーターを使用して生成されました。使用されている署名キーは、サンプル アプリ samlKeystore.jks キー ストアに含まれている apollo 1 であり、これらはすべて、私自身の小さな SP アプリにも含まれています。
私の SP メタデータでは、次のように AuthnRequestsSigned 属性を true に設定しています。
AuthnRequestsSigned を false に設定し、ECP SOAP POST を IdP に送信すると、問題なく動作します。IdP から適切な SOAP メッセージが返されます。しかし、その値が true の場合、説明のつかないエラー メッセージが表示されます。
Shibboleth (IdP) のログを調べると、次のように表示されます。
これは、トランザクションのログに 2 回表示されます。私の推測は、リクエストと SP メタデータで証明書を見つけているためです。この同じトランザクション中のログのさらに下には、これに続いてスタック トレースが表示されます。
ECP POST AuthnRequest にある証明書を、「署名」に使用される SP メタデータの証明書と比較しましたが、それらは同じです。したがって、なぜこのエラーが発生するのかわかりません。
私の理解では、IdP は<ds:X509Certificate>
リクエストのタグ (公開鍵) で見つかった証明書を取得し、それが SP メタデータで定義されているものと同じであることを確認します。<ds:SignatureValue>
次に、その証明書を使用して、要素のリクエストにもある署名値を検証します。検証された場合は、AuthnRequest に進みます。これは正確ですか?
欠けているのは何ですか?
更新 1:提案されているようにログ行を追加しました。ECP 要求については、次のように表示されます。
注意すべきことの 1 つは、ブラウザー経由で SP に要求を行い、サインインしていない場合、期待どおりに IdP ログイン ページにリダイレクトされることです。IdP ログを確認すると、そのリクエストも署名されており、検証されていることがわかります。SP から IdP に送信されたフォーム データを調べたところAuthnRequest
、同じ証明書を使用して署名されていることがわかりましたが、SignatureValue
値はもちろん異なります。非 ECP 要求データ XML は、ECP 要求 SOAP XML と非常によく似ていますが、ECP 要求は失敗します。
更新 2 : spring-security-saml-1.0.0.RELEASE と Shibboleth IdP v2.4.0 を使用しています。IdP に送信するメッセージの例を次に示します。
最初の PAOS 要求からの応答を SP (Spring SAML) にコピーし、ヘッダーの内部を削除して、それを Shibboleth IdP に送信するだけです。私が送信するヘッダーは次のとおりです。
更新 3 : 署名された非 ECP AuthnRequests は正常に検証されます。したがって、署名が失敗するのは IdP への SOAP ECP AuthnRequests だけです。何か案は?
更新 4 : まだこれを機能させることはできません。どんな助けでも大歓迎です。
java - Spring Security:エンティティに応じて異なる認証方法
ここでの最初の投稿、私が正しくやっているといいのですが。
プロジェクトには、複数のエンティティを持つ単一の Web アプリケーションがあるシナリオがあります。現在、ログインはデフォルトの JDBC Spring Security プロバイダーを介して管理されており、正常に機能しています。
新しい要件では、各エンティティが独自のログイン方法を持つことができる必要があります (現在、2 つの方法が利用可能です。現在の JDBC の方法と、2 番目の方法は SAML による認証であり、各エンティティは独自のログイン方法を定義します)。 IdP ですが、これは別の話です)
これを実現する方法についてのガイドラインが必要です。検索を行ったところ、さまざまな URL のプロバイダーが見つかりました。
エンティティ ユーザーを確認し、適切な認証プロバイダーを使用できるカスタムの単一のエントリ ポイントを持つことは良い方法ですか?
敬具、
アレックス