Создание службы STS
Служба 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.