Establecer confianza de un servicio de usuario de confianza de WCF a un STS mediante FedUtil

FedUtil.exe se proporciona con Windows® Identity Foundation (WIF). Le ayuda a establecer la confianza de una aplicación de usuario de confianza (RP) a los servicios de token de seguridad (STS). Proporciona las siguientes capacidades:

  • Registrar un STS de producción existente como un emisor de confianza de la aplicación de RP.

  • Ayudar a desarrollar una aplicación para notificaciones proporcionando un STS local.

  • Adaptar una aplicación existente para notificaciones.

  • Actualizar los metadatos de federación para una aplicación de RP.

  • Programar actualizaciones automáticas de los metadatos de federación para una aplicación de RP.

En las siguientes secciones se muestra cómo hacer cada una de estas tareas utilizando FedUtil. También puede hacerlas manualmente realizando los mismos cambios en el archivo web.config de la aplicación de RP que realiza FedUtil.

Utilizar FedUtil para establecer la confianza de un RP de WCF a un STS es diferente de establecer la confianza de un RP de ASP.NET a un STS, porque también debe especificar un extremo de servicio que desea configurar y debe habilitar el cifrado.

Nota

Dado que FedUtil cambia el archivo de configuración, podría modificar la configuración de seguridad existente de la aplicación. Aunque FedUtil comenta cualquier sección existente que no se necesite en lugar de eliminarla, debería revisar el archivo de configuración después de ejecutar FedUtil para asegurarse de que no ha comentado ninguna configuración de seguridad de la que dependa la aplicación. También observe que FedUtil hace un copia de seguridad del archivo de configuración existente.

1. Crear un STS local

En este ejercicio, creará un STS local para usarlo con nuestro servicio de WCF para notificaciones. Observe que debe ejecutar FedUtil desde dentro de Visual Studio para hacerlo. Esto resulta útil para probar sus aplicaciones de WCF con un STS no de producción. Después, obtendrá información sobre cómo puede pasar a utilizar un STS de producción.

Nota

Debe ejecutar Visual Studio en modo elevado para que FedUtil funcione correctamente.

En Visual Studio, abra el menú Archivo y seleccione Nuevo, Sitio web. Seleccione Servicio de WCF para notificaciones.

A continuación, haga clic con el botón secundario en el proyecto en el Explorador de soluciones y seleccione Agregar referencia STS:

392cd2c5-5098-44c7-9738-f43e40da090f

Así se ejecuta la herramienta FedUtil. Verá el cuadro de diálogo de FedUtil, comenzando con la página de bienvenida a la herramienta Federation Utility:

35d73636-c363-47cf-a67f-16b3ca195d40

