Эмблема WIF

Windows® Identity Foundation (WIF) — это платформа для построения приложений, поддерживающих удостоверения. Платформа поддерживает на уровне абстракций протоколы WS-Trust и WS-Federation и предоставляет разработчикам программные интерфейсы (API) для построения служб маркеров безопасности (STS) и приложений, поддерживающих утверждения. Приложения могут использовать WIF для обработки маркеров, выданных службами STS, и принятия решений на основе удостоверений на уровне веб-приложения или веб-службы.

Ниже перечислены основные возможности WIF.

  • Создание приложений, поддерживающих утверждения (приложений проверяющей стороны). WIF помогает разработчикам создавать приложения, поддерживающие утверждения. Помимо новой модели утверждений эта платформа предлагает разработчикам богатый набор программных интерфейсов, позволяющих принимать решения по доступу пользователей на основании утверждений. WIF также предлагает разработчикам единый интерфейс программирования, если они создают свои приложения в средах ASP.NET или WCF. Дополнительные сведения см. в разделе Потребление утверждений - приложения проверяющей стороны.

  • Шаблоны Visual Studio WIF предлагает встроенные шаблоны Visual Studio для поддерживающих утверждения приложений веб-сайтов ASP.NET и веб-служб WCF и сокращает время на знакомство с моделью программирования на основе утверждений. Дополнительные сведения см. в разделе Шаблоны Visual Studio.

  • Установление отношений доверия между приложением, поддерживающим утверждения, и службой STS WIF предлагает служебную программу под названием FedUtil, которая позволяет легко устанавливать отношения доверия между приложениями, поддерживающими утверждения, и службой STS, например между службами федерации Active Directory2.0 и службой STS LiveID. FedUtil поддерживает приложения ASP.NET и WCF. Также эта программа интегрирована с Visual Studio, поэтому ее можно вызывать из обозревателя решений, щелкнув правой кнопкой проект и затем выбрав пункт "Добавить ссылку на службу STS", или из меню "Сервис" в Visual Studio. Дополнительные сведения см. в разделе FedUtil — служебная программа федерации для установления отношения доверия между проверяющей стороной и службой STS.

  • Элементы управления ASP.NET. Элементы управления ASP.NET упрощают разработку страниц ASP.NET для построения веб-приложений, поддерживающих утверждения. Дополнительные сведения см. в разделе Установление отношения доверия между приложением проверяющей стороны ASP.NET и службой STS с помощью элемента управления FederatedPassiveSignIn.

  • Преобразование утверждений в маркеры NT. WIF включает службу Windows под названием Служба c2WTS (Claims to Windows Token Service), которая выступает в роли посредника между поддерживающими утверждения приложениями и приложениями на основе маркеров NT. Она предоставляет разработчикам простой способ преобразования утверждений в удостоверение на основе маркера NT и позволяет регулировать доступ к ресурсам, которые запрашивают удостоверение на основе маркера NT у приложения, поддерживающего утверждения. Дополнительные сведения см. в разделе Общие сведения о службе c2WTS (Claims to Windows Token Service).

  • Добавление поддержки делегирования удостоверений в приложения, поддерживающие утверждения WIF предоставляет возможность поддерживать удостоверения исходных запрашивающих сторон в пределах нескольких служб. Эта возможность достигается за счет использования либо функции "ActAs", либо "OnBehalfOf" данной платформы и позволяет разработчикам добавлять поддержку делегирования удостоверений в приложения, поддерживающие удостоверения. Дополнительные сведения см. в разделах Интеграция с IIdentity и IPrincipal и Сценарий делегирования удостоверения.

  • Создание пользовательских служб маркеров безопасности (STS). WIF значительно облегчает создание пользовательской службы STS, которая поддерживает протокол WS-Trust. Такая служба также называется "активной службой STS".

    Кроме того, платформа также обеспечивает возможности для создания служб STS, которые поддерживают протокол WS-Federation для включения клиентов веб-браузеров. Такие службы также называются "пассивными службами STS".

    Платформа включает встроенные шаблоны Visual Studio для создания служб STS ASP.NET и WCF. Эти шаблоны позволяют создавать простые службы STS, а разработчики могут расширять их и реализовывать производственные службы, соответствующие их потребностям. Дополнительные сведения см. в разделах Инструкции: создание службы STS ASP.NET и Инструкции: создание службы STS WCF.

WIF поддерживает следующие основные сценарии.

  • Федерация. WIF позволяет создать федерацию между двумя или более партнерами. Поддержка построения приложений, поддерживающих утверждения (проверяющей стороны), и служб STS помогает реализовывать такие сценарии. Дополнительные сведения см. в разделе Сценарий федерации.

  • Делегирование удостоверений. WIF позволяет поддерживать удостоверения сразу для нескольких служб, поэтому разработчики могут реализовать сценарий делегирования удостоверений. Дополнительные сведения см. в разделе Сценарий делегирования удостоверения.

  • Многоэтапная проверка подлинности. Требования к проверке подлинности для доступа к различным ресурсам в рамках одного приложения могут различаться. WIF предоставляет разработчикам возможность создания приложений, которые могут предъявлять возрастающие требования к проверке подлинности (например, начальный вход с проверкой подлинности с помощью имени пользователя и пароля, после чего используется проверка подлинности на основе смарт-карты). Дополнительные сведения см. в разделе Сценарий многоэтапной проверки подлинности.

