Служба STS представляет собой компонент службы, выдающей сертификаты, который принимает входящие запросы, проверяет и расшифровывает входящие маркеры безопасности, извлекает утверждения из входящих маркеров, упаковывает утверждения в исходящие маркеры безопасности и шифрует исходящие маркеры безопасности. WIF позволяет легко собирать собственные службы STS с помощью создания обработчиков этих заданий, а также предоставляет точки расширения, позволяющие реализовывать собственную политику безопасности. Политика дает ответы на следующие вопросы.

  • Для каких приложений проверяющей стороны выдаются маркеры безопасности?

  • Какие утверждения важны для этих приложений?

  • Каким образом следует проводить проверку подлинности пользователей?

  • Имеются ли у разных приложений разные требования безопасности?

  • С какими партнерами выполняется федерация?

В большинстве случаев рекомендуется использовать существующую службу STS, например Службы федерации Active Directory® (AD FS) 2.0. Использовать WIF следует в том случае, если необходимо реализовать политику безопасности, которая не поддерживается существующими службами STS.

Дополнительные сведения о создании служб STS см. в разделах Инструкции: создание службы STS ASP.NET и Инструкции: создание службы STS WCF.

Архитектура службы STS

Свою службу STS можно создать в виде производной службы от SecurityTokenService, которая предоставляется WIF. В этом классе необходимо реализовать следующие два метода.

  1. GetScope. Этот метод получает интерфейс IClaimsPrincipal вызывающей стороны и входящий маркер безопасности запроса и возвращает конфигурацию для запроса выдачи маркера, представленную классом Scope. В этом методе можно нормализовать адрес проверяющей стороны и выбрать ключи для подписи и шифрования. Как правило, маркеры безопасности шифруются таким образом, чтобы их могла прочитать только проверяющая сторона.

    EncryptingCredentials определяет, шифруются ли маркеры. TokenEncryptionRequired и SymmetricKeyEncryptionRequired также имеют значение по умолчанию, равное true, чтобы не допустить выдачи небезопасных маркеров службой STS.

  2. GetOutputClaimsIdentity. Этот метод получает интерфейс IClaimsPrincipal вызывающей стороны, входящий маркер безопасности запроса и объект Scope, возвращаемый методом GetScope, и возвращает объект IClaimsIdentity, который будет включен в выданный маркер. Это позволяет определить, какие утверждения включены в маркер.

Образцы реализации этих методов см. в примерах кода или в разделах Веб-сайт службы STS ASP.NET и Служба STS WCF.