Служба STS представляет собой компонент службы, выдающей сертификаты, который принимает входящие запросы, проверяет и расшифровывает входящие маркеры безопасности, извлекает утверждения из входящих маркеров, упаковывает утверждения в исходящие маркеры безопасности и шифрует исходящие маркеры безопасности. WIF позволяет легко собирать собственные службы STS с помощью создания обработчиков этих заданий, а также предоставляет точки расширения, позволяющие реализовывать собственную политику безопасности. Политика дает ответы на следующие вопросы.
- Для каких приложений проверяющей стороны
выдаются маркеры безопасности?
- Какие утверждения важны для этих
приложений?
- Каким образом следует проводить проверку
подлинности пользователей?
- Имеются ли у разных приложений разные
требования безопасности?
- С какими партнерами выполняется
федерация?
В большинстве случаев рекомендуется использовать существующую службу STS, например Службы федерации Active Directory® (AD FS) 2.0. Использовать WIF следует в том случае, если необходимо реализовать политику безопасности, которая не поддерживается существующими службами STS.
Дополнительные сведения о создании служб STS см. в разделах Инструкции: создание службы STS ASP.NET и Инструкции: создание службы STS WCF.
Архитектура службы STS
Свою службу STS можно создать в виде производной службы от SecurityTokenService, которая предоставляется WIF. В этом классе необходимо реализовать следующие два метода.
- GetScope. Этот метод получает интерфейс IClaimsPrincipal
вызывающей стороны и входящий маркер безопасности запроса и
возвращает конфигурацию для запроса выдачи маркера, представленную
классом Scope.
В этом методе можно нормализовать адрес проверяющей стороны и
выбрать ключи для подписи и шифрования. Как правило, маркеры
безопасности шифруются таким образом, чтобы их могла прочитать
только проверяющая сторона.
EncryptingCredentials определяет, шифруются ли маркеры. TokenEncryptionRequired и SymmetricKeyEncryptionRequired также имеют значение по умолчанию, равное true, чтобы не допустить выдачи небезопасных маркеров службой STS.
- GetOutputClaimsIdentity. Этот метод получает интерфейс
IClaimsPrincipal
вызывающей стороны, входящий маркер безопасности запроса и объект
Scope,
возвращаемый методом GetScope, и возвращает объект IClaimsIdentity,
который будет включен в выданный маркер. Это позволяет определить,
какие утверждения включены в маркер.
Образцы реализации этих методов см. в примерах кода или в разделах Веб-сайт службы STS ASP.NET и Служба STS WCF.