WIF упрощает использование преимуществ модели удостоверений на основе утверждений, описанной в этой теме. В этой теме приводится обзор новых возможностей, предлагаемых в Windows® Identity Foundation (WIF) для обработки утверждений. Дополнительные сведения см. в Техническом документе по Windows Identity Foundation для разработчиков.

Доступ к утверждениям через Thread.CurrentPrincipal

Для доступа к набору утверждений текущего пользователя в приложении проверяющей стороны используйте Thread.CurrentPrincipal.

В следующем примере кода показано использование этого метода для получения интерфейса IClaimsIdentity:

  Копировать код
IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

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

Тип утверждения роли

Частью настройки приложения проверяющей стороны является определение типа утверждения роли. Этот тип утверждения используется методом IsInRole. Тип утверждения по умолчанию — http://schemas.microsoft.com/ws/2008/06/identity/claims/role.

Утверждения, извлеченные компонентом Windows Identity Foundation из маркеров различных типов

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

Тип маркера

Создаваемое утверждение

Сопоставление с маркером доступа Windows

SAML 1.1

  1. Все утверждения из GetOutputClaimsIdentity

  2. Утверждение http://schemas.microsoft.com/ws/2008/06/identity/claims/confirmationkey, которое содержит сериализованный XML-код ключа подтверждения, если маркер содержит маркер проверки.

  3. Утверждение http://schemas.microsoft.com/ws/2008/06/identity/claims/samlissuername из элемента Issuer.

  4. Утверждения AuthenticationMethod и AuthenticationInstant, если маркер содержит инструкцию проверки подлинности.

В дополнение к утверждениям в разделе "SAML 1.1", кроме утверждений типа http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, будут добавлены утверждения, связанные с проверкой подлинности Windows, и удостоверение будет представлено в WindowsClaimsIdentity.

SAML 2.0

См. "SAML 1.1".

См. "SAML 1.1, сопоставление с учетной записью Windows".

X509

  1. Утверждения с различающимся именем X500, свойства emailName, dnsName, SimpleName, UpnName, UrlName, thumbprint, RsaKey (может извлекаться с помощью метода RSACryptoServiceProvider.ExportParameters из свойства X509Certificate2.PublicKey.Key), DsaKey (может извлекаться с помощью метода DSACryptoServiceProvider.ExportParameters из свойства X509Certificate2.PublicKey.Key), SerialNumber из сертификата X509.

  2. Утверждение AuthenticationMethod со значением http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/x509. Утверждение AuthenticationInstant со значением, равным времени проверки сертификата в формате XmlSchema DateTime.

  1. Использует полное доменное имя учетной записи Windows в качестве значения утверждения http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name. .

  2. Утверждения из сертификата X509, не сопоставленные с Windows, и утверждения из учетной записи Windows, полученные путем сопоставления сертификата с Windows.

UPN

  1. Утверждения сходны с утверждениями из раздела проверки подлинности Windows.

  2. Утверждение AuthenticationMethod со значением http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password. Утверждение AuthenticationInstant со значением, равным времени проверки пароля в формате XmlSchema DateTime.

Windows (Kerberos или NTLM)

  1. Утверждения, созданные из маркера доступа, такие как PrimarySID, DenyOnlyPrimarySID, PrimaryGroupSID, DenyOnlyPrimaryGroupSID, GroupSID, DenyOnlySID и Name.

  2. AuthenticationMethod со значением http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/ и название поставщика системы безопасности, проводящего проверку подлинности, в нижнем регистре (например, Kerberos, NTML, Negotiate и т. д.). Утверждение AuthenticationInstant со значением, равным времени создания маркера доступа Windows в формате XmlSchema DateTime.

Пара ключей RSA

  1. Утверждение http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa со значением RSAKeyValue.

  2. Утверждение AuthenticationMethod со значением http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/signature. Утверждение AuthenticationInstant со значением, равным времени проверки подлинности ключа RSA (то есть времени проверки подписи) в формате XMLSchema DateTime.

Тип проверки подлинности

Коды URI, выпущенные в утверждении "AuthenticationMethod"

Пароль

urn:oasis:names:tc:SAML:1.0:am:password

Kerberos

urn:ietf:rfc:1510

SecureRemotePassword

urn:ietf:rfc:2945

TLSClient

urn:ietf:rfc:2246

X509

urn:oasis:names:tc:SAML:1.0:am:X509-PKI

PGP

urn:oasis:names:tc:SAML:1.0:am:PGP

Spki

urn:oasis:names:tc:SAML:1.0:am:SPKI

XmlDSig

urn:ietf:rfc:3075

Не указано

urn:oasis:names:tc:SAML:1.0:am:unspecified