Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para la compra por parte de nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
Antes de empezar, use el selector Elegir un tipo de directiva en la parte superior de esta página para elegir el tipo de directiva que está configurando. Azure Active Directory B2C ofrece dos métodos para definir cómo interactúan los usuarios con las aplicaciones: a través de flujos de usuario predefinidos o mediante directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.
Nota:
En Azure Active Directory B2C, las directivas personalizadas se han diseñado principalmente para abordar escenarios complejos. Para la mayoría de los escenarios, se recomienda usar flujos de usuario integrados. Si no lo ha hecho, obtenga información sobre el paquete de inicio de directivas personalizadas en Introducción a las directivas personalizadas en Active Directory B2C.
Prerrequisitos
- Cree un flujo de usuario para que los usuarios se registren e inicien sesión en la aplicación.
- Registre una aplicación web.
- Siga los pasos de Introducción a las directivas personalizadas en Active Directory B2C. En este tutorial se explica cómo actualizar archivos de directiva personalizados para usar la configuración del inquilino de Azure AD B2C.
- Registre una aplicación web.
Crear una aplicación de LinkedIn
Para habilitar el inicio de sesión para los usuarios con una cuenta de LinkedIn en Azure Active Directory B2C (Azure AD B2C), debe crear una aplicación en el sitio web de LinkedIn Developers. Si aún no tienes una cuenta de LinkedIn, puedes registrarte en https://www.linkedin.com/.
- Inicia sesión en el sitio web de LinkedIn Developers con las credenciales de tu cuenta de LinkedIn.
- Seleccione Mis aplicaciones y, a continuación, haga clic en Crear aplicación.
- Introduzca el nombre de la aplicación, la página de LinkedIn, la URL de la política de privacidad y el logotipo de la aplicación.
- Acepte los Términos de uso de la API de LinkedIn y haga clic en Crear aplicación.
- Seleccione la pestaña Autenticación . En Claves de autenticación, copie los valores de Id. de cliente y Secreto de cliente. Necesitarás ambos para configurar LinkedIn como proveedor de identidad en tu inquilino. El secreto de cliente es una credencial de seguridad importante.
- Seleccione el lápiz de edición situado junto a Direcciones URL de redireccionamiento autorizadas para la aplicación y, a continuación, seleccione Agregar dirección URL de redireccionamiento. Escribe
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp. Si usa un dominio personalizado, escribahttps://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Reemplaceyour-tenant-namepor el nombre del inquilino yyour-domain-namepor el dominio personalizado. Debe usar todas las letras minúsculas al escribir el nombre del inquilino incluso si el inquilino está definido con letras mayúsculas en Azure AD B2C. Selecciona Actualización. - De forma predeterminada, la aplicación de LinkedIn no está aprobada para los ámbitos relacionados con el inicio de sesión. Para solicitar una revisión, seleccione la pestaña Productos y, a continuación, seleccione Iniciar sesión con LinkedIn mediante OpenID Connect. Una vez completada la revisión, se agregarán los ámbitos necesarios a la aplicación.
Nota:
Puedes ver los ámbitos que se permiten actualmente para tu aplicación en la pestaña Autenticación , en la sección Ámbitos de OAuth 2.0 .
Configurar LinkedIn como proveedor de identidad
- Inicie sesión en Azure Portal con una cuenta que tenga al menos privilegios de administrador de proveedores de identidades externos.
- Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
- En la página Configuración del portal | Directorios y suscripciones, busque el directorio de Azure AD B2C en la lista Nombre de directorio y seleccione Cambiar.
- Elija Todos los servicios en la esquina superior izquierda de Azure Portal, busque y seleccione Azure AD B2C.
- Seleccione Proveedores de identidades y, a continuación, seleccione Nuevo proveedor de OpenID Connect.
- Escriba un nombre. Por ejemplo, LinkedIn-OIDC.
- En la URL de metadatos, escriba https://www.linkedin.com/oauth/.well-known/openid-configuration.
- En el ID de cliente, introduzca el ID de cliente de la aplicación de LinkedIn que creó anteriormente.
- En Secreto de cliente, escriba el secreto de cliente que registró.
- En el ámbito, escriba el correo electrónico del perfil openid.
- En Tipo de respuesta, escriba el código.
- En el ID de usuario, introduzca el correo electrónico.
- En Nombre para mostrar, escriba nombre.
- En Nombre de pila, escriba given_name.
- En Apellido, escriba family_name.
- En Correo electrónico, escriba correo electrónico.
- Haga clic en Guardar.
Agregar proveedor de identidad de LinkedIn a un flujo de usuarios
En este punto, el proveedor de identidad de LinkedIn se ha configurado, pero aún no está disponible en ninguna de las páginas de inicio de sesión. Para agregar el proveedor de identidad de LinkedIn a un flujo de usuario:
- En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
- Haga clic en el flujo de usuario al que desea agregar el proveedor de identidad de LinkedIn.
- En Proveedores de identidad personalizados, seleccione LinkedIn-OIDC.
- Haga clic en Guardar.
- Para probar la directiva, seleccione Ejecutar flujo de usuario.
- En Aplicación, seleccione la aplicación web denominada testapp1 que registró anteriormente. La dirección URL de respuesta debe mostrar
https://jwt.ms. - Seleccione el botón Ejecutar flujo de usuario.
- En la página de registro o inicio de sesión, seleccione LinkedIn-OIDC para iniciar sesión con la cuenta de LinkedIn.
Si el proceso de inicio de sesión se completa correctamente, el explorador se redirige a https://jwt.ms, que muestra el contenido del token devuelto por Azure AD B2C.
Creación de una clave de directiva
Debe almacenar el secreto de cliente que haya registrado previamente en el inquilino de Azure AD B2C.
- Inicie sesión en Azure Portal.
- Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
- En la página Configuración del portal | Directorios y suscripciones, busque el directorio de Azure AD B2C en la lista Nombre de directorio y seleccione Cambiar.
- Elija Todos los servicios en la esquina superior izquierda de Azure Portal y busque y seleccione Azure AD B2C.
- En la página Información general, seleccione Identity Experience Framework.
- Seleccione Claves de directiva y, a continuación, seleccione Agregar.
- En Opciones, elija
Manual. - Escriba un nombre para la clave de directiva. Por ejemplo:
LinkedInSecret. Se agregará el prefijo B2C_1A_ automáticamente al nombre de la clave. - En Secreto, escriba el secreto de cliente que registró anteriormente.
- En Uso de claves, seleccione
Signature. - Haga clic en Crear.
Configurar LinkedIn como proveedor de identidad
Para permitir que los usuarios inicien sesión con una cuenta de LinkedIn, debe definir la cuenta como un proveedor de notificaciones con el que Azure AD B2C pueda comunicarse a través de un punto de conexión. El punto de conexión proporciona un conjunto de declaraciones utilizadas por Azure AD B2C para comprobar que un usuario específico se ha autenticado.
Defina una cuenta de LinkedIn como proveedor de notificaciones agregándola al elemento ClaimsProviders en el archivo de extensión de su póliza.
Abra el archivo SocialAndLocalAccounts/TrustFrameworkExtensions.xml en el editor. Este archivo se encuentra en el paquete de inicio de directivas personalizadas que descargó como parte de uno de los requisitos previos.
Busque el elemento ClaimsProviders. Si no existe, agréguelo debajo del elemento raíz.
Agregue un nuevo elemento ClaimsProvider tal como se muestra a continuación:
<ClaimsProvider> <Domain>linkedin.com</Domain> <DisplayName>LinkedIn-OIDC</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="LinkedIn-OIDC"> <DisplayName>LinkedIn</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://www.linkedin.com/oauth/.well-known/openid-configuration</Item> <Item Key="scope">openid profile email</Item> <Item Key="HttpBinding">POST</Item> <Item Key="response_types">code</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="client_id">Your LinkedIn application client ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_LinkedInSecret" /> </CryptographicKeys> <InputClaims /> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="linkedin.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>Reemplace el valor de client_id por el ID de cliente de la aplicación de LinkedIn que registró anteriormente.
Guarde el archivo.
Adición de un recorrido del usuario
En este momento, el proveedor de identidades ya se ha configurado, pero no está disponible en ninguna de las pantallas de inicio de sesión. Si no tiene su propio recorrido del usuario personalizado, cree un duplicado de un recorrido del usuario de la plantilla existente; de lo contrario, continúe con el paso siguiente.
- Abra el archivo TrustFrameworkBase.xml del paquete de inicio.
- Busque y copie todo el contenido del elemento UserJourney que incluye
Id="SignUpOrSignIn". - Abra el archivo TrustFrameworkExtensions.xml y busque el elemento UserJourneys. Si el elemento no existe, agréguelo.
- Pegue todo el contenido del elemento UserJourney que ha copiado como elemento secundario del elemento UserJourneys.
- Cambie el identificador del recorrido del usuario. Por ejemplo:
Id="CustomSignUpSignIn".
Adición del proveedor de identidades a un recorrido del usuario
Ahora que tiene un recorrido del usuario, agregue el nuevo proveedor de identidades al recorrido del usuario. En primer lugar, agregue un botón de inicio de sesión y, después, vincule el botón a una acción. La acción es el perfil técnico que creó anteriormente.
Busque el elemento del paso de orquestación que incluye
Type="CombinedSignInAndSignUp"oType="ClaimsProviderSelection"en el recorrido del usuario. Normalmente es el primer paso de orquestación. El elemento ClaimsProviderSelections contiene una lista de proveedores de identidades con los que un usuario puede iniciar sesión. El orden de los elementos controla el orden de los botones de inicio de sesión que se presentan al usuario. Agregue un elemento XML ClaimsProviderSelection. Establezca el valor de TargetClaimsExchangeId en un nombre descriptivo.En el paso de orquestación siguiente, agregue un elemento ClaimsExchange. Establezca el Id en el valor del identificador de intercambio de notificaciones de destino. Actualice el valor de TechnicalProfileReferenceId al del identificador del perfil técnico que creó anteriormente.
En el siguiente código XML se muestran los dos primeros pasos de orquestación de un recorrido del usuario con el proveedor de identidades:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OIDC" />
</ClaimsExchanges>
</OrchestrationStep>
Configuración de la directiva de usuario de confianza
La directiva de usuario de confianza, por ejemplo SignUpSignIn.xml, especifica el recorrido del usuario que ejecutará Azure AD B2C. Busque el elemento DefaultUserJourney en el usuario de confianza. Actualice ReferenceId para que coincida con el identificador del recorrido del usuario, en el que agregó el proveedor de identidades.
En el ejemplo siguiente, para el recorrido de usuario CustomSignUpSignIn, el ReferenceId está establecido en CustomSignUpSignIn:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Carga de la directiva personalizada
- Inicie sesión en Azure Portal.
- Seleccione el icono Directorio y suscripción en la barra de herramientas del portal y, luego, elija el directorio que contiene el inquilino de Azure AD B2C.
- En Azure Portal, busque y seleccione Azure AD B2C.
- En Directivas, seleccione Identity Experience Framework.
- Seleccione Cargar directiva personalizada y, a continuación, cargue los dos archivos de directivas que ha cambiado, en el siguiente orden: la directiva de extensiones, por ejemplo
TrustFrameworkExtensions.xml, luego la directiva de usuarios de confianza, comoSignUpSignIn.xml.
Prueba de la directiva personalizada
- Seleccione la directiva de usuarios de confianza, por ejemplo
B2C_1A_signup_signin. - En Aplicación, seleccione la aplicación web que registró anteriormente. La dirección URL de respuesta debe mostrar
https://jwt.ms. - Seleccione el botón Ejecutar ahora.
- En la página de registro o inicio de sesión, seleccione LinkedIn-OIDC para iniciar sesión con la cuenta de LinkedIn.
Si el proceso de inicio de sesión se completa correctamente, el explorador se redirige a https://jwt.ms, que muestra el contenido del token devuelto por Azure AD B2C.
Migración de v1.0 a v2.0
LinkedIn actualizó recientemente sus API de v1.0 a v2.0. Para migrar la configuración existente a la nueva, utilice la información de las secciones siguientes para actualizar los elementos del perfil técnico.
Reemplazar elementos en los metadatos
En el elemento Metadata existente de TechnicalProfile, actualice los siguientes elementos Item desde:
<Item Key="ClaimsEndpoint">https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,headline)</Item>
<Item Key="scope">r_emailaddress r_basicprofile</Item>
A:
<Item Key="ClaimsEndpoint">https://api.linkedin.com/v2/me</Item>
<Item Key="scope">r_emailaddress r_liteprofile</Item>
Agregar elementos a los metadatos
En los metadatos de TechnicalProfile, agregue los siguientes elementos Item :
<Item Key="external_user_identity_claim_id">id</Item>
<Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
<Item Key="ResolveJsonPathsInJsonTokens">true</Item>
Actualización de OutputClaims
En las OutputClaims existentes de TechnicalProfile, actualice los siguientes elementos OutputClaim desde:
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName" />
A:
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName.localized" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName.localized" />
Adición de nuevos elementos OutputClaimsTransformation
En OutputClaimsTransformations de TechnicalProfile, agregue los siguientes elementos OutputClaimsTransformation :
<OutputClaimsTransformation ReferenceId="ExtractGivenNameFromLinkedInResponse" />
<OutputClaimsTransformation ReferenceId="ExtractSurNameFromLinkedInResponse" />
Definir las nuevas transformaciones de notificaciones y el tipo de notificación
En el último paso, agregó nuevas transformaciones de notificaciones que deben definirse. Para definir las transformaciones de notificaciones, agréguelas a la lista de ClaimsTransformations. Si no tiene un elemento ClaimsTransformations definido en el archivo, agregue los elementos XML primarios como se muestra a continuación. Las transformaciones de notificaciones también necesitan un nuevo tipo de notificación definido denominado nullStringClaim.
El elemento BuildingBlocks debe agregarse cerca de la parte superior del archivo. Véase el TrustframeworkBase.xml como ejemplo.
<BuildingBlocks>
<ClaimsSchema>
<!-- Claim type needed for LinkedIn claims transformations -->
<ClaimType Id="nullStringClaim">
<DisplayName>nullClaim</DisplayName>
<DataType>string</DataType>
<AdminHelpText>A policy claim to store unuseful output values from ClaimsTransformations. This claim should not be used in a TechnicalProfiles.</AdminHelpText>
<UserHelpText>A policy claim to store unuseful output values from ClaimsTransformations. This claim should not be used in a TechnicalProfiles.</UserHelpText>
</ClaimType>
</ClaimsSchema>
<ClaimsTransformations>
<!-- Claim transformations needed for LinkedIn technical profile -->
<ClaimsTransformation Id="ExtractGivenNameFromLinkedInResponse" TransformationMethod="GetSingleItemFromJson">
<InputClaims>
<InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputJson" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="nullStringClaim" TransformationClaimType="key" />
<OutputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="value" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="ExtractSurNameFromLinkedInResponse" TransformationMethod="GetSingleItemFromJson">
<InputClaims>
<InputClaim ClaimTypeReferenceId="surname" TransformationClaimType="inputJson" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="nullStringClaim" TransformationClaimType="key" />
<OutputClaim ClaimTypeReferenceId="surname" TransformationClaimType="value" />
</OutputClaims>
</ClaimsTransformation>
</ClaimsTransformations>
</BuildingBlocks>
Obtener una dirección de correo electrónico
Como parte de la migración de LinkedIn de v1.0 a v2.0, se requiere una llamada adicional a otra API para obtener la dirección de correo electrónico. Si necesita obtener la dirección de correo electrónico durante el registro, haga lo siguiente:
Complete los pasos anteriores para permitir que Azure AD B2C se federe con LinkedIn para permitir que el usuario inicie sesión. Como parte de la federación, Azure AD B2C recibe el token de acceso para LinkedIn.
Guarde el token de acceso de LinkedIn en una notificación. Consulte las instrucciones aquí.
Añade el siguiente proveedor de notificaciones que realiza la solicitud a la API de
/emailAddressLinkedIn. Para autorizar esta solicitud, necesita el token de acceso de LinkedIn.<ClaimsProvider> <DisplayName>REST APIs</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="API-LinkedInEmail"> <DisplayName>Get LinkedIn email</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">identityProviderAccessToken</Item> <Item Key="SendClaimsIn">Url</Item> <Item Key="ResolveJsonPathsInJsonTokens">true</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="identityProviderAccessToken" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="elements[0].handle~.emailAddress" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>Agrega el siguiente paso de orquestación a tu recorrido del usuario, de modo que el proveedor de notificaciones de API se active cuando un usuario inicie sesión con LinkedIn. Asegúrese de actualizar el
Ordernúmero correctamente. Agregue este paso inmediatamente después del paso de orquestación que desencadena el perfil técnico de LinkedIn.<!-- Extra step for LinkedIn to get the email --> <OrchestrationStep Order="3" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="false"> <Value>identityProvider</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>identityProvider</Value> <Value>linkedin.com</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="GetEmail" TechnicalProfileReferenceId="API-LinkedInEmail" /> </ClaimsExchanges> </OrchestrationStep>
Obtener la dirección de correo electrónico de LinkedIn durante el registro es opcional. Si decide no obtener el correo electrónico de LinkedIn, pero lo necesita durante el registro, el usuario debe introducir manualmente la dirección de correo electrónico y validarla.
Para ver un ejemplo completo de una política que utiliza el proveedor de identidades de LinkedIn, consulte el paquete de inicio de políticas personalizadas.
Migración de v1.0 a v2.0
LinkedIn actualizó recientemente sus API de v1.0 a v2.0. Como parte de la migración, Azure AD B2C solo puede obtener el nombre completo del usuario de LinkedIn durante el registro. Si una dirección de correo electrónico es uno de los atributos que se recopilan durante el registro, el usuario debe ingresar manualmente la dirección de correo electrónico y validarla.