Configuración de la sincronización con atributos de destino personalizados
Artículo
Espacio de nombres: microsoft.graph
Puede personalizar el esquema de sincronización para incluir atributos personalizados definidos en el directorio de destino. En este artículo se describe cómo personalizar una suscripción de Salesforce agregando un nuevo campo denominado officeCode. Configura la sincronización de Microsoft Entra ID a Salesforce y, para cada usuario, rellenará el officeCode campo en Salesforce con el valor del extensionAttribute10 campo en Microsoft Entra ID.
En este artículo se supone que ya ha agregado una aplicación que admite la sincronización con el inquilino mediante el Centro de administración Microsoft Entra, que conoce el nombre para mostrar de la aplicación y que tiene un token de autorización para Microsoft Graph. Para obtener información sobre cómo obtener el token de autorización, consulte Obtención de tokens de acceso para llamar a Microsoft Graph.
Búsqueda del objeto de entidad de servicio por nombre para mostrar
En el ejemplo siguiente se muestra cómo buscar un objeto de entidad de servicio con el nombre para mostrar Salesforce.
GET https://graph.microsoft.com/v1.0/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "id","appId","displayName" };
requestConfiguration.QueryParameters.Filter = "startswith(displayName, 'salesforce')";
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc service-principals list --filter "startswith(displayName, 'salesforce')" --select "id,appId,displayName"
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"id", "appId", "displayName"};
requestConfiguration.queryParameters.filter = "startswith(displayName, 'salesforce')";
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
GET https://graph.microsoft.com/v1.0/servicePrincipals/60443998-8cf7-4e61-b05c-a53b658cb5e1/synchronization/jobs
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].Synchronization.Jobs.GetAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SynchronizationJobCollectionResponse result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").synchronization().jobs().get(requestConfiguration -> {
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].Synchronization.Jobs["{synchronizationJob-id}"].Schema.GetAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc service-principals synchronization jobs schema get --service-principal-id {servicePrincipal-id} --synchronization-job-id {synchronizationJob-id}
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SynchronizationSchema result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").synchronization().jobs().bySynchronizationJobId("{synchronizationJob-id}").schema().get(requestConfiguration -> {
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad. Todas las propiedades se devolverán en una llamada real.
En synchronizationRules, busque la regla que especifica Microsoft Entra ID como directorio de origen y Salesforce.com como directorio de destino ("sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com").
En objectMappings de la regla, busque la asignación entre los usuarios ("sourceObjectName": "User", "targetObjectName": "User").
En la matriz attributeMappings del objetoMapping, agregue una nueva entrada, como se muestra en el ejemplo siguiente.
Al guardar el esquema de sincronización actualizado, asegúrese de incluir todo el esquema, incluidos los elementos sin modificar. Esta solicitud reemplazará el esquema existente por el que proporcione.
Si el esquema se guardó correctamente, la solicitud devuelve un código de 204 No Content respuesta. En la siguiente iteración del trabajo de sincronización, comenzará a volver a procesar todas las cuentas de la Microsoft Entra ID y las nuevas asignaciones se aplicarán a todas las cuentas aprovisionadas.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea: https://aka.ms/ContentUserFeedback.