Проверка токена безопасности, выданного STS при вызове служб WCF

Мы расширили SecurityTokenService предоставлено Windows Identity Foundation (WIF). Он выдает токен, как и ожидалось, и токен SAML добавляется в заголовок SOAP при вызове всех остальных служб WCF, которые у нас есть.

Я вижу правильные значения в NotBefore а также NotOnOrAfter Saml Условия присутствуют в маркере безопасности.

Но удивительно, что каждый вызов других служб WCF завершается успешно, даже если служба вызывается после временной отметки, присутствующей в NotOnOrAfter Условие Saml, присутствующее в маркере безопасности в заголовке SOAP.

  1. Я не понимаю, почему это происходит. Нужно ли мне писать код, чтобы отклонить вызов с истекшим токеном безопасности?
  2. Нужно ли создавать пользовательскую привязку или поведение для нее?
  3. Разве WIF или WCF не позаботятся об этом автоматически?
  4. Замечательно, если бы вы могли указать мне на хорошую документацию, которая объясняет, что происходит под капотом!

Я использую.NET 4.0

2 ответа

Эта проверка предоставляется SecurityTokenHandler, Какой обработчик токена используется, зависит от вашего типа токена и вашей конфигурации.

Отвечая на ваши очки:

  1. Это зависит от обработчика токена. Для токенов saml это должно быть сделано для вас.
  2. Обычно - нет.
  3. Как в пункте 1.
  4. Я лично расстаюсь с Microsoft.IdentityModel.dll.

Проверьте ваш web.config для <microsoft.identityModel><service><securityTokenHandlers> раздел. Если он изменен и вы используете пользовательский обработчик, вы могли бы переопределить поведение по умолчанию, реализованное в SecurityTokenHandler.ValidateToken, Если нет, то Вы должны выяснить свой тип токена. Если это SAML1.1 или SAML2.0, то он должен быть проверен. Если нет, то, пожалуйста, поделитесь своим типом токена.

Вызов службы wcf будет отклонен после истечения даты ValitTo плюс время из параметра MaxClockSkew. Вы можете управлять этим параметром, настроив сервис.

Другие вопросы по тегам