Esta página le pide que escriba dos campos:

  1. Ubicación de configuración de la aplicación: especifique la ruta de acceso al archivo web.config de su servicio de WCF. Si ejecuta FedUtil desde fuera de Visual Studio, o lo ejecuta desde el menú Herramientas en Visual Studio sin tener abierto un proyecto, este campo estará vacío. Si ejecuta FedUtil haciendo clic con el botón secundario en un proyecto en Visual Studio, este campo ya contiene la ruta de acceso al archivo web.config de su proyecto. El archivo web.config ya debe existir y estar en su estado predeterminado (es decir, como fue generado por Visual Studio). Si ejecuta más de una vez FedUtil en el mismo archivo web.config, FedUtil simplemente sobrescribe el contenido que agrega al archivo web.config.

  2. URI de la aplicación: especifique el URI de su servicio de WCF. Observe que se trata de un archivo .svc. Si ejecuta FedUtil desde fuera de Visual Studio, o lo ejecuta desde el menú Herramientas en Visual Studio sin tener abierto un proyecto, este campo estará vacío. Si ejecuta FedUtil haciendo clic con el botón secundario en un proyecto en Visual Studio, este campo ya contiene dos URI de su proyecto: uno que utiliza localhost y otro que utiliza el nombre de dominio completo de su equipo, si está disponible. Este URI se utiliza como valor de dominio kerberos al configurar la aplicación para notificaciones. También se utiliza como primer URI de audiencia. Si desea especificar URI de audiencia adicionales, debe hacerlo manualmente. Si el URI no es seguro (es decir, no comienza con “https://”), se mostrará una advertencia al hacer clic en Siguiente.

Después haber proporcionado la información, haga clic en Siguiente. Verá la página Información de aplicación:

c869d84f-313b-436c-800c-48570365b607

Seleccione el nombre del servicio y nombre de contrato de extremo que desea configurar y, a continuación, haga clic en Siguiente. Si hay varios extremos en un servicio y solo desea configurar notificaciones para ciertos extremos, seleccione esos extremos.

En la página Security Token Service, seleccione Crear un nuevo proyecto de STS en la solución actual:

99a1a9de-cdf0-4a4a-96cb-ed23e64dade5

Tenga en cuenta que si ejecuta FedUtil desde fuera de Visual Studio, o si ejecuta FedUtil desde el menú Herramientas en Visual Studio sin tener abierto un proyecto, no estará disponible la opción Crear un nuevo proyecto de STS en la solución actual.

Haga clic en Siguiente. Aparece la Página de resumen:

b8770d17-c106-4567-9eec-a82dff94c093

La Página de resumen muestra la información que escribió en el cuadro de diálogo Información de aplicación, el servicio y extremo seleccionados, su elección para crear un nuevo STS, las notificaciones solicitadas por la aplicación y los cambios que FedUtil realizará en la configuración de la aplicación.

Haga clic en Finalizar.

Si examina el archivo web.config, verá que FedUtil lo ha modificado:

  • El elemento <configuration>/<configSections> ahora contiene una referencia a la sección de configuración IdentityModel:

    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • Se agregan los siguientes valores de configuración de la aplicación:

    <appSettings> <add key="FederationMetadataLocation" value="C:\inetpub\wwwroot\ClaimsAwareService1_STS\FederationMetadata\2007-06\FederationMetadata.xml" /> </appSettings>
    
  • Se ha concedido acceso a todos los usuarios a los metadatos de federación:

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • El elemento <system.Web>/<assemblies> contiene ahora una referencia al ensamblado Microsoft.IdentityModel.dll:

    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • En el elemento <system.serviceModel>, puede ver que el servicio que seleccionó en FedUtil tiene ahora un nuevo extremo:

    <services> <service name="Service" behaviorConfiguration="ServiceBehavior"> <endpoint address="https://localhost:54280/ClaimsAwareService1/Service.svc" binding="ws2007FederationHttpBinding" contract="ClaimsAwareService1.IService" bindingConfiguration="ClaimsAwareService1.IService_ws2007FederationHttpBinding" /> <!-- Service Endpoints --> <!--Commented out by FedUtil--> <!--<endpoint address="" binding="wsHttpBinding" contract="ClaimsAwareService1.IService"><identity><dns value="localhost" /></identity></endpoint>--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>
    
  • El elemento <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> ahora contiene un elemento <federatedServiceHostConfiguration /> que hace referencia al servicio seleccionado en FedUtil. Esto es lo que configura el servicio para notificaciones:

    <behaviors> <serviceBehaviors> <behavior name="ClaimsAwareService1.ServiceBehavior" > <!-- Behavior extension to make the service claims aware --> <federatedServiceHostConfiguration name="ClaimsAwareService1.Service" /> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata  httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
    
  • El elemento <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> también contiene un elemento <serviceCredentials> que hace referencia a un certificado de prueba en el equipo local.

    <serviceCredentials> <!--Certificate added by FedUtil.  Subject='CN=DefaultApplicationCertificate', Issuer='CN=DefaultApplicationCertificate'.--> <serviceCertificate findValue="48BF03FCEDA703DE09E0F1F0CEFED60BB92B3DD8" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> </serviceCredentials>
    
  • El elemento <system.serviceModel> ahora contiene un elemento <bindings> que enumera las notificaciones que requiere su servicio de WCF:

    <bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService1.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="https://localhost:54908/ClaimsAwareService1_STS/Service.svc/mex" /> <claimTypeRequirements> <!--Following are the claims offered by STS 'https://localhost:54908/ClaimsAwareService1_STS/Service.svc'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.--> <add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>
    
  • Finalmente, el elemento <configuration> contiene una sección de configuración de Microsoft.IdentityModel, que especifica el STS local como un proveedor de token de confianza:

    <microsoft.identityModel> <service name="ClaimsAwareService1.Service"> <audienceUris> <add value="https://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>
    

    Se agrega un elemento <issuerNameRegistry>/<trustedIssuers> para especificar el certificado que usa el STS para firmar los tokens que emite. El STS utilizará un certificado predeterminado para firmar los tokens que genera. Este certificado se denomina "STSTestCert" y se agrega automáticamente al almacén de certificados para que lo use el STS. El archivo de certificado se encuentra en el proyecto de STS. La contraseña del archivo es "STSTest". Esto no se debería utilizar en un ejercicio de producción. Puede reemplazar el certificado predeterminado por cualquier otro certificado. Asegúrese de que el usuario del proceso de IIS tiene acceso a la clave privada de ese tipo de certificado. También podría decidir crear un tipo derivado de IssuerNameRegistry para realizar una validación mediante programación de certificados de emisores de confianza.

También, si examina el Explorador de soluciones, verá que FedUtil ha agregado un nuevo proyecto a la solución. Este proyecto es el STS local. También observe que se ha agregado un documento de metadatos de federación a la aplicación de usuario de confianza y al STS local.

09caaebd-80f7-4904-ad9a-846cff4ab403

2. Registrar un STS de producción existente

En este ejercicio, utilizará un STS de producción, con cifrado, para nuestro servicio de WCF para notificaciones. Tenga en cuenta que, a diferencia de una aplicación de usuario de confianza de ASP.NET, un servicio de WCF debe utilizar cifrado.

En Visual Studio, abra el menú Archivo y seleccione Nuevo, Sitio web. Seleccione Servicio de WCF. Haga clic con el botón secundario en el proyecto en el Explorador de soluciones y seleccione Agregar referencia STS. Así se ejecuta la herramienta FedUtil. En la página de bienvenida de la herramienta Federation Utility, asegúrese de que la Ubicación de configuración de la aplicación y el URI de la aplicación son correctos y haga clic en Siguiente.

En la página Información de aplicación, seleccione el nombre del servicio y el nombre de contrato de extremo que desea configurar y haga clic en Siguiente.

En la página Security Token Service, seleccione Usar un STS existente:

796877b1-af1b-465a-a6ff-0ea20726d834

Debe especificar la ubicación del extremo de metadatos de federación para el STS de producción. Puede hacer clic en el botón Probar ubicación para asegurarse de que la ubicación es correcta. Este botón realiza una solicitud al extremo especificado y muestra la respuesta en el explorador web predeterminado. Después de haber especificado el STS, haga clic en Siguiente.

Tenga en cuenta que si especifica un STS que tiene un certificado en el que no confía el almacén de certificados local, verá el siguiente mensaje de advertencia: ”ID1025: Se ha procesado una cadena de certificados, pero termina en un certificado raíz en el que el proveedor de confianza no confía”. Si desea continuar de todos modos, haga clic en Sí. Si no es así, haga clic en No y seleccione un STS diferente.

Aparece otra página Información de aplicación, esta vez pidiéndole que seleccione Sin cifrado o Habilitar cifrado:

5cf3d371-369d-45a7-811a-93621415baaf

Nota

Debe habilitar el cifrado al ejecutar FedUtil en un servicio de WCF. Por otra parte, se mostrará un mensaje de error.

Seleccione Habilitar cifrado. Ahora debe seleccionar el certificado que utiliza el servicio para cifrar sus comunicaciones con el STS.

Utilizar el certificado predeterminado significa que si el STS local ya ha creado un certificado para cifrar tokens, este mismo certificado se utiliza de nuevo para el descifrado. Al registrar un STS de producción, esto no es muy común, porque el STS de producción probablemente no utilizará el mismo certificado que utilizó para el STS local. No debería utilizar esta opción en una solución de producción. Si ya tiene un certificado de servicio, puede que desee utilizar el mismo certificado.

Si selecciona un certificado existente, FedUtil muestra los certificados en el almacén de certificados local. El certificado debe tener una clave privada y un nombre de sujeto.

Para este ejercicio, puede utilizar el certificado predeterminado o seleccionar uno existente. Cuando haya acabado, haga clic en Siguiente.

Aparece la página Notificaciones ofrecidas:

4adec48c-5d53-4fc8-9917-21df43488fb9

Contiene una lista de notificaciones que proporciona el STS. FedUtil obtiene esta lista descargando los metadatos del STS y analizándolos. De forma predeterminada, FedUtil configura el servicio de WCF para notificaciones para que solo requiera notificaciones de rol y nombre. Para saber cómo configurar el servicio para que requiera notificaciones adicionales, consulte la sección "Cómo configurar la aplicación para que requiera notificaciones adicionales". Si su servicio requiere notificaciones que no proporciona el STS, debería ponerse en contacto con el administrador de STS y llegar a los acuerdos necesarios.

Haga clic en Siguiente. Aparece la Página de resumen:

e85e0f45-133f-4aff-b916-0509e25718b0

La Página de resumen muestra la información que escribió en el cuadro de diálogo Información de aplicación, el servicio y extremo seleccionados, si decidió usar un STS existente, si eligió habilitar el cifrado, las notificaciones solicitadas por la aplicación y los cambios que FedUtil realizará en la configuración de la aplicación.

Si seleccionó un certificado de pruebas, la información de la aplicación incluirá esta nota: “Certificado de aplicación seleccionado: se agregará un nuevo certificado con el nombre de sujeto 'CN=DefaultApplicationCertificate' a los almacenes de certificados personales y de usuarios de confianza, de no estar ya presentes”. Si seleccionó un certificado existente, verá la huella digital de ese certificado.

La Página de resumen también incluye una casilla denominada “Programar actualizaciones de metadatos diarias para esta aplicación”. Si activa esta casilla, FedUtil programará una tarea para actualizar los metadatos de la aplicación todas las noches a medianoche. Para obtener más información, vea Cómo: Realizar la administración de confianza mediante FedUtil.

Haga clic en Finalizar.

Si examina el archivo web.config, verá que FedUtil lo ha modificado:

  • El elemento <configuration>/<configSections> ahora contiene una referencia a la sección de configuración IdentityModel:

    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • Se agregan los siguientes valores de configuración de la aplicación. “Specified STS” hace referencia al STS que especificó en FedUtil.

    <appSettings> <add key="FederationMetadataLocation" value="<specified STS>" /> </appSettings>
    
  • Se ha concedido acceso a todos los usuarios a los metadatos de federación:

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • El elemento <system.Web>/<assemblies> contiene ahora una referencia al ensamblado Microsoft.IdentityModel.dll:

    <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    
  • En el elemento <system.serviceModel>, puede ver que el servicio que seleccionó en FedUtil ahora tiene un nuevo extremo que utiliza el enlace WS-Federation HTTP:

    <services> <service name="Service" behaviorConfiguration="ServiceBehavior"> <endpoint address="https://localhost:54280/ClaimsAwareService2/Service.svc" binding="ws2007FederationHttpBinding" contract="ClaimsAwareService2.IService" bindingConfiguration="ClaimsAwareService2.IService_ws2007FederationHttpBinding" /> <!-- Service Endpoints --> <!--Commented out by FedUtil--> <!--<endpoint address="" binding="wsHttpBinding" contract="ClaimsAwareService2.IService"><identity><dns value="localhost" /></identity></endpoint>--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>
    
  • El elemento <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> ahora contiene un elemento <federatedServiceHostConfiguration /> que hace referencia al servicio seleccionado en FedUtil. Esto es lo que configura el servicio para notificaciones:

    <behaviors> <serviceBehaviors> <behavior name="ClaimsAwareService2.ServiceBehavior" > <!-- Behavior extension to make the service claims aware --> <federatedServiceHostConfiguration name="ClaimsAwareService2.Service" /> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata  httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
    
  • El elemento <system.ServiceModel>/<behaviors>/<serviceBehavior>/<behavior> también contiene un elemento <serviceCredentials> que hace referencia a un certificado de prueba en el equipo local. Este es el certificado que especificó en FedUtil.

    <serviceCredentials> <!--Certificate added by FedUtil.  Subject='CN=DefaultApplicationCertificate', Issuer='CN=DefaultApplicationCertificate'.--> <serviceCertificate findValue="48BF03FCEDA703DE09E0F1F0CEFED60BB92B3DD8" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> </serviceCredentials>
    
  • El elemento <system.serviceModel> ahora contiene un elemento <bindings> que enumera las notificaciones que requiere su servicio de WCF. “Specified STS” hace referencia al STS que especificó en FedUtil.

    <bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService2.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="https://<specified STS>/Trust/Mex" /> <claimTypeRequirements> <!--Following are the claims offered by STS '<specified STS>'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.--> <add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/CommonName" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/EmailAddress" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/Group" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/UPN" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/title" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/manager" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/department" isOptional="true" />--> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>
    

    Observe que todas las notificaciones están comentadas excepto las notificaciones de rol y nombre. Para saber cómo configurar el servicio para que requiera notificaciones adicionales, consulte la sección "Cómo configurar la aplicación para que requiera notificaciones adicionales".

  • Finalmente, el elemento <configuration> contiene una sección de configuración de Microsoft.IdentityModel, que especifica el STS de producción como un proveedor de token de confianza:

    <microsoft.identityModel> <service name="ClaimsAwareService2.Service"> <audienceUris> <add value="https://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=<specified STS>, OU=US-Federated Identity, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" /> </trustedIssuers> </issuerNameRegistry> </service> </microsoft.identityModel>
    

Observe que puede ejecutar FedUtil repetidamente para cambiar entre un STS local y un STS de producción y viceversa. Cada vez que ejecuta FedUtil, simplemente sobrescribe la configuración que creó previamente. Sin embargo, no puede utilizar FedUtil para cambiar de utilizar un STS local o STS de producción a no utilizar ningún STS.

También tenga en cuenta que si ejecuta FedUtil y crea un STS local y, a continuación, cambia a un STS de producción, el elemento <issuerNameRegistry> del archivo de configuración contendrá dos emisores de confianza. Uno es el STS local y el otro es el STS de producción. Cuando esté listo para implementar la aplicación, debería quitar el STS local del registro de nombres de emisor.

3. Actualizar los metadatos de federación

De forma predeterminada, al utilizar FedUtil y especificar un STS de producción, FedUtil configura su aplicación para que solo requiera notificaciones de rol y nombre. Puede verlo examinando el elemento <claimTypeRequirements> en el archivo web.config de la aplicación:

<bindings> <ws2007FederationHttpBinding> <binding name="ClaimsAwareService2.IService_ws2007FederationHttpBinding"> <security mode="Message"> <message> <issuerMetadata address="https://<specified STS>/Trust/Mex" /> <claimTypeRequirements> <!--Following are the claims offered by STS 'http://<specified STS>/Trust'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.--> <add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" isOptional="true" /> <add claimType="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" isOptional="true" /> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/CommonName" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/EmailAddress" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/Group" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/claims/UPN" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/title" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/manager" isOptional="true" />--> <!--<add claimType="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/department" isOptional="true" />--> </claimTypeRequirements> </message> </security> </binding> </ws2007FederationHttpBinding> </bindings>

Por ejemplo, en el fragmento de código anterior, la notificación emailaddress está comentada. Para configurar la aplicación para que requiera notificaciones adicionales, comente las notificaciones que desea. A continuación, en el Explorador de soluciones, haga clic con el botón secundario en el proyecto de aplicación y seleccione Actualizar metadatos de federación:

2890e94f-b760-419e-8399-2b974260d18a

FedUtil actualiza los metadatos de federación de la aplicación para reflejar los cambios en la lista de notificaciones necesarias. Después, abra el archivo FederationMetadata.xml de la aplicación y examine la lista actualizada de notificaciones necesarias. Ahora debería incluir cualquier notificación adicional comentada en el archivo web.config de la aplicación. Observe que FedUtil también realiza una copia de seguridad del archivo web.config de la aplicación.

<fed:ClaimTypesRequested> <auth:ClaimType Uri="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> <auth:ClaimType Uri="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> ... </fed:ClaimTypesRequested>

También puede agregar tipos de notificación personalizados al archivo web.config de la aplicación. A continuación, debe pedir al administrador de STS que actualice la directiva de STS de la aplicación para que emita los nuevos tipos de notificación.