خطأ AzureAD AADSTS7500525 باستخدام المكون الإضافي SAML

مرحباً!!

كانت إضافة SAML تعمل مع AzureAD الخاص بنا، ولكن بالأمس بعد الترقية إلى آخر تثبيت، بدأنا في رؤية الأخطاء التالية عندما يحاول المستخدمون المصادقة عبر SAML:

تسجيل الدخول
عذرًا، ولكننا نواجه مشكلة في تسجيل دخولك.

AADSTS7500525: كان هناك خطأ في XML في رسالة SAML في السطر 1، الموضع 1. تحقق من أن محتوى XML لرسائل SAML يتوافق مع مواصفات بروتوكول SAML.

يشير هذا الرابط Azure AD SAML2 request rejected: AADSTS7500525 - Microsoft Q&A إلى أن هذا يمكن أن يكون سببه “طلبات مصادقة SAML المضغوطة” التي لا يدعمها AzureAD.

تتضمن تثبيتات ديسمبر الكثير من التغييرات على SAML (التكوين عبر إعدادات الموقع، على سبيل المثال)، ولكن لم أتمكن من تحديد ما إذا كان هناك أي تغيير متعلق بطلبات SAML قد يكون تسبب في ذلك.

تكوين SAML (يعمل بشكل جيد حتى التحديث):

## إعداد إضافة Saml
  DISCOURSE_SAML_TARGET_URL: https://login.microsoftonline.com/<<معرف التطبيق الخاص بنا>>/saml2
  DISCOURSE_SAML_CERT_FINGERPRINT: "<<بصمة الإصبع الخاصة بنا>>"
  DISCOURSE_SAML_REQUEST_METHOD: POST
  #DISCOURSE_SAML_FULL_SCREEN_LOGIN: true
  DISCOURSE_SAML_CERT: "-----BEGIN CERTIFICATE-----
<<حمولة الشهادة الخاصة بنا>>
-----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؟

هل هناك أي فرصة لمشاركة عنوان موقعك هنا، أو عبر رسالة خاصة؟

إعجاب واحد (1)

يحدث هذا كلما احتاج المستخدم إلى تسجيل الدخول (انتهت صلاحية جلسة أو حاول مستخدم جديد تسجيل الدخول).

بدأ هذا في الحدوث بعد التحديث إلى المراجعة 9334abe249 (كان على 959923d3cf من قبل)

عذرًا، ولكن يتم استضافة المنتدى الخاص بنا داخليًا في حساب AWS خاص، لذا لن تتمكن من الوصول إليه من خارج شبكتنا.

أين يظهر الخطأ؟ في سجلات Discourse؟ على شاشة المستخدم؟ في Azure؟

هل يمكنك مشاركة بعض لقطات الشاشة؟

إعجاب واحد (1)

حاولت أيضًا البحث عن شيء في سجلات discourse ولكن نظرًا لأن الخطأ يحدث على جانب Azure، لم أجد أي رسالة خطأ هناك.

في production.log، تتوقف عملية تسجيل الدخول هنا (ربما تنتظر ردًا من Azure):

Processing by StaticController#show as HTML
Parameters: {“id”=>“login”}
Rendered static/login.html.erb (Duration: 17.5ms | Allocations: 1440)
Completed 200 OK in 19ms (Views: 18.3ms | ActiveRecord: 0.0ms | Allocations: 2104)
Started GET “/session/csrf” for <> at 2021-12-14 18:28:16 -0300
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 337)
Started POST “/auth/saml” for <> at 2021-12-14 18:28:16 -0300
(saml) Setup endpoint detected, running now.
(saml) Request phase initiated.

يحاول الفريق المسؤول عن Azure الحصول على ملف XML الذي يتلقونه، لذا ربما نتمكن من رؤية شيء “مختلف” فيه. سأعلمك عندما يرسلونه إلي.

إعجاب واحد (1)

يحدث الخطأ بعد أن ينقر المستخدم على زر تسجيل الدخول.
ثم تتم إعادة توجيهه إلى صفحة تسجيل الدخول في Azure مع الخطأ التالي:

أخشى أنه من الصعب معرفة ما يحدث هنا دون الوصول إلى الموقع.

الخطوة التالية ستكون محاولة الحصول على ملف XML الذي تستقبله Azure، ومعرفة الخطأ فيه. يجب أن تكون قادرًا على القيام بذلك عن طريق التحقق من الحمولة في أدوات المطور في المتصفح، ثم فك تشفيرها باستخدام أداة مثل هذه

إعجابَين (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

طلب SAML المضخم هو (تم إخفاء بعض المعرفات للخصوصية):

<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 وهو أن طلب المصادقة الخاص بي لا يحتوي على المعلمة

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 إعجابات

مرحباً ديفيد،

بعد التحديث إلى https://github.com/discourse/discourse-saml/commit/792a51c9d1e93f4ee5e82244456478b71a1be276، عادت مصادقة SAML إلى طبيعتها هنا.

شكراً لك على المساعدة وكل العمل الذي قمت به على المكون الإضافي!

إعجاب واحد (1)

تم إغلاق هذا الموضوع تلقائيًا بعد 20 ساعة. لم يعد يُسمح بالردود الجديدة.