AzureADエラー AADSTS7500525 SAMLプラグインを使用

こんにちは!

SAML プラグインは AzureAD で動作していましたが、昨日の最新コミットへのアップグレード後、ユーザーが SAML 経由で認証を試みると、以下のエラーが表示されるようになりました。

サインイン
申し訳ありませんが、サインインできません。

AADSTS7500525: SAML メッセージの XML でエラーが発生しました (1 行目、1 列目)。SAML メッセージの XML コンテンツが SAML プロトコルの仕様に準拠していることを確認してください。

このリンク Azure AD SAML2 request rejected: AADSTS7500525 - Microsoft Q&A は、「圧縮された SAML 認証リクエスト」が原因である可能性を示唆していますが、AzureAD はこれをサポートしていません。

12 月のコミットには、SAML に関する多くの変更 (たとえば、サイト設定による設定) が含まれていますが、この原因となった可能性のある SAML リクエストに関連する変更を特定できませんでした。

SAML 設定 (アップデートまで正常に動作していました):

## Saml plugin setting
  DISCOURSE_SAML_TARGET_URL: https://login.microsoftonline.com/<<our app id>>/saml2
  DISCOURSE_SAML_CERT_FINGERPRINT: "<<"our fingerprint">>""
  DISCOURSE_SAML_REQUEST_METHOD: POST
  #DISCOURSE_SAML_FULL_SCREEN_LOGIN: true
  DISCOURSE_SAML_CERT: "-----BEGIN CERTIFICATE-----\n<<Our cert payload>>\n-----END CERTIFICATE-----"
  DISCOURSE_SAML_SYNC_GROUPS: true
  DISCOURSE_SAML_GROUPS_ATTRIBUTE: http://schemas.microsoft.com/ws/2008/06/identity/claims/role
  DISCOURSE_SAML_GROUPS_FULLSYNC: true

これに関する詳細情報を取得するには、どのように認証デバッグを有効にすればよいですか?

「いいね!」 1

問題が発生しているとのこと、申し訳ありません。ここ数週間、SAMLプラグインのリファクタリングを多く行っていたため、それに関連している可能性があります。

これはいつ発生しますか?ユーザーがログインを開始したときですか?それともDiscourseに戻されたときですか?

サイトのURLをここに、またはプライベートメッセージで共有していただけますか?

「いいね!」 1

ユーザーがログインする必要がある場合(セッションが期限切れになったか、新しいユーザーがログインしようとした場合)、これが常に発生します。

リビジョン 9334abe249 に更新した後(以前は 959923d3cf でした)に発生し始めました。

申し訳ありませんが、当社のフォーラムはプライベートなAWSアカウントで内部的にホストされているため、外部ネットワークからアクセスすることはできません。

エラーはどこに表示されますか? Discourseのログですか? ユーザーの画面ですか? Azureですか?

スクリーンショットを共有していただけますか?

「いいね!」 1

Azure側のエラーのため、Discourseのログでも何かを見つけようとしましたが、エラーメッセージは見つかりませんでした。

production.logでは、ログインプロセスはここで停止します(おそらくAzureからの応答を待っています)。

  StaticController#show として処理中 (HTML)
  パラメータ: {"id"=>"login"}
  static/login.html.erb をレンダリング (所要時間: 17.5ms | 割り当て: 1440)
Completed 200 OK in 19ms (Views: 18.3ms | ActiveRecord: 0.0ms | Allocations: 2104)
  GET "/session/csrf" を開始 ( <<IP>> より) 2021-12-14 18:28:16 -0300
  SessionController#csrf として処理中 (JSON)
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 337)
  POST "/auth/saml" を開始 ( <<IP>> より) 2021-12-14 18:28:16 -0300
  (saml) セットアップエンドポイントが検出され、現在実行中です。
  (saml) リクエストフェーズが開始されました。

Azure担当チームが受信しているXMLを取得しようとしているため、それを見て何か「違い」があるか確認できるかもしれません。彼らが送信してきたらお知らせします。

「いいね!」 1

エラーは、ユーザーがログインボタンをクリックした後に発生します。
その後、Azureのログインページにリダイレクトされ、以下のエラーが表示されます。

サイトにアクセスせずに何が起こっているのかを把握するのは難しいと思います。

次のステップは、Azure が受信している XML を取得し、何が間違っているのかを把握することです。ブラウザの開発者ツールでペイロードを確認し、こちらのようなツールを使用してデコードすることで、それを実行できるはずです。

「いいね!」 2

素晴らしい!
リクエストの戻り値はHTTPコード400です。

Request URL: https://login.microsoftonline.com/APP_ID/saml2
Request method: POST
Status code: 400 Bad Request
Remote address: 20.190.173.144:443
Referrer policy: strict-origin-when-cross-origin

展開されたSAMLRequestは次のとおりです(プライバシーのため一部のIDは非表示にしています)。

<samlp:AuthnRequest AssertionConsumerServiceURL='https://INTERNAL_URL/auth/saml/callback' Destination='https://login.microsoftonline.com/APP_ID/saml2' ID='_11111111-1111-1111-1111-111111111111' IssueInstant='2021-12-14T22:33:29Z' Version='2.0' xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'> <saml:Issuer>https://INTERNAL_URL</saml:Issuer> </samlp:AuthnRequest>

Single sign-on SAML protocol - Microsoft identity platform | Microsoft Learn の例と比較して気づいた点として、私の AuthnRequest には次のパラメータがありません。

xmlns="urn:oasis:names:tc:SAML:2.0:metadata"

最近のリファクタリングで、SAML POSTバインディングの圧縮を意図せず追加してしまったようです。FIX: Do not compress SAML request for POST binding (#55) · discourse/discourse-saml@792a51c · GitHub でその動作変更を元に戻しました。

SAMLプラグインを更新してから、問題が改善されたかどうか確認していただけますでしょうか?

「いいね!」 4

David様

FIX: Do not compress SAML request for POST binding (#55) · discourse/discourse-saml@792a51c · GitHub にアップデートした後、SAML認証はこちらで正常に戻りました。

ご協力とプラグインへの多大な貢献に感謝いたします。

「いいね!」 1

このトピックは20時間後に自動的に閉じられました。返信はもうできません。