問題タブ [passport-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.
single-sign-on - ADFS を使用した SSO の SAML エラー - MSIS0038: SAML メッセージの署名が間違っています
こんにちは、SSO を使用してクライアントのユーザーを自分の Web サイトに直接認証しようとしています。クライアントの IDP は Microsoft ADFS で、Passport-SAML ( https://github.com/bergie/passport-saml ) を使用して SSO プロセスを構成しています。
クライアントに提供する特別な URL (例: www.myClient.myCompany.com ) に到達した後、ユーザー (認証されていない) は期待どおりにクライアントのログイン ページにリダイレクトされます。彼が資格情報を入力した後、彼はログイン ページでスタックしたままになりますが、ユーザーが認証されているため、SSO は機能します。つまり、新しいタブを開いて www.myClient.myCompany.com に移動すると、彼は私の Web サイトにリダイレクトされます。
ADFS サーバー ログのエラー:
お時間をいただきありがとうございます!
wso2is - WSO2IS パスポート-saml SLO、エンコードされた文字列から AuthRequest を構築する際のエラー
私は現在、SSO と SLO を実装するために、passport-saml で WSO2-IS 5.4.1 を使用しています。シングル サインオンは正しく機能していますが、完全なシングル ログアウトを適切に構成できないようです。
正直なところ、いくつかのことで混乱しています
- ログアウトを開始した SP に WSO2IS がログアウト要求を送信するのはなぜですか? このアクションは SAML リクエストではキャプチャされませんが、以下に示す IdP ターミナル エラーに記載されています。
- samlStrategy.logout もローカル ログアウトを実行しますか、それとも単にリクエストを作成して WSO2IS にリダイレクトするだけですか? 私が確認したすべてのサンプル コードには、ログアウト コールバックに req.logout() が含まれていますが、/wso2app/logout/callback ポストで req.logout() を行う前に、req.isAuthenticated() を false として取得しています。
アプリは WSO2IS saml URL に正しくリダイレクトされ、WSO2IS はアプリ構成のコールバックにポストバックします。WSO2IS もユーザーのログアウトに成功しましたが、不要な SLO 要求をノード アプリに送り返しているようです。IdP のノード SP 構成については、以下の画像リンクを参照してください。
saml DEBUG を使用して IdP ターミナルで生成される主なエラー:
[2018-05-01 10:44:47,135] DEBUG {org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet} - Query string : slo=true&SAMLRequest=nVFLS8QwEP4rJfdtm272NbRdF4pQWD2oePAioc26hTRTM1P15xu7KyyCHoS5ZOZ7ZSbffvQ2ejOeOnSFkHEqtmVOurcD7PEFR74zr6MhjgLOEUyTQozeAWrqCJzuDQE3cL%2B72UMWpzB4ZGzQigvK3wxNZDyHACKqq0I8b5aLTaN0dlCtXmmZzlu1FtHjd8hACUCi0dSOWDsOrVSuZ%2BlilsoHqUCFWsUyWz6JqArZO6d5Yh6ZB4Iksdhoe0Ri2Cg1T74SEuGWLBbsRyNOG4DJw%2F%2FjG%2BU7YaaHIU8udM6it4FXV9E1% 2Bl7z74IyllOna2eHCQqm153dta03RKIcg5e86sICZNxgf3Y6iZen148Llp8%3D [2018-05-01 10:44:47,140] DEBUG {org.wso2.carbon.identity.sso.saml.builders.SignKeyDataHolder} - システム キー ストアを使用したスーパーのキー データの初期化 [2018-tenant1 10:44:47,163] DEBUG {org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet} - クエリ文字列: slo=true&SAMLRequest=nVFLS8QwEP4rJfdtm272NbRdF4pQWD2oePAioc26hTRTM1P15xu7KyyCHoS5ZOZ7ZSbffvQ2ejOeOnSFkHEqtmVOurcD7PEFR74zr6MhjgLOEUyTQozeAWrqCJzuDQE3cL%2B72UMWpzB4ZGzQigvK3wxNZDyHACKqq0I8b5aLTaN0dlCtXmmZzlu1FtHjd8hACUCi0dSOWDsOrVSuZ%2BlilsoHqUCFWsUyWz6JqArZO6d5Yh6ZB4Iksdhoe0Ri2Cg1T74SEuGWLBbsRyNOG4DJw%2F%2FjG%2BU7YaaHIU8udM6it4FXV9E1%2Bl7z74IyllOna2eHCQqm153dta03RKIcg5e86sICZNxgf3Y6iZen148Llp8%3D [2018-05-01 10:44:47,169] DEBUG {org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender} - A logoutReqSenderTaskスレッド プールに割り当てられています [2018-05-01 10:44:47,169] DEBUG {org.wso2.carbon.identity.sso.saml.session.SSOSessionPersistenceManager} - セッション インデックス 6ffb8168-3022 のセッション ID からセッション インデックスを取得しました- 4d77-9ecc-3bc168d6c5da [2018-05-01 10:44:47,345] デバッグ {org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender} - シングル ログアウト リクエストが次の宛先に送信されます。 http://localhost:3000/wso2app/logout/callbackMoved Temporarily [2018-05-01 10:44:47,348] DEBUG {org.wso2.carbon.identity.sso.saml.util.SAMLSSOUtil} - リクエスト メッセージ ��u�����)ඈm�� で返されます ����,�}4��.qǬ��Z�� [致命的なエラー] :1:1: プロローグではコンテンツを使用できません。[2018-05-01 10:44:47,368] エラー {org.wso2.carbon.identity.sso.saml.util.SAMLSSOUtil} - エンコードされた文字列 org.xml.sax.SAXParseException から AuthRequest を構築する際のエラー: コンテンツがありませんプロローグで許可されています。org.apache.xerces.parsers.DOMParser.parse(不明なソース) org.apache.xerces.jaxp.DocumentBuilderImpl.parse(不明なソース) javax.xml.parsers.DocumentBuilder.parse(不明なソース) org.wso2 org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender$LogoutReqSenderTask. http://localhost:3000/wso2app/logout/callback run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 原因: org.xml.sax.SAXParseException: コンテンツはプロローグで許可されていません。org.apache.xerces.parsers.DOMParser.parse(不明なソース) org.apache.xerces.jaxp.DocumentBuilderImpl.parse(不明なソース) javax.xml.parsers.DocumentBuilder.parse(不明なソース) org.wso2 .carbon.identity.sso.saml.util.SAMLSSOUtil.unmarshall(SAMLSSOUtil.java:298) ... 7 もっと見る
ノードアプリ。user1 は IdP によって認証されるとすぐに /wso2app/logout にリダイレクトされることに注意してください。これはテスト用です。
SLO リクエスト注: これは、ノード アプリから IdP に送信される適切な SLO リクエストであり、SAML ブラウザ ツールによってキャプチャされます。IdP からアプリに送り返された謎の slo リクエストは、IdP ターミナル エラーにのみ記載されています。
複数の投稿を確認しましたが、私の問題に関連する投稿が見つかりません。http://localhost:3000/wso2app/logout/callbackに送信されるログアウト リクエストの不可解な性質が懸念されますが、これが送信される理由がわかりません。これは、ここに示されている公式の SLO フローに従っていないようです。「[致命的なエラー] :1:1: コンテンツはプロローグでは許可されていません。過剰な空白文字に関連していますが、このリクエストがどのように、またはなぜ生成されているのかわかりません。どんな助けでも大歓迎です。
angular - Angular 4: SAML とトークン交換による認証
Angular 4 + NodeJS (SAML-PASSPORT 用) + Spring Boot (すべての API) アプリケーションのセットアップに取り組んでいます。
認証と承認の流れは次のとおりです。 1. UI で、ユーザーが [ログイン] をクリックします。 2. ログインのために SAML IDP に要求が送信されます。 3. ユーザーが自分自身を認証します。 NodeJS はユーザーをフロントエンドにリダイレクトします - この時点で、トークンを生成して UI 側に送信したいと思います。URLから送信できない
SAML 認証後に NodeJS からユーザーの詳細/トークンをフロントエンドに送信するというこの問題をどのように解決しますか?
Angular 4 では、ルートにヒットするサーブレットのような概念がありますが、ルートは舞台裏でキャプチャされ、ユーザーにトークンまたは URL の詳細が表示されます。
私はこれをしたくありません: http:///landing/token=5384742894
これはすでに解決された問題のように感じます。正しい方法が何であるかはわかりません。