Cómo persistir el correo electrónico, el nombre y el apellido con una política personalizada de HRD
Tengo una versión modificada de la política CP en https://github.com/azure-ad-b2c/samples/blob/master/policies/home-realm-discovery-modern/policy/SignInsmartHRD.xml que se ejecuta en un directorio de prueba, con nuestro directorio de AD de la empresa federado como un IdP. Cuando intento iniciar sesión en una aplicación con mi dirección de correo electrónico de AD y mi cuenta no existe en el directorio B2C, se crea utilizando UserWriteUsingAlternativeSecurityId
en el paso de orquestación 8. Sin embargo, la nueva cuenta de usuario solo tiene un nombre de visualización; no tiene nombre ni apellido, y lo peor de todo, no tiene correo electrónico. ¿Cómo puedo asegurarme de que estos elementos se mantengan en ese paso? No estoy seguro de cómo “agarrarlos”.
Idealmente, me gustaría que la identidad federada se vincule automáticamente a una cuenta local existente con la misma dirección de correo electrónico, sin que el usuario deba hacer una sesión local. Todos los ejemplos que he visto sobre vinculación de cuentas involucran que el usuario inicie sesión primero con una cuenta de contraseña local o que el OID del usuario esté prellenado. Solo tengo las direcciones de correo electrónico de los nuevos usuarios.
-GBS
davy.ai
Para asegurarse de que el nombre, apellido y dirección de correo electrónico del usuario se guarden en el OrchestrationStep 8 del CP modificado, es necesario agregar el perfil técnico
ClaimsExchange
para el perfil técnicoAAD-UserWriteUsingAlternativeSecurityId
. Este perfil técnicoClaimsExchange
debe mapear las claims de entrada a las claims de salida requeridas por el perfil técnicoAAD-UserWriteUsingAlternativeSecurityId
.Aquí tienes un ejemplo de cómo agregar el perfil técnico
ClaimsExchange
:En este ejemplo, se agregan perfiles técnicos
ClaimsExchange
para mapear las claims de entradaemail
,givenName
ysurname
a los PartnerClaimTypes correspondientes requeridos por el perfil técnicoAAD-UserWriteUsingAlternativeSecurityId
. Los perfiles técnicosGetUserProfile
ySelfAsserted-LocalAccountSignin-Email
se utilizan para obtener los valores degivenName
,surname
yemail
del proveedor de identidad del usuario y del usuario mismo. Las selecciones de proveedores de claims se utilizan para seleccionar elClaimsProvider
yClaimsExchange
requeridos para el perfil técnicoAAD-UserWriteUsingAlternativeSecurityId
. Finalmente, los pasos de orquestaciónClaimsExchanges
se utilizan para ejecutar los perfiles técnicosGetUserProfile
,SelfAsserted-LocalAccountSignin-Email
yAAD-UserWriteUsingAlternativeSecurityId
en el orden requerido.En cuanto a la vinculación automática de una identidad federada a una cuenta local existente con la misma dirección de correo electrónico, puedes utilizar el perfil técnico
AAD-UserReadUsingEmailAddress
para obtener el ID de objeto del usuario existente mediante la dirección de correo electrónico. Luego, puedes utilizar el perfil técnicoAAD-UserWriteUsingAlternativeSecurityId
para escribir el ID de seguridad alternativo con el ID de objeto del usuario existente, vinculando así la identidad federada con la cuenta local existente. Puedes agregar los perfiles técnicosClaimsExchange
requeridos y los pasos de orquestaciónClaimsProviderSelection
yClaimsExchanges
en el paso de orquestaciónUserWriteUsingAlternativeSecurityId
.Ten en cuenta que deberás agregar lógica de validación personalizada para asegurarte de que la dirección de correo electrónico proporcionada por el usuario coincida con la dirección de correo electrónico de la cuenta local existente. Puedes utilizar un perfil técnico
ClaimsTransformation
para transformar las claims de entrada y utilizarlas en la lógica de validación personalizada.