Я пытаюсь настроить SAML между MS Azure AD и сервером WebSphere v9 CF11, который находится в AWS. Но он не распознает настройку TAI
Я выполнил все шаги здесь: https://www.ibm.com/support/knowledgecenter/en/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/tsec_enable_saml_sp_sso.html и здесь https://www.ibm.com/support/knowledgecenter/en/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_configuresamlssopartners.html
Я установил приложение SAMLSA в WebSphere, импортировал файл метаданных, предоставленный моим администратором Azure, а также импортировал сертификат. Я настроил перехватчик ACSTrustAssociationInterceptor и ввел (как я думал) правильный sso_1.sp.acsUrl и другие настройки для сервера.
Журналы SystemOut показывают, что ACSTrustAssociationInterceptor загружается:
SECJ0121I: Класс инициализации ассоциации доверия com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor успешно загружен
но версия нулевая:
SECJ0122I: Подпись перехватчика инициализации Trust Association:
После настройки всего, как указано выше, когда я перехожу по URL-адресу, он просто показывает:
Ошибка 403: Ошибка аутентификации
И в журнале есть ошибки об отсутствующем файле cookie:
SECJ0126E: Ошибка ассоциации доверия во время проверки. Исключением является com.ibm.websphere.security.WebTrustAssociationFailedException: CWWSS8017E: Ошибка аутентификации: файл cookie для единого входа отсутствует или не может быть проверен. Войдите в систему SAML Identity Provider и повторите попытку.
Как будто его никогда не «перехватывали», чтобы передать. Просто терпит неудачу. Сетевой трафик не идет на сервер AD
При переходе по URL-адресу он должен перенаправить меня на вход в MS, а затем обратно в приложение, но это не так.
Похоже, вам не хватает определения свойства sso_1.sp.login.error.page. Без этого свойства ожидается, что пользователь будет обращаться к поставщику удостоверений, чтобы инициировать вход; если вы определяете свойство и устанавливаете его значение на страницу входа вашего IdP, то 403, который вы получаете (в результате отсутствия аутентификации), в конечном итоге перенаправит вас к IdP, чтобы инициировать процесс входа оттуда.
Подробнее здесь, в описании "стиля закладок": https://www.ibm.com/support/knowledgecenter/en/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/cwbs_samlssosummary.html.
Таким образом, если URL-адрес моего приложения — myapp.com/app, а приложение samlsps — myapp.com/samlsps/приложения, у меня будут следующие настройки: sso_1.sp.acsUrl | myapp.com/samlsps/приложения sso_1.sp.idMap | idAssertion sso_1.idp_1.EntityID | sts.windows.net{appID из Azure} sso_1.idp_1.SingleSignOnUrl | логин.микрософтонлайн.com{appID из Azure}/saml2 sso_1.idp_1.error.page | логин.микрософтонлайн.com{идентификатор приложения из Azure}/saml2
WAS поддерживает единый вход, инициированный поставщиком удостоверений (при переходе на страницу login.microsoft.com) по умолчанию, но требует специального кода, чтобы обеспечить работу единого входа, инициированного поставщиком услуг. Ссылка: ibm.com/support/knowledgecenter/SSEQTP_9.0.0/… Поток 1: вы получаете доступ к login.microsoftonline.com, входите в систему, и я полагаю, вы говорите, что вас перенаправляют на WAS, но не в ваше приложение. Если вы определите sso_1.sp.targetUrl и установите значение для URL-адреса вашего приложения, я думаю, что это решит эту проблему.
Поток 2. Получите доступ к приложению WAS, и вы будете перенаправлены на login.microsoftonline.com{appID из Azure}/saml2. Я полагаю, что это должна быть страница входа, инициированная поставщиком услуг, поэтому отсутствие AuthnRequest, отправленного из WAS, является проблемой. Самый простой способ исправить это - заменить URL-адрес sso_1.sp.login.error.page на URL-адрес страницы входа, инициированной IdP... Я не уверен, что в MS Azure есть один из них... если это не так вариант, то единственный способ исправить это - реализовать AuthnRequestProvider (см. предыдущую ссылку) и подключить его как вашу страницу login.error.page, чтобы включить инициацию SP.
Спасибо, Джексон. Я добавил страницу error.page и установил для нее то же значение, что и для параметра SingleSignOnURL. Он использует этот URL-адрес error.page, но не передает никаких параметров SAML. Ожидается, что я передам информацию о метаданных и верну URL-адрес в качестве параметров на эту страницу... Это MS Azure, поэтому, если я просто зайду на login.microsoftonline.com, он позволит мне войти в систему, но не передаст обратно и не показывать, что я вошел в систему, если я вернусь. Как будто TAI не передает «Я это приложение, и, пожалуйста, верните меня сюда после входа в систему».