#azure #single-sign-on #saml
Вопрос:
Я пытаюсь интегрировать свое приложение с Microsoft Azure SSO с помощью SAML. В отличие от SAML единого входа Google, их XML-файл не содержит формат идентификатора имени. Поэтому я предполагаю, что это «urn:oasis:имена:tc:SAML:1.1:nameid-формат:адрес электронной почты».
Вход в систему единого входа работает, но каким-то образом атрибуты, возвращаемые из Microsoft Azure, выглядят странно. То, что я ожидаю, — это информация о пользователе (например, имя, фамилия и другие атрибуты, которые я задаю в панели управления), вместо этого она возвращает что-то вроде:
[samlUserdata] => Array
(
[http://schemas.microsoft.com/identity/claims/tenantid] => Array
(
[0] => 123456-a43f-4dfd-8888-f5fa5e547790
)
[http://schemas.microsoft.com/identity/claims/objectidentifier] => Array
(
[0] => 123456-e20c-46f1-8888-204cc360d7d8
)
[http://schemas.microsoft.com/identity/claims/identityprovider] => Array
(
[0] => https://sts.windows.net/123456-a43f-4dfd-8888-f5fa5e547790/
)
[http://schemas.microsoft.com/claims/authnmethodsreferences] => Array
(
[0] => urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
)
)
Что я упускаю?
P.S. Я использую одну библиотеку PHP для входа в систему. Это работает с Google.
Ответ №1:
Поэтому я предполагаю, что это «urn:oasis:имена:tc:SAML:1.1:nameid-формат:адрес электронной почты».
Я полагаю , что более подходящим должен быть формат urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
, особенно если вы хотите оставить его неопределенным.
Чего мне не хватает?
Похоже, что ваш IDP SAML2, единый вход Microsoft Azure, неправильно настроен для предоставления вам утверждений/атрибутов. Я не думаю, что это имеет какое-либо отношение к форматам имен; речь идет о конфигурации IdP и ее политике выпуска атрибутов. Вы можете перепроверить это, посмотрев на необработанный XML-ответ SAML2, который должен быть передан обратно вашему SP. Если вы не найдете там никаких утверждений/атрибутов, то IdP ничего вам не выдает, и это то, что нужно с ними обсудить.
Ответ №2:
Данные Azure AD верны.
В Azure AD многие атрибуты являются идентификаторами GUID, и это то, что вы видите.
Вы заметите, что «authnmethodsreferences» — это простой текст.
Если вы передадите имя, фамилию и т.д. они также будут в виде обычного текста.
Комментарии:
1. Можете ли вы указать мне, как преобразовать данные в обычный текст, чтобы я мог прочитать информацию о пользователе (например, имя, адрес электронной почты)? Спасибо.
2. Как AAD передает имя пользователя и т.д.? Это идентификатор пользователя?
3. Это корпоративное приложение? В каком формате будут представлены претензии, если вы перейдете на вкладку «Протестировать это приложение»?