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

В рамках этой модели легко реализуется единый вход, а приложение больше не должно выполнять следующие задачи:

  • проверка подлинности пользователей;

  • хранение учетных записей пользователей и паролей;

  • подключение к корпоративным каталогам для поиска данных удостоверения пользователей;

  • интеграция с системами удостоверений, реализованных для других платформ или разработанных другими организациями.

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

Не только федерация

Изначально модель удостоверений на основе утверждений была предназначена для создания федерации между организациями, однако со временем стало ясно, что утверждения можно использовать не только для федерации. Некоторые из исходных терминов сохранились до сих пор. Например, при использовании WIF для обработки утверждений в приложении ASP.NET необходимо применить компонент WIF, называемый WSFederationAuthenticationModule. Слово "federated" (федеративный) не должно вводить в заблуждение. Приложения, в которых задачи проверки подлинности и авторизации делегированы внешним средствам, обладают очевидными преимуществами. Любая организация, в которой используется (или планируется использовать) несколько веб-приложений или веб-служб, только выиграет от внедрения модели удостоверений на основе утверждений.

Введение в удостоверения на основе утверждений

В данном разделе приведена терминология и изложены основные концепции новой архитектуры удостоверений.

Удостоверение

Термин "удостоверение" весьма неоднозначен. Например, в данном разделе он используется для описания проверки подлинности и авторизации. Однако при описании модели программирования в WIF под термином "удостоверение" подразумевается набор атрибутов, описывающих пользователя или какой-либо объект в системе, который необходимо защитить.

Утверждение

Под утверждением понимается часть сведений из удостоверения, например имя, адрес электронной почты, возраст, принадлежность к роли "Продажи". Чем больше утверждений получает приложение, тем больше известно о пользователе. Может возникнуть вопрос, почему используется термин "утверждения", а не "атрибуты", обычно используемый при описании корпоративных каталогов. Отличие заключается в методе доставки. В рамках данной модели приложение не выполняет поиск атрибутов пользователя в каталоге. Вместо этого пользователь отправляет приложению утверждения, а приложение их проверяет. Каждое утверждение создается поставщиком, и уровень доверия к утверждению соответствует уровню доверия к поставщику. Например, вы можете доверять утверждению, выпущенному контроллером домена вашей организации, больше, чем утверждению, выпущенному самим пользователем. WIF предоставляет утверждения, относящиеся к типу Claim, у которого есть свойство Issuer, позволяющее определить, кто выпустил удостоверение.

Маркер безопасности

Пользователь отправляет приложению набор утверждений вместе с запросом. В случае веб-службы утверждения передаются в заголовке безопасности конверта SOAP. В случае веб-приложения, работающего в браузере, утверждения поступают по запросу HTTP POST из браузера пользователя. Впоследствии, если необходимо создать сеанс, утверждения могут быть кэшированы в куки-файл. Независимо от способа получения утверждений их необходимо сериализовать, для чего используются маркеры безопасности. Маркер безопасности представляет собой сериализованный набор утверждений с цифровой подписью службы, выдающей сертификаты. Цифровая подпись важна: она не позволяет пользователю сформировать и отправить произвольный набор утверждений. В некоторых ситуациях, когда шифрование не требуется или нежелательно, можно использовать неподписанные маркеры, однако в данном разделе такие ситуации не рассматриваются.

Одной из ключевых функций WIF является возможность создавать и считывать маркеры безопасности. WIF и .NET Framework выполняют всю связанную с шифрованием работу и предоставляют приложению набор доступных для чтения утверждений.

Службы, выдающие сертификаты

Существует множество служб, выдающих сертификаты, начиная с контроллеров домена, выпускающих билеты Kerberos, и заканчивая центрами сертификации, выпускающими сертификаты X.509, однако в данном разделе рассматриваются только службы, выпускающие маркеры безопасности с утверждениями. Службой, выдающей сертификаты, является веб-приложение или веб-служба, умеющая выпускать маркеры безопасности. Для выпуска надлежащих утверждений такая служба должна располагать достаточными сведениями о проверяющей стороне и пользователе, отправившем запрос. Эта служба также отвечает за взаимодействие с хранилищами пользователей, в которых выполняется поиск утверждений, и проверку подлинности пользователей.

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

Стандарты

Чтобы обеспечить возможность взаимодействия, в предыдущем сценарии используются стандарты WS-*. Загрузка политики выполняется по стандарту WS-MetadataExchange, а сама политика структурируется согласно спецификации WS-Policy. Служба STS предоставляет конечные точки, в которых реализована спецификация WS-Trust, описывающая процедуры запроса и получения маркеров безопасности. На сегодняшний день большинство служб маркеров безопасности выпускают маркеры в формате SAML (Security Assertion Markup Language). SAML представляет собой принятый в отрасли XML-словарь, используемый для представления утверждений в пригодном для взаимодействия виде. При использовании нескольких платформ это позволяет взаимодействовать со службой STS, построенной на базе совершенно иной платформы, и обеспечить единый вход для всех приложений независимо от платформы.

Приложения, работающие в браузере

Модель удостоверений на основе утверждений используется не только в интеллектуальных клиентах. Эта модель также может использоваться в приложениях, работающих в браузерах (также известных как пассивные клиенты). В приведенном ниже сценарии изложены принципы работы пассивных клиентов.

Сначала пользователь открывает в браузере веб-приложение, поддерживающее утверждения (приложение проверяющей стороны). Веб-приложение перенаправляет браузер на службу STS для проверки подлинности пользователя. Служба STS размещена в простом веб-приложении, которое считывает входящий запрос, выполняет проверку подлинности пользователя с помощью стандартных механизмов протокола HTTP, создает маркер SAML и возвращает код на языке JavaScript, в результате выполнения которого браузер инициирует запрос HTTP POST для отправки маркера SAML обратно проверяющей стороне. Текст запроса POST содержит утверждения, запрошенные проверяющей стороной. На этом этапе проверяющая сторона обычно упаковывает утверждения в куки-файл, чтобы не выполнять перенаправление пользователя при каждом запросе.

Информационные карточки и селектор удостоверений

WIF предоставляет программные интерфейсы (API) для сериализации информационных карточек. С помощью этих интерфейсов можно выпускать управляемые карточки и реализовать вход в приложения с помощью информационных карточек. Дополнительные сведения Дополнительные сведения о см. в разделе Использование CardSpace

Селектор удостоверений предоставляет следующие возможности:

  • позволяет работать с несколькими удостоверениями для Интернета;

  • позволяет пользователям выбирать необходимое удостоверение для проверяющей стороны;

  • позволяет обеспечить конфиденциальность пользователей.

См. также

Основные понятия

Юридические уведомления