Вчера я опубликовал конкретный вопрос об ошибке, которую я получаю в ADFS, которая меня озадачила. Поскольку у меня очень ограниченный опыт устранения неполадок продуктов на базе Windows, Думаю, совет о том, как решить эту проблему, был бы очень полезен.
Какие шаги вы бы предприняли отсюда для дальнейшего устранения проблемы?
Выглядит многообещающе:
Одним из действительно полезных аспектов ADFS является то, что на страницах ASPX, которые поставляются с ADFS, есть возможность кодового уровня. Они могут быть полезны при добавлении кода для использования домашней области по умолчанию или для изменения поведения ADFS по собственным причинам. Они также обеспечивают простой способ выполнения пользовательской проверки полученных SAMLResponses. Это также может использоваться для манипулирования SAMLRespponse перед использованием ADFS для некоторых возможностей, которые не предоставляются с ADFS.
Обычно с входящими SAMLResponses можно проверить несколько стандартных вещей, и ADFS будет делать это также, но не всегда может выдать вам сообщение об ошибке, понятное человеку или понятное ему. Некоторые из этих примеров:
Проверка этих типичных деталей в полученной SAMLResponse поможет вам идентифицировать проблему, чтобы ваш партнер мог быстро справиться с ней.
Одним из распространенных запросов является возможность занести SAMLResponse в базу данных для каждого запроса, полученного ADFS. Для этого просто добавьте некоторый код в файл global.asax.cs, например, следующий фрагмент:
public void Application_BeginRequest()
{
HttpRequest request = HttpContext.Current.Request;
HttpResponse response = HttpContext.Current.Response;
if (!String.IsNullOrEmpty(request["SAMLResponse"]))
{
SaveSamlResponseToDB(request["SAMLResponse"].ToString());
}
}
После этого вы можете манипулировать SAMLResponse и выполнять на нем пользовательскую проверку. Это обеспечивает механизм дополнительной проверки, выходящий за рамки того, что делает ADFS current, и очень полезный для различных сценариев тестирования.
Основываясь на предложениях администратора Windows, я сделал следующее, что решило проблему.
На данный момент ошибка произошла только для некоторого подмножества пользователей AD. На этих пользователях я сбросил их пароли, что и решило проблему.
Хотя я не совсем понимаю, почему это началось и как эти шаги исправили это, моя теория заключается в том, что не использование одной учетной записи службы для управления всем этим привело к тому, что были написаны файлы, которые не могли быть прочитаны процессами, запущенными под другой учетной записью.
Надеюсь, это кому-нибудь поможет.