В Visual Studio откройте меню "Файл" и выберите "Создать", "Веб-сайт". Выберите пункт "Служба STS WCF".
В файле web.config можно заметить ряд отличий от файла web.config для типичного веб-сайта ASP.NET.
- В этот файл добавлены указанные ниже
параметры приложения.
Копировать код <appSettings> <add key="IssuerName" value="PassiveSigninSTS"/> <add key="SigningCertificateName" value="CN=STSTestCert"/> <add key="EncryptingCertificateName" value=""/> </appSettings>
- Всем пользователям предоставляется доступ к
метаданным федерации. В метаданных федерации содержатся сведения об
открытом ключе сертификата для подписи маркера, конечных точках,
предоставляемых службой STS, и выданных утверждениях.
Копировать код <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" />
- Тип проверки подлинности изменен с "Windows"
на "None" (отсутствует):
Копировать код <authentication mode="None">
- Добавлены служба проверки подлинности, служба
профилей и служба ролей:
Копировать код <system.web.extensions> <scripting> <webServices> <!-- Раскомментируйте этот раздел, чтобы включить службу проверки подлинности. Если необходимо, включите строку requireSSL="true". <authenticationService enabled="true" requireSSL = "true|false"/> --> <!-- Раскомментируйте эти строки, чтобы включить службу профилей и выбрать свойства профиля, которые можно загружать и изменять в AJAX-приложениях ASP.NET. <profileService enabled="true" readAccessProperties="propertyname1,propertyname2" writeAccessProperties="propertyname1,propertyname2" /> --> <!-- Раскомментируйте этот раздел, чтобы включить службу ролей. <roleService enabled="true"/> --> </webServices> <!-- <scriptResourceHandler enableCompression="true" enableCaching="true" /> --> </scripting> </system.web.extensions>
- Добавлены следующие службы, конечные точки,
привязки и реакций на события:
Копировать код <system.serviceModel> <services> <service name="Microsoft.IdentityModel.Protocols.WSTrust.WSTrustServiceContract" behaviorConfiguration="ServiceBehavior"> <endpoint address="IWSTrust13" binding="ws2007HttpBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" bindingConfiguration="ws2007HttpBindingConfiguration"/> <host> <baseAddresses> <add baseAddress="http://localhost/STSService1/Service.svc" /> </baseAddresses> </host> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <bindings> <ws2007HttpBinding> <binding name="ws2007HttpBindingConfiguration"> <security mode="Message"> <message establishSecurityContext="false" /> </security> </binding> </ws2007HttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior"> <!-- Чтобы избежать раскрытия сведений о метаданных, перед развертыванием присвойте указанному ниже параметру значение false и удалите приведенную выше конечную точку метаданных --> <serviceMetadata httpGetEnabled="true" /> <!-- Чтобы получать сведения об исключениях при сбоях во время отладки, присвойте следующему параметру значение true. Чтобы избежать раскрытия сведений об исключениях, перед развертыванием присвойте указанному ниже параметру значение false --> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>
- Добавлена поддержка трассировки; чтобы ее
включить, раскомментируйте соответствующий блок. Дополнительные
сведения см. в разделах Трассировка WIF и
Инструкции:
включение трассировки.
Копировать код <!-- Раскомментируйте следующие строки, чтобы включить трассировку WIF: WIFTrace.e2e. Откройте файл трассировки с помощью средства SvcTraceViewer.exe (входит в состав пакета SDK для WCF корпорации Майкрософт) или средства просмотра XML. Сведения о включении трассировки WCF см. в MSDN. --> <!--<system.diagnostics> <sources> <source name="Microsoft.IdentityModel" switchValue="Verbose"> <listeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="WIFTrace.e2e" /> </listeners> </source> </sources> <trace autoflush="true" /> </system.diagnostics>-->
Откройте файл CustomSecurityTokenService.cs в папке App_Code.
- Обновите строку
static readonly string[] ActiveClaimsAwareApps
, включив в нее URL-адреса приложений проверяющей стороны, для которых данная служба STS будет выпускать маркеры.
- Добавьте в переопределенный метод
GetOutputClaimsIdentity утверждения, необходимые приложению
проверяющей стороны от службы STS, а также настраиваемые
утверждения, которые должна выдавать служба STS.
Ниже перечислены обязательные методы, реализованные в файле CustomSecurityTokenService.cs.
- GetScope. Этот метод получает интерфейс IClaimsPrincipal
вызывающей стороны и входящий маркер безопасности запроса и
возвращает конфигурацию для запроса выдачи маркера, представленную
классом Scope.
В этом методе можно нормализовать адрес проверяющей стороны и
выбрать ключи для подписи и шифрования. Как правило, маркеры
безопасности шифруются таким образом, чтобы их могла прочитать
только проверяющая сторона.
- GetOutputClaimsIdentity. Этот метод получает интерфейс
IClaimsPrincipal
вызывающей стороны, входящий маркер безопасности запроса и объект
Scope,
возвращаемый методом GetScope, и возвращает объект IClaimsIdentity,
который будет включен в выданный маркер. Это позволяет определить,
какие утверждения включены в маркер.