В комплект поставки Windows® Identity Foundation (WIF) входит программа FedUtil.exe. Она позволяет устанавливать доверие приложения проверяющей стороны к службам маркеров безопасности (STS). С ее помощью можно делать следующее:

В последующих разделах показано, как выполнять эти задачи с помощью FedUtil. Эти же задачи можно выполнять вручную, внося соответствующие изменения в файл web.config приложения проверяющей стороны (что и делает FedUtil).

Процедура установления доверия между проверяющей стороной WCF и STS с помощью FedUtil отличается от установления доверия между проверяющей стороной ASP.NET и STS, поскольку требуется также указывать настраиваемую конечную точку службы и включать шифрование.

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

1. Создание локальной службы STS

В этом упражнении создается локальная служба STS для использования совместно со службой WCF, поддерживающей утверждения. Для этого необходимо будет запустить FedUtil в среде Visual Studio. Это позволит тестировать приложения WCF с использованием службы STS, не предназначенной для производственной среды. Позже будет показано, как переключиться на использование службы STS для производственной среды.

Примечание.
Для корректной работы FedUtil необходимо запустить Visual Studio в режиме с повышенными правами.

В Visual Studio откройте меню "Файл" и выберите "Создать", "Веб-сайт". Выберите пункт "Служба WCF с поддержкой утверждений".

Затем щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду "Добавить ссылку на службу STS".

Откроется программа FedUtil. Откроется диалоговое окно FedUtil со страницей приветствия служебной программы федерации:

