У меня чистая установка AD FS 3.0, установленная на сервере Windows 2012. Я пытаюсь создать MFA во внутренней сети, используя это Codeplex.
Управление AD FS> Политики аутентификации
Когда я захожу на свой сайт adfs (https://adfs.xx.com/adfs/ls/IdpInitiatedSignon.aspx) и войдите с действующими учетными данными, я получаю следующую ошибку:
На месте
- Идентификатор действия: 00000000-0000-0000-3d00-0080000000e9
- Время ошибки: Mon, 01 Feb 2016 09:04:18 GMT
- Cookie: включен
- Строка пользовательского агента: Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 48.0.2564.97 Safari / 537.36
На сервере (Средство просмотра событий> Журналы приложений и обслуживания> AD FS> Администратор)
Уровень: ошибка, источник: AD FS, идентификатор события: 364, Категория задачи: Нет
.
Обнаружена ошибка во время пассивного запроса федерации.
Дополнительная информация
Имя протокола: Saml
Проверяющая сторона: http://adfs.xx.com/adfs/services/trust
Сведения об исключении: System.FormatException: входная строка имеет неправильный формат. в System.Text.StringBuilder.AppendFormat (поставщик IFormatProvider, формат String, аргументы Object []) в System.String.Format (поставщик IFormatProvider, формат String, аргументы Object []) в Neos.IdentityServer.MultiFactor.AuthenticationProvider.IsAvailableForUser(Утверждение identityClaim, контекст IAuthenticationContext) в Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandler.IsAvailableForUser (Claim identityClaim, IAuthenticationContext authContext) в Microsoft.IdentityServer.WebailableForUser (Claim identityClaim, IAuthenticationContext authContext), в Microsoft.IdentityServer.WebcessHouseContextContext, AuthenticationContextContext.AuthenticationContext.AuthenticationContext.AuthenticationContext. userData) в Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandler.Process (контекст ProtocolContext) в Microsoft.IdentityServer.Web.Authentication.AuthenticationOptionsHandler.Process (контекст ProtocolContext) в Microsoft.IdentityServer.Web.Authentication.AuthenticationOptionsHandler.
Я попытался решить проблему, проверив сертификаты SSL; все они установлены правильно. Ошибок пинга нет. Я также проверил код из проект и нет никаких недостатков.
Кто-нибудь знает об этой ошибке или подтолкнет меня в правильном направлении? Любая помощь очень ценится!
[Обновление 1]
Уровень логирования - уровень 2; основная ошибка.
[Обновление 2]
Увидеть Проблемы Codeplex.
[Обновление 3]
Новая версия доступен с исправленными ошибками. Сообщения об ошибках исправлены.
В справочнике Microsoft TechNet для ADFS 2.0 указано следующее для события 364:
Это событие может быть вызвано чем-либо неправильным в пассивном запросе. Это может произойти во время единого входа (SSO) или выхода из системы как для сценариев SAML, так и для сценариев WS-Federation.
Я понимаю, что вы используете более новую версию ADFS, но я не смог найти обновленную ссылку в документации 2012 R2. Однако описание в любом случае не так уж и полезно.
Ссылки из некоторых других источников обычно указывают на проблемы с сертификатом (проверка отзыва, отсутствие сертификата в цепочке) или временной сдвиг.
http://www.gfi.com/blog/how-to-resolve-adfs-issues-with-event-id-364/
Я знаю, что вы сказали, что сертификаты были установлены правильно, но вы можете дважды проверить, можете ли вы завершить проверку отзыва, и цепочка проверяется. Самый простой способ сделать это - открыть сертификат на сервере из оснастки «Сертификаты» и убедиться, что на вкладках «Общие» и «Путь сертификации» отсутствуют сообщения об ошибках.
У меня были проблемы с перекосом времени, укусившие меня в других сценариях аутентификации, поэтому обязательно убедитесь, что все ваши часы совпадают.
В другом потоке, с которым я столкнулся, упоминалась проблема с именами SPN. Я знаю, что при настройке среды ADFS 2012 R2 у меня возникла проблема с регистрацией SPN, потому что полное доменное имя моего сервера было таким же, как и предполагаемое имя службы федерации (adfs.domain.com), поэтому зарегистрировать SPN для ADFS не удалось. Я исправил это, изменив имя хоста на другое и вручную зарегистрировав SPN. К сожалению, я не помню, вызвала ли эта проблема событие 364.
Мне любопытно, что вы не упомянули, если пробовали, проверяли ли вы аутентификацию в ADFS без расширения MFA. Имя расширения, отображаемое в стеке исключений, похоже, указывает на то, что это часть проблемы, но этот тест может помочь вам исключить проблемы с другими аспектами развертывания ADFS.
Наконец, если ничего из вышеперечисленного не помогает, я бы перепроверил документацию по расширению, чтобы убедиться, что вы не пропустили ни одного шага в настройке. Надеюсь, это поможет!
Я столкнулся с этой проблемой в Windows Server 2016, и в моей настройке она оказалась довольно простой. Проблема в том, что страница не была включена. Когда я попытался войти в систему, я получил ошибку 364.
Ссылка на ответ на мою проблему: https://blogs.technet.microsoft.com/rmilne/2017/06/20/how-to-enable-idpinitiatedsignon-page-in-ad-fs-2016/
Set-AdfsProperties –EnableIdpInitiatedSignonPage $True
У меня была такая же проблема в Windows Server 2016. Оказалось, что поставщик MFA определил доступные LCID (языки) для en-US
только но мой браузер не отправил en
или en-US
как принятый язык.
Настройка en-US
как принятый язык в браузере помогло временно.
Но поскольку я сам написал поставщика MFA, я определил как минимум CultureInfo.InvariantCulture.LCID
как один из AvailableLcids
в моем IAuthenticationAdapterMetadata
реализация. Это решило проблему.