На этой странице необходимо заполнить два поля:

  1. Местоположение конфигурации приложения: укажите путь к файлу web.config службы WCF. Если программа FedUtil запущена не из Visual Studio или из меню "Сервис" в Visual Studio без открытия проекта, это поле будет пустым. Если программа FedUtil запущена из контекстного меню проекта в Visual Studio, данное поле уже будет содержать путь к файлу web.config этого проекта. Файл web.config должен к этому моменту существовать и находиться в состоянии по умолчанию (в том, в каком он был создан средствами Visual Studio). Если программа FedUtil запускается несколько раз для одного и того же файла web.config, она будет просто перезаписывать содержимое, добавляемое в web.config.

  2. URI приложения: укажите код URI своей службы WCF. Следует иметь в виду, что это SVC-файл. Если программа FedUtil запущена не из Visual Studio или из меню "Сервис" в Visual Studio без открытия проекта, это поле будет пустым. Если программа FedUtil запущена из контекстного меню проекта в Visual Studio, данное поле будет содержать два кода URI для этого проекта: один с именем localhost и другой с полным доменным именем данного компьютера (если оно определено). Этот код URI используется в качестве значения области при настройке приложения для поддержки утверждений. Он также используется в качестве первого URI аудитории. Если требуется задать дополнительные URI аудитории, это необходимо сделать вручную. Если код URI не является безопасным (т. е. не начинается с https://), при нажатии кнопки "Далее" появится соответствующее предупреждение.

После ввода необходимых сведений нажмите кнопку "Далее". Откроется страница "Сведения о приложении".

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

На странице "Служба STS" выберите "Создать новый проект STS в текущем решении":

Следует иметь в виду, что если программа FedUtil запущена не из Visual Studio или из меню "Сервис" в Visual Studio без открытия проекта, параметр "Создать проект службы STS в текущем решении" будет недоступен.

Нажмите кнопку "Далее". Откроется страница "Сводка".

На странице "Сводка" показаны данные, введенные в диалоговом окне "Сведения о приложении", выбранные имена службы и конечной точки, выбранный вариант в отношении создания STS, утверждения, запрашиваемые приложением, и изменения, которые FedUtil внесет в конфигурацию приложения.

Нажмите кнопку "Готово".

Если сейчас открыть файл web.config, можно увидеть, что он изменен программой FedUtil:

  • Элемент <configuration>/<configSections> теперь содержит ссылку на раздел конфигурации IdentityModel:

      Копировать код
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • Добавлены следующие настройки приложения:

      Копировать код
    <appSettings> <add key="FederationMetadataLocation" value="C:\inetpub\wwwroot\ClaimsAwareService1_STS\FederationMetadata\2007-06\FederationMetadata.xml" /> </appSettings>
    
  • Всем пользователям предоставлен доступ к метаданным федерации:

      Копировать код
    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • Элемент <system.Web>/<assemblies> содержит ссылку на сборку Microsoft.IdentityModel.dll:

      Копировать код
    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • В элементе <system.serviceModel> указано, что у службы, выбранной в FedUtil, появилась новая конечная точка:

      Копировать код
    <services> <service name="Service" behaviorConfiguration="ServiceBehavior"> <endpoint address="http://localhost:54280/ClaimsAwareService1/Service.svc" binding="ws2007FederationHttpBinding" contract="ClaimsAwareService1.IService" bindingConfiguration="ClaimsAwareService1.IService_ws2007FederationHttpBinding" /> <!-- Конечные точки службы --> <!--Закомментировано программой FedUtil--> <!--<endpoint address="" binding="wsHttpBinding" contract="ClaimsAwareService1.IService"><identity><dns value="localhost" /></identity></endpoint>--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>
    
  • Элемент <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> теперь содержит элемент <federatedServiceHostConfiguration /> со ссылкой на службу, выбранную в FedUtil. Настройка службы для поддержки утверждений выражается в следующем:

      Копировать код
    <behaviors> <serviceBehaviors> <behavior name="ClaimsAwareService1.ServiceBehavior" > <!-- Расширение реакции на событие, добавляющее в службу поддержку утверждений --> <federatedServiceHostConfiguration name="ClaimsAwareService1.Service" /> <!-- Во избежание раскрытия метаданных перед развертыванием присвойте следующему параметру значение false и удалите вышеуказанную конечную точку метаданных --> <serviceMetadata  httpGetEnabled="true"/> <!-- Чтобы получать сведения об исключениях при сбоях во время отладки, присвойте следующему параметру значение true.  Перед развертыванием замените значение на false, чтобы избежать раскрытия сведений об исключениях --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
    
  • Элемент <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> также содержит элемент <serviceCredentials> со ссылкой на тестовый сертификат на локальном компьютере.

      Копировать код
    <serviceCredentials> <!--Сертификат, добавленный программой FedUtil.  Subject='CN=DefaultApplicationCertificate', Issuer='CN=DefaultApplicationCertificate'.--> <serviceCertificate findValue="48BF03FCEDA703DE09E0F1F0CEFED60BB92B3DD8" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> </serviceCredentials>
    
  • Элемент <system.serviceModel> теперь содержит элемент <bindings> со списком утверждений, требуемых для службы WCF:

      Копировать код
    <bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService1.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="http://localhost:54908/ClaimsAwareService1_STS/Service.svc/mex" /> <claimTypeRequirements> <!--Далее перечислены утверждения, предлагаемые службой STS 'http://localhost:54908/ClaimsAwareService1_STS/Service.svc'. Добавьте или раскомментируйте утверждения, требуемые для вашего приложения, и затем обновите метаданные федерации этого приложения.--> <add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>
    
  • Наконец, элемент <configuration> содержит раздел конфигурации для Microsoft.IdentityModel, в котором указана локальная служба STS в качестве доверенного поставщика маркеров:

      Копировать код
    <microsoft.identityModel> <service name="ClaimsAwareService1.Service"> <audienceUris> <add value="http://localhost:54904/ClaimsAwareService1/Service.svc" /> </audienceUris> <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <trustedIssuers> <add thumbprint="0E2A9EB75F1AFC321790407FA4B130E0E4E223E2" name="CN=STSTestCert" /> </trustedIssuers> </issuerNameRegistry> </service> </microsoft.identityModel>
    
    Добавлен элемент <issuerNameRegistry>/<trustedIssuers>, в котором указан сертификат, используемый службой STS для подписания выдаваемых ею маркеров. Для подписания создаваемых маркеров служба STS будет использовать сертификат по умолчанию. Этот сертификат с именем STSTestCert автоматически добавляется в хранилище сертификатов для использования службой STS. Файл сертификата включается в проект службы STS. Пароль файла – STSTest. Его не следует использовать в производственной среде. Сертификат, используемый по умолчанию, можно заменить любым другим сертификатом. Убедитесь, что пользователь процесса IIS имеет доступ к закрытому ключу любого такого сертификата. Можно также создать тип, производный от IssuerNameRegistry, для выполнения программной проверки сертификатов доверенных поставщиков.

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

2. Регистрация существующей службы STS для производственной среды

В этом упражнении для службы WCF, поддерживающей утверждения, будет настроена служба STS для производственной среды с шифрованием. Обратите внимание, что в отличие от приложения проверяющей стороны ASP.NET служба WCF должна обязательно использовать шифрование.

В Visual Studio откройте меню "Файл" и выберите "Создать", "Веб-сайт". Выберите "Служба WCF". Щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду "Добавить ссылку на STS". Откроется программа FedUtil. На странице "Вас приветствует служебная программа федерации" проверьте правильность сведений о расположении конфигурации приложения и кода URI приложения, после чего нажмите кнопку "Далее".

На странице "Сведения о приложении" выберите имя настраиваемой службы и имя контракта конечной точки, после чего нажмите "Далее".

На странице "Служба STS" выберите "Использовать существующую STS":

Укажите расположение конечной точки метаданных федерации для службы STS производственной среды. Можно нажать кнопку "Тестировать расположение" и проверить правильность имеющихся сведений. Эта кнопка инициирует запрос к указанной конечной точке, ответ на который выводится в окне веб-браузера по умолчанию. Указав службу STS, нажмите кнопку "Далее".

Следует иметь в виду, что если указать службу STS, сертификат которой не является доверенным для локального хранилища сертификатов, появится следующее предупреждение: "ID1025: Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует доверие к поставщику доверия". Чтобы продолжить настройку, несмотря на предупреждение, нажмите кнопку "Да". В противном случае нажмите "Нет" и выберите другую службу STS.

Откроется еще одна страница со сведениями о приложении и предложением выбрать режим шифрования.

Примечание.
Шифрование необходимо включать при запуске FedUtil для службы WCF. В противном случае будет выдано сообщение об ошибке.

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

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

Если выбрать существующий сертификат, программа FedUtil выведет список сертификатов из локального хранилища. Сертификат должен иметь закрытый ключ и имя субъекта.

В данном упражнении можно использовать сертификат по умолчанию или выбрать существующий сертификат. Сделав выбор, нажмите кнопку "Далее".

Откроется страница "Предлагаемые утверждения".

На ней приводится список утверждений, предлагаемых службой STS. FedUtil формирует этот список путем загрузки метаданных из службы STS и их синтаксического разбора. По умолчанию FedUtil настраивает поддержку утверждений в службе WCF так, чтобы в ней требовались только утверждения об именах и ролях. О том, как настроить дополнительные утверждения в качестве обязательных для службы, см. в разделе "Как настроить приложение для поддержки дополнительных обязательных утверждений". Если какие-либо утверждения, требуемые вашей службе, не предлагаются службой STS, обратитесь к администратору STS с соответствующей просьбой.

Нажмите кнопку "Далее". Откроется страница "Сводка".

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

Если был выбран тестовый сертификат, на странице сведений о приложении будет выведено следующее примечание: "Выбранный сертификат приложения: в личное хранилище сертификатов и хранилище сертификатов доверенных лиц будет добавлен новый сертификат с именем субъекта 'CN=DefaultApplicationCertificate', если его еще там нет". Если выбран существующий сертификат, будет показан его отпечаток.

На странице сводки также имеется флажок "Планировать ежедневное автоматическое обновление метаданных этого приложения". Если установить этот флажок, FedUtil создаст задачу обновления метаданных приложения и запланирует ее ежедневное выполнение в полночь. Дополнительные сведения см. в разделе Инструкции: управление отношениями доверия с помощью FedUtil.

Нажмите кнопку "Готово".

Если сейчас открыть файл web.config, можно увидеть, что он изменен программой FedUtil:

  • Элемент <configuration>/<configSections> теперь содержит ссылку на раздел конфигурации IdentityModel:

      Копировать код
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • Добавлены следующие настройки приложения. "Указанная STS" здесь обозначает службу STS, указанную в FedUtil.

      Копировать код
    <appSettings> <add key="FederationMetadataLocation" value="<указанная STS>" /> </appSettings>
    
  • Всем пользователям предоставлен доступ к метаданным федерации:

      Копировать код
    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • Элемент <system.Web>/<assemblies> содержит ссылку на сборку Microsoft.IdentityModel.dll:

      Копировать код
    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • В элементе <system.serviceModel> указано, что служба, выбранная в FedUtil, содержит новую конечную точку, использующую привязку WS-Federation HTTP:

      Копировать код
    <services> <service name="Service" behaviorConfiguration="ServiceBehavior"> <endpoint address="http://localhost:54280/ClaimsAwareService2/Service.svc" binding="ws2007FederationHttpBinding" contract="ClaimsAwareService2.IService" bindingConfiguration="ClaimsAwareService2.IService_ws2007FederationHttpBinding" /> <!-- Конечные точки службы --> <!--Закомментировано программой FedUtil--> <!--<endpoint address="" binding="wsHttpBinding" contract="ClaimsAwareService2.IService"><identity><dns value="localhost" /></identity></endpoint>--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>
    
  • Элемент <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> теперь содержит элемент <federatedServiceHostConfiguration /> со ссылкой на службу, выбранную в FedUtil. Настройка службы для поддержки утверждений выражается в следующем:

      Копировать код
    <behaviors> <serviceBehaviors> <behavior name="ClaimsAwareService2.ServiceBehavior" > <!-- Расширение реакции на событие, добавляющее в службу поддержку утверждений --> <federatedServiceHostConfiguration name="ClaimsAwareService2.Service" /> <!-- Во избежание раскрытия метаданных перед развертыванием присвойте следующему параметру значение false и удалите вышеуказанную конечную точку метаданных --> <serviceMetadata  httpGetEnabled="true"/> <!-- Чтобы получать сведения об исключениях при сбоях во время отладки, присвойте следующему параметру значение true.  Перед развертыванием замените значение на false, чтобы избежать раскрытия сведений об исключениях --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
    
  • Элемент <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> также содержит элемент <serviceCredentials> со ссылкой на тестовый сертификат на локальном компьютере. Это сертификат, указанный в FedUtil.

      Копировать код
    <serviceCredentials> <!--Сертификат, добавленный программой FedUtil.  Subject='CN=DefaultApplicationCertificate', Issuer='CN=DefaultApplicationCertificate'.--> <serviceCertificate findValue="48BF03FCEDA703DE09E0F1F0CEFED60BB92B3DD8" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> </serviceCredentials>
    
  • Элемент <system.serviceModel> теперь содержит элемент <bindings> со списком утверждений, требуемых для службы WCF. "Указанная STS" здесь обозначает службу STS, указанную в FedUtil.

      Копировать код
    <bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService2.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="https://<указанная STS>/Trust/Mex" /> <claimTypeRequirements> <!--Далее перечислены утверждения, предлагаемые службой STS '<указанная STS>'. Добавьте или раскомментируйте утверждения, требуемые для вашего приложения, и затем обновите метаданные федерации этого приложения.--> <add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/CommonName" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/EmailAddress" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/Group" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/UPN" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/manager" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/department" isOptional="true" />--> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>
    
    Обратите внимание, что закомментированы все утверждения, кроме утверждений об имени и роли. О том, как настроить дополнительные утверждения в качестве обязательных для службы, см. в разделе "Как настроить приложение для поддержки дополнительных обязательных утверждений".

  • Наконец, элемент <configuration> содержит раздел конфигурации для Microsoft.IdentityModel, в котором указана служба STS для производственной среды в качестве доверенного поставщика маркеров:

      Копировать код
    <microsoft.identityModel> <service name="ClaimsAwareService2.Service"> <audienceUris> <add value="http://localhost:54966/ClaimsAwareService2/Service.svc" /> </audienceUris> <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <trustedIssuers> <add thumbprint="5C8885A8E3D29D6BF6C9365E00B1BEA5EB284D1E" name="CN=<указанная STS>, OU=US-Federated Identity, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" /> </trustedIssuers> </issuerNameRegistry> </service> </microsoft.identityModel>
    

Программу FedUtil можно запускать повторно для переключения с локальной службы STS на службу для производственной среды и обратно. При каждом запуске FedUtil созданная ранее конфигурация перезаписывается. Однако FedUtil нельзя использовать для переключения из режима с использованием службы STS (локальной или для производственной среды) в режим без использования службы STS.

Следует также иметь в виду, что если при запуске FedUtil создается локальная служба STS, а затем подключается служба STS для производственной среды, в элемент <issuerNameRegistry> файла конфигурации вносятся два доверенных поставщика: локальная служба STS и служба STS для производственной среды. Непосредственно перед развертыванием приложения следует удалить локальную службу STS из реестра имен поставщиков.

3. Обновление метаданных федерации

По умолчанию при использовании FedUtil с указанием службы STS для производственной среды приложение настраивается так, чтобы в нем требовались только утверждения об именах и ролях. Это видно из содержимого элемента <claimTypeRequirements> в файле web.config приложения:

  Копировать код
<bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService2.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="https://<указанная STS>/Trust/Mex" /> <claimTypeRequirements> <!--Далее перечислены утверждения, предлагаемые службой STS 'http://<указанная STS>/Trust'. Добавьте или раскомментируйте утверждения, требуемые для вашего приложения, и затем обновите метаданные федерации этого приложения.--> <add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/CommonName" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/EmailAddress" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/Group" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/claims/UPN" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/manager" isOptional="true" />--> <!--<add claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/department" isOptional="true" />--> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>

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

FedUtil обновит метаданные федерации приложения в соответствии с изменениями, внесенными в список требуемых утверждений. После этого откройте файл FederationMetadata.xml приложения и просмотрите обновленный список требуемых утверждений. В нем теперь должны содержаться дополнительные утверждения, которые были раскомментированы в файле web.config приложения. Следует иметь в виду, что FedUtil также создает резервную копию файла web.config приложения.

  Копировать код
<fed:ClaimTypesRequested> <auth:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> <auth:ClaimType Uri="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> ... </fed:ClaimTypesRequested>

В файл web.config приложения также можно добавить настраиваемые типы утверждений. После этого следует попросить администратора STS обновить политику службы STS для приложения, чтобы оно выдавало утверждения новых типов.