SCIM-Benutzerbereitstellung mit Azure Active DirectorySCIM user provisioning with Azure Active Directory

SCIM (System for Cross-Domain Identity Management) ist ein standardisiertes Protokoll und Schema, das darauf abzielt, mehr Konsistenz bei der systemübergreifenden Verwaltung von Identitäten zu erreichen.System for Cross-Domain Identity Management (SCIM) is standardized protocol and schema that aims to drive greater consistency in how identities are managed across systems. Wenn eine Anwendung einen SCIM-Endpunkt für die Benutzerverwaltung unterstützt, kann der Azure AD-Benutzerbereitstellungsdienst Anforderungen zum Erstellen, Ändern oder Löschen von zugewiesenen Benutzern und Gruppen an diesen Endpunkt senden.When an application supports a SCIM endpoint for user management, the Azure AD user provisioning service can send requests to create, modify, or delete assigned users and groups to this endpoint.

Viele der Anwendungen, für die Azure AD die vorab integrierte automatische Benutzerbereitstellung unterstützt, implementieren SCIM als Möglichkeit zum Empfangen von Benachrichtigungen über Benutzeränderungen.Many of the applications for which Azure AD supports pre-integrated automatic user provisioning implement SCIM as the means to receive user change notifications. Zusätzlich zu diesen Anwendungen können Kunden Anwendungen verbinden, die ein bestimmtes Profil der SCIM 2.0-Protokollspezifikation mit der generischen Integrationsoption für Nicht-Kataloganwendungen im Azure-Portal unterstützen.In addition to these, customers can connect applications that support a specific profile of the SCIM 2.0 protocol specification using the generic "non-gallery" integration option in the Azure portal.

Das Hauptaugenmerk dieses Artikels liegt auf dem Profil von SCIM 2.0, das von Azure AD als Teil des generischen SCIM-Connectors für Nicht-Kataloganwendungen implementiert wird.The main focus of this article is on the profile of SCIM 2.0 that Azure AD implements as part of its generic SCIM connector for non-gallery apps. Das erfolgreiche Testen einer Anwendung, die SCIM mit dem generischen Azure AD-Connector unterstützt, ist jedoch ein Schritt zum Auflisten einer App im Azure AD-Katalog mit Unterstützung der Benutzerbereitstellung.However, successful testing of an application that supports SCIM with the generic Azure AD connector is a step to getting an app listed in the Azure AD gallery as supporting user provisioning. Weitere Informationen zum Auflisten Ihrer Anwendung im Azure AD-Anwendungskatalog finden Sie unter Gewusst wie: Auflisten Ihrer Anwendung im Azure AD-Anwendungskatalog.For more information on getting your application listed in the Azure AD application gallery, see How to: List your application in the Azure AD application gallery.

Wichtig

Das Verhalten der Azure AD-SCIM-Implementierung wurde zuletzt am 18. Dezember 2018 aktualisiert.The behavior of the Azure AD SCIM implementation was last updated on December 18, 2018. Informationen zu den Änderungen finden Sie unter Einhaltung des SCIM 2.0-Protokolls des Azure AD-Benutzerbereitstellungsdiensts.For information on what changed, see SCIM 2.0 protocol compliance of the Azure AD User Provisioning service.

Zeigt die Bereitstellung von Azure AD in einem App- oder IdentitätsspeicherShows provisioning from Azure AD to an app or identity store
Abbildung 1: Bereitstellung über Azure Active Directory für einen Anwendungs- oder Identitätsspeicher, der SCIM implementiertFigure 1: Provisioning from Azure Active Directory to an application or identity store that implements SCIM

Dieser Artikel ist in vier Abschnitte unterteilt:This article is split into four sections:

Bereitstellen von Benutzern und Gruppen für Anwendungen, die SCIM unterstützenProvisioning users and groups to applications that support SCIM

Azure AD kann für das automatische Bereitstellen von zugewiesenen Benutzern und Gruppen für Anwendungen konfiguriert werden, die ein bestimmtes Profil des SCIM 2.0-Protokolls implementieren.Azure AD can be configured to automatically provision assigned users and groups to applications that implement a specific profile of the SCIM 2.0 protocol. Die Einzelheiten des Profils sind im Abschnitt Verstehen der Azure AD-SCIM-Implementierung dokumentiert.The specifics of the profile are documented in Understanding the Azure AD SCIM implementation.

Überprüfen Sie beim Anbieter Ihrer Anwendung oder in der Dokumentation zu Ihrer Anwendung, ob diese Anforderungen voll erfüllt werden.Check with your application provider, or your application provider's documentation for statements of compatibility with these requirements.

Wichtig

Die Azure AD-SCIM-Implementierung basiert auf dem Azure AD-Benutzerbereitstellungsdienst, der auf die ständige Synchronisierung der Benutzer zwischen Azure AD und der Zielanwendung ausgelegt ist, und implementiert eine ganz bestimmte Reihe von Standardvorgängen.The Azure AD SCIM implementation is built on top of the Azure AD user provisioning service, which is designed to constantly keep users in sync between Azure AD and the target application, and implements a very specific set of standard operations. Es ist wichtig, diese Verhaltensweisen zu verstehen, um das Verhalten des Azure AD-SCIM-Clients nachvollziehen zu können.It's important to understand these behaviors to understand the behavior of the Azure AD SCIM client. Weitere Informationen finden Sie unter Vorgänge während der Bereitstellung.For more information, see What happens during user provisioning?.

Erste SchritteGetting started

Anwendungen, die das SCIM-Profil wie in diesem Artikel beschrieben erfüllen, können über das Feature „Nicht-Kataloganwendung“ im Azure AD-Anwendungskatalog mit Azure Active Directory verbunden werden.Applications that support the SCIM profile described in this article can be connected to Azure Active Directory using the "non-gallery application" feature in the Azure AD application gallery. Nachdem die Verbindung hergestellt wurde, führt Azure AD alle 40 Minuten einen Synchronisierungsprozess aus, bei dem der SCIM-Endpunkt der Anwendung auf zugewiesene Benutzer und Gruppen abgefragt wird. Entsprechend den Details der Zuweisung werden Benutzer und Gruppen dann erstellt oder geändert.Once connected, Azure AD runs a synchronization process every 40 minutes where it queries the application's SCIM endpoint for assigned users and groups, and creates or modifies them according to the assignment details.

So verbinden Sie eine Anwendung, die SCIM unterstützt:To connect an application that supports SCIM:

  1. Melden Sie sich beim Azure Active Directory-Portal an.Sign in to the Azure Active Directory portal. Beachten Sie, dass Sie auf eine kostenlose Testversion für Azure Active Directory mit P2-Lizenzen zugreifen können, indem Sie sich für das Entwicklerprogramm registrieren.Note that you can get access a free trial for Azure Active Directory with P2 licenses by signing up for the developer program

  2. Wählen Sie im linken Bereich die Option Unternehmensanwendungen aus.Select Enterprise applications from the left pane. Eine Liste mit allen konfigurierten Apps wird angezeigt, einschließlich Apps, die aus dem Katalog hinzugefügt wurden.A list of all configured apps is shown, including apps that were added from the gallery.

  3. Wählen Sie + Neue Anwendung > Alle > Nicht-Kataloganwendung.Select + New application > All > Non-gallery application.

  4. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Hinzufügen, um ein App-Objekt zu erstellen.Enter a name for your application, and select Add to create an app object. Die neue App wird der Liste mit den Unternehmensanwendungen hinzugefügt und mit dem App-Verwaltungsbildschirm geöffnet.The new app is added to the list of enterprise applications and opens to its app management screen.

    Screenshot des Azure AD-AnwendungskatalogsScreenshot shows the Azure AD application gallery
    Abbildung 2: Azure AD-AnwendungskatalogFigure 2: Azure AD application gallery

  5. Wählen Sie auf dem App-Verwaltungsbildschirm im linken Bereich die Option Bereitstellung.In the app management screen, select Provisioning in the left panel.

  6. Wählen Sie im Menü Bereitstellungsmodus die Option Automatisch aus.In the Provisioning Mode menu, select Automatic.

    Beispiel: Bereitstellungsseite einer App im Azure-PortalExample: An app's Provisioning page in the Azure portal
    Abbildung 3: Konfigurieren der Bereitstellung im Azure-PortalFigure 3: Configuring provisioning in the Azure portal

  7. Geben Sie im Feld Mandanten-URL die URL des SCIM-Endpunkts der Anwendung ein.In the Tenant URL field, enter the URL of the application's SCIM endpoint. Beispiel: https://api.contoso.com/scim/Example: https://api.contoso.com/scim/

  8. Wenn der SCIM-Endpunkt ein OAuth-Bearertoken benötigt, das von einem anderen Aussteller als Azure AD stammt, kopieren Sie das erforderliche OAuth-Bearertoken in das optionale Feld Geheimes Token.If the SCIM endpoint requires an OAuth bearer token from an issuer other than Azure AD, then copy the required OAuth bearer token into the optional Secret Token field. Wird dieses Feld leer gelassen, fügt Azure AD in jede Anforderung ein von Azure AD ausgestelltes OAuth-Bearertoken ein.If this field is left blank, Azure AD includes an OAuth bearer token issued from Azure AD with each request. Apps, die Azure AD als Identitätsanbieter verwenden, können dieses von Azure AD ausgestellte Token überprüfen.Apps that use Azure AD as an identity provider can validate this Azure AD-issued token.

  9. Wählen Sie die Option Verbindung testen, damit Azure Active Directory versucht, eine Verbindung mit dem SCIM-Endpunkt herzustellen.Select Test Connection to have Azure Active Directory attempt to connect to the SCIM endpoint. Wenn der Versuch nicht erfolgreich ist, werden Fehlerinformationen angezeigt.If the attempt fails, error information is displayed.

    Hinweis

    Die Option Verbindung testen fragt den SCIM-Endpunkt nach einem Benutzer ab, der nicht vorhanden ist, und verwendet dabei einen zufälligen global eindeutigen Bezeichner (Globally Unique Identifier, GUID) als entsprechende Eigenschaft, die in der Azure AD-Konfiguration ausgewählt wurde.Test Connection queries the SCIM endpoint for a user that doesn't exist, using a random GUID as the matching property selected in the Azure AD configuration. Die erwartete richtige Antwort ist „HTTP 200 OK“ mit einer leeren SCIM ListResponse-Meldung.The expected correct response is HTTP 200 OK with an empty SCIM ListResponse message.

  10. Wählen Sie bei einer erfolgreichen Verbindungsherstellung mit der Anwendung die Option Speichern, um die Administratoranmeldeinformationen zu speichern.If the attempts to connect to the application succeed, then select Save to save the admin credentials.

  11. Im Abschnitt Zuordnungen stehen zwei Sätze von Attributzuordnungen zur Verfügung: eine für Benutzerobjekte und eine für Gruppenobjekte.In the Mappings section, there are two selectable sets of attribute mappings: one for user objects and one for group objects. Wählen Sie beide nacheinander aus, um die Attribute zu überprüfen, die von Azure Active Directory mit Ihrer App synchronisiert werden.Select each one to review the attributes that are synchronized from Azure Active Directory to your app. Beachten Sie, dass die als übereinstimmende Eigenschaften ausgewählten Attribute für den Abgleich der Benutzer und Gruppen in Ihrer App für Updatevorgänge verwendet werden.The attributes selected as Matching properties are used to match the users and groups in your app for update operations. Wählen Sie Speichern aus, um Ihre Änderungen zu committen.Select Save to commit any changes.

    Hinweis

    Sie können die Synchronisierung von Gruppenobjekten optional deaktivieren. Deaktivieren Sie dazu die Zuordnung „Gruppen“.You can optionally disable syncing of group objects by disabling the "groups" mapping.

  12. Im Feld Bereich unter Einstellungen wird festgelegt, welche Benutzer und Gruppen synchronisiert werden.Under Settings, the Scope field defines which users and groups are synchronized. Wählen Sie Nur zugewiesene Benutzer und Gruppen synchronisieren (empfohlen) aus, damit nur Benutzer und Gruppen synchronisiert werden, die auf der Registerkarte Benutzer und Gruppen zugewiesen sind.Select Sync only assigned users and groups (recommended) to only sync users and groups assigned in the Users and groups tab.

  13. Legen Sie den Bereitstellungsstatus nach Abschluss der Konfiguration auf Ein fest.Once your configuration is complete, set the Provisioning Status to On.

  14. Wählen Sie Speichern, um den Azure AD-Bereitstellungsdienst zu starten.Select Save to start the Azure AD provisioning service.

  15. Wenn nur zugewiesene Benutzer und Gruppen synchronisiert werden (empfohlen), sollten Sie darauf achten, dass die Registerkarte Benutzer und Gruppen ausgewählt ist und die Benutzer bzw. Gruppen zugewiesen sind, die synchronisiert werden sollen.If syncing only assigned users and groups (recommended), be sure to select the Users and groups tab and assign the users or groups you want to sync.

Nachdem der erste Zyklus gestartet wurde, können Sie im linken Bereich die Option Überwachungsprotokolle wählen, um den Fortschritt zu überwachen. Hier werden alle Aktionen angezeigt, die vom Bereitstellungsdienst für Ihre App durchgeführt werden.Once the initial cycle has started, you can select Audit logs in the left panel to monitor progress, which shows all actions done by the provisioning service on your app. Weitere Informationen zum Lesen von Azure AD-Bereitstellungsprotokollen finden Sie unter Tutorial: Meldung zur automatischen Benutzerkontobereitstellung.For more information on how to read the Azure AD provisioning logs, see Reporting on automatic user account provisioning.

Hinweis

Der erste Zyklus dauert länger als spätere Synchronisierungen, die ungefähr alle 40 Minuten erfolgen, solange der Dienst ausgeführt wird.The initial cycle takes longer to perform than later syncs, which occur approximately every 40 minutes as long as the service is running.

So veröffentlichen Sie Ihre Anwendung im Azure AD-AnwendungskatalogTo publish your application to the Azure AD application gallery:

Wenn Sie eine Anwendung erstellen, die von mehreren Mandanten verwendet wird, können Sie sie im Azure AD-Anwendungskatalog verfügbar machen.If you're building an application that will be used my more than one tenant, you can make it available in the Azure AD application gallery. Dies erleichtert Organisationen das Auffinden der Anwendung und das Konfigurieren der Bereitstellung.This will make it easy for organizations to discover the application and configure provisioning. Das Veröffentlichen Ihrer App im Azure AD-Katalog und das Verfügbarmachen der Bereitstellung für andere ist einfach.Publishing your app in the Azure AD gallery and making provisioning available to others is easy. Die entsprechenden Schritte sind hier angegeben.Check out the steps here.

Verstehen der Azure AD-SCIM-ImplementierungUnderstanding the Azure AD SCIM implementation

Wenn Sie eine Anwendung erstellen, die eine SCIM 2.0-Benutzerverwaltungs-API unterstützt, ist dieser Abschnitt hilfreich. Darin wird detailliert beschrieben, wie der Azure AD-SCIM-Client implementiert wird und wie Sie die Verarbeitung von SCIM-Protokollanforderungen und -antworten modellieren sollten.If you're building an application that supports a SCIM 2.0 user management API, this section describes in detail how the Azure AD SCIM client is implemented, and how you should model your SCIM protocol request handling and responses. Nachdem Sie den SCIM-Endpunkt implementiert haben, können Sie ihn durch Ausführen der im vorherigen Abschnitt beschriebenen Schritte testen.Once you've implemented your SCIM endpoint, you can test it by following the procedure described in the previous section.

Im Rahmen der SCIM 2.0-Protokollspezifikation muss Ihre Anwendung die folgenden Anforderungen erfüllen:Within the SCIM 2.0 protocol specification, your application must meet these requirements:

  • Unterstützt das Erstellen von Benutzern (und optional auch von Gruppen) gemäß Abschnitt 3.3 des SCIM-Protokolls.Supports creating users, and optionally also groups, as per section 3.3 of the SCIM protocol.
  • Unterstützt das Ändern von Benutzern bzw. Gruppen mit PATCH-Anforderungen gemäß Abschnitt 3.5.2 des SCIM-Protokolls.Supports modifying users or groups with PATCH requests, as per section 3.5.2 of the SCIM protocol.
  • Unterstützt das Abrufen einer bekannten Ressource für einen zuvor erstellten Benutzer oder eine Gruppe gemäß Abschnitt 3.4.1 des SCIM-Protokolls.Supports retrieving a known resource for a user or group created earlier, as per section 3.4.1 of the SCIM protocol.
  • Unterstützt das Abfragen von Benutzern bzw. Gruppen gemäß Abschnitt 3.4.2 des SCIM-Protokolls.Supports querying users or groups, as per section 3.4.2 of the SCIM protocol. Standardmäßig werden Benutzer anhand ihrer id abgerufen und nach username und externalid abgefragt. Gruppen werden nach displayName abgefragt.By default, users are retrieved by their id and queried by their username and externalid, and groups are queried by displayName.
  • Unterstützt das Abfragen von Benutzern nach ID und nach Manager gemäß Abschnitt 3.4.2 des SCIM-Protokolls.Supports querying user by ID and by manager, as per section 3.4.2 of the SCIM protocol.
  • Unterstützt das Abfragen von Gruppen nach ID und nach Mitglied gemäß Abschnitt 3.4.2 des SCIM-Protokolls.Supports querying groups by ID and by member, as per section 3.4.2 of the SCIM protocol.
  • Akzeptiert ein einzelnes Bearertoken für die Authentifizierung und Autorisierung von Azure AD für Ihre Anwendung.Accepts a single bearer token for authentication and authorization of Azure AD to your application.

Befolgen Sie bei der Implementierung eines SCIM-Endpunkts die folgenden allgemeinen Richtlinien, um die Kompatibilität mit Azure AD sicherzustellen:Follow these general guidelines when implementing a SCIM endpoint to ensure compatibility with Azure AD:

  • id ist eine erforderliche Eigenschaft für alle Ressourcen.id is a required property for all the resources. Für jede Antwort, die eine Ressource zurückgibt, muss sichergestellt werden, dass jede Ressource diese Eigenschaft aufweist. Eine Ausnahme ist ListResponse mit 0 (null) Elementen.Every response that returns a resource should ensure each resource has this property, except for ListResponse with zero members.
  • Eine Antwort auf eine Abfrage-/Filteranforderung muss immer eine ListResponse sein.Response to a query/filter request should always be a ListResponse.
  • Gruppen sind optional, werden jedoch nur unterstützt, wenn die SCIM-Implementierung PATCH-Anforderungen unterstützt.Groups are optional, but only supported if the SCIM implementation supports PATCH requests.
  • Die PATCH-Antwort muss nicht die gesamte Ressource enthalten.It isn't necessary to include the entire resource in the PATCH response.
  • Microsoft Azure AD verwendet nur die folgenden Operatoren:Microsoft Azure AD only uses the following operators:
    • eq
    • and
  • Unterscheiden Sie bei Strukturelementen in SCIM nicht zwischen Groß- und Kleinschreibung, insbesondere bei op-PATCH-Vorgangswerten gemäß der Definition unter https://tools.ietf.org/html/rfc7644#section-3.5.2.Don't require a case-sensitive match on structural elements in SCIM, in particular PATCH op operation values, as defined in https://tools.ietf.org/html/rfc7644#section-3.5.2. Azure AD gibt die Werte von „op“ mit Add, Replace und Remove aus.Azure AD emits the values of 'op' as Add, Replace, and Remove.
  • Microsoft Azure AD sendet Anforderungen zum Abrufen eines zufälligen Benutzers und einer zufälligen Gruppe, um sicherzustellen, dass der Endpunkt und die Anmeldeinformationen gültig sind.Microsoft Azure AD makes requests to fetch a random user and group to ensure that the endpoint and the credentials are valid. Dies erfolgt auch im Rahmen des Testverbindungsflows im Azure-Portal.It's also done as a part of Test Connection flow in the Azure portal.
  • Das Attribut, nach dem die Ressourcen abgefragt werden können, sollte als entsprechendes Attribut für die Anwendung im Azure-Portal festgelegt werden.The attribute that the resources can be queried on should be set as a matching attribute on the application in the Azure portal. Weitere Informationen finden Sie unter Anpassen von Attributzuordnungen für die Benutzerbereitstellung für SaaS-Anwendungen in Azure Active Directory.For more information, see Customizing User Provisioning Attribute Mappings

Durchführen und Aufheben der BenutzerbereitstellungUser provisioning and de-provisioning

In der folgenden Abbildung sind die Nachrichten dargestellt, die Azure Active Directory an einen SCIM-Dienst sendet, um den Lebenszyklus eines Benutzers im Identitätsspeicher Ihrer Anwendung zu verwalten.The following illustration shows the messages that Azure Active Directory sends to a SCIM service to manage the lifecycle of a user in your application's identity store.

Zeigt die Abfolge der Durchführung und Aufhebung einer BenutzerbereitstellungShows the user provisioning and de-provisioning sequence
Abbildung 4: Sequenz der Durchführung und Aufhebung einer BenutzerbereitstellungFigure 4: User provisioning and de-provisioning sequence

Durchführen und Aufheben der GruppenbereitstellungGroup provisioning and de-provisioning

Die Gruppenbereitstellung und die Aufhebung einer Gruppenbereitstellung sind optional.Group provisioning and de-provisioning are optional. In der folgenden Abbildung sind die Nachrichten dargestellt, die Azure AD bei entsprechender Implementierung und Aktivierung an einen SCIM-Dienst sendet, um den Lebenszyklus einer Gruppe im Identitätsspeicher Ihrer Anwendung zu verwalten.When implemented and enabled, the following illustration shows the messages that Azure AD sends to a SCIM service to manage the lifecycle of a group in your application's identity store. Diese Nachrichten unterscheiden sich von den Nachrichten zu Benutzern auf zwei Arten:Those messages differ from the messages about users in two ways:

  • Für Anforderungen zum Abrufen von Gruppen wird angegeben, dass das members-Attribut aus allen Ressourcen ausgeschlossen wird, die als Antwort auf die Anforderung bereitgestellt werden.Requests to retrieve groups specify that the members attribute is to be excluded from any resource provided in response to the request.
  • Bei Anforderungen für die Ermittlung, ob ein Referenzattribut einen bestimmten Wert hat, handelt es sich um Anforderungen zum members-Attribut.Requests to determine whether a reference attribute has a certain value are requests about the members attribute.

Zeigt die Abfolge der Durchführung und Aufhebung einer GruppenbereitstellungShows the group provisioning and de-provisioning sequence
Abbildung 5: Sequenz der Durchführung und Aufhebung einer GruppenbereitstellungFigure 5: Group provisioning and de-provisioning sequence

SCIM-Protokollanforderungen und -antwortenSCIM protocol requests and responses

Dieser Abschnitt enthält vom Azure AD-SCIM-Client ausgegebene SCIM-Beispielanforderungen und erwartete Beispielantworten.This section provides example SCIM requests emitted by the Azure AD SCIM client and example expected responses. Die besten Ergebnisse erzielen Sie, wenn Sie Ihre App so codieren, dass diese Anforderungen in diesem Format verarbeitet und die erwarteten Antworten ausgegeben werden.For best results, you should code your app to handle these requests in this format and emit the expected responses.

Wichtig

Lesen Sie Vorgänge während der Bereitstellung, um zu verstehen, wie und wann der Azure AD-Benutzerbereitstellungsdienst die unten beschriebenen Vorgänge ausgibt.To understand how and when the Azure AD user provisioning service emits the operations described below, see What happens during user provisioning?.

Vorgänge für BenutzerUser Operations

  • Benutzer können anhand des Attributs userName oder email[type eq "work"] abgefragt werden.Users can be queried by userName or email[type eq "work"] attributes.

Benutzer erstellenCreate User

AnforderungRequest

POST /UsersPOST /Users

{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
    "externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
    "userName": "Test_User_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
    "active": true,
    "emails": [{
        "primary": true,
        "type": "work",
        "value": "Test_User_fd0ea19b-0777-472c-9f96-4f70d2226f2e@testuser.com"
    }],
    "meta": {
        "resourceType": "User"
    },
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName"
    },
    "roles": []
}
responseResponse

HTTP/1.1 201 CreatedHTTP/1.1 201 Created

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "48af03ac28ad4fb88478",
    "externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_fd0ea19b-0777-472c-9f96-4f70d2226f2e@testuser.com",
        "type": "work",
        "primary": true
    }]
}

Benutzer abrufenGet User

AnforderungRequest

GET /Users/5d48a0a8e9f04aa38008GET /Users/5d48a0a8e9f04aa38008

AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "5d48a0a8e9f04aa38008",
    "externalId": "58342554-38d6-4ec8-948c-50044d0a33fd",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_feed3ace-693c-4e5a-82e2-694be1b39934",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_22370c1a-9012-42b2-bf64-86099c2a1c22@testuser.com",
        "type": "work",
        "primary": true
    }]
}

Benutzer nach Abfrage abrufenGet User by query

AnforderungRequest

GET /Users?filter=userName eq "Test_User_dfeef4c5-5681-4387-b016-bdf221e82081"GET /Users?filter=userName eq "Test_User_dfeef4c5-5681-4387-b016-bdf221e82081"

AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 1,
    "Resources": [{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
        "id": "2441309d85324e7793ae",
        "externalId": "7fce0092-d52e-4f76-b727-3955bd72c939",
        "meta": {
            "resourceType": "User",
            "created": "2018-03-27T19:59:26.000Z",
            "lastModified": "2018-03-27T19:59:26.000Z"
            
        },
        "userName": "Test_User_dfeef4c5-5681-4387-b016-bdf221e82081",
        "name": {
            "familyName": "familyName",
            "givenName": "givenName"
        },
        "active": true,
        "emails": [{
            "value": "Test_User_91b67701-697b-46de-b864-bd0bbe4f99c1@testuser.com",
            "type": "work",
            "primary": true
        }]
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

Benutzer nach Abfrage abrufen – keine ErgebnisseGet User by query - Zero results

AnforderungRequest

GET /Users?filter=userName eq "non-existent user"GET /Users?filter=userName eq "non-existent user"

AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 0,
    "Resources": [],
    "startIndex": 1,
    "itemsPerPage": 20
}

Benutzer aktualisieren [mehrwertige Eigenschaften]Update User [Multi-valued properties]

AnforderungRequest

PATCH /Users/6764549bef60420686bc HTTP/1.1PATCH /Users/6764549bef60420686bc HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
            {
            "op": "Replace",
            "path": "emails[type eq \"work\"].value",
            "value": "updatedEmail@microsoft.com"
            },
            {
            "op": "Replace",
            "path": "name.familyName",
            "value": "updatedFamilyName"
            }
    ]
}
AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "6764549bef60420686bc",
    "externalId": "6c75de36-30fa-4d2d-a196-6bdcdb6b6539",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_fbb9dda4-fcde-4f98-a68b-6c5599e17c27",
    "name": {
        "formatted": "givenName updatedFamilyName",
        "familyName": "updatedFamilyName",
        "givenName": "givenName"
    },
    "active": true,
    "emails": [{
        "value": "updatedEmail@microsoft.com",
        "type": "work",
        "primary": true
    }]
}

Benutzer aktualisieren [einwertige Eigenschaften]Update User [Single-valued properties]

AnforderungRequest

PATCH /Users/5171a35d82074e068ce2 HTTP/1.1PATCH /Users/5171a35d82074e068ce2 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Replace",
        "path": "userName",
        "value": "5b50642d-79fc-4410-9e90-4c077cdd1a59@testuser.com"
    }]
}
AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "5171a35d82074e068ce2",
    "externalId": "aa1eca08-7179-4eeb-a0be-a519f7e5cd1a",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
        
    },
    "userName": "5b50642d-79fc-4410-9e90-4c077cdd1a59@testuser.com",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_49dc1090-aada-4657-8434-4995c25a00f7@testuser.com",
        "type": "work",
        "primary": true
    }]
}

Benutzer löschenDelete User

AnforderungRequest

DELETE /Users/5171a35d82074e068ce2 HTTP/1.1DELETE /Users/5171a35d82074e068ce2 HTTP/1.1

AntwortResponse

HTTP/1.1 204 No ContentHTTP/1.1 204 No Content

Vorgänge für GruppenGroup Operations

  • Gruppen sollen immer mit einer leeren Mitgliederliste erstellt werden.Groups shall always be created with an empty members list.
  • Gruppen können anhand des Attributs displayName abgefragt werden.Groups can be queried by the displayName attribute.
  • Bei einer Aktualisierung der Gruppe mit PATCH-Anforderung sollte in der Antwort HTTP 204 No Content angezeigt werden.Update to the group PATCH request should yield an HTTP 204 No Content in the response. Es ist nicht ratsam, einen Text mit einer Liste aller Mitglieder zurückzugeben.Returning a body with a list of all the members isn't advisable.
  • Die Rückgabe aller Mitglieder der Gruppe muss nicht unterstützt werden.It isn't necessary to support returning all the members of the group.

Erstellen einer GruppeCreate Group

AnforderungRequest

POST /Groups HTTP/1.1POST /Groups HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group", "http://schemas.microsoft.com/2006/11/ResourceManagement/ADSCIM/2.0/Group"],
    "externalId": "8aa1a0c0-c4c3-4bc0-b4a5-2ef676900159",
    "displayName": "displayName",
    "members": [],
    "meta": {
        "resourceType": "Group"
    }
}
AntwortResponse

HTTP/1.1 201 CreatedHTTP/1.1 201 Created

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "id": "927fa2c08dcb4a7fae9e",
    "externalId": "8aa1a0c0-c4c3-4bc0-b4a5-2ef676900159",
    "meta": {
        "resourceType": "Group",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
        
    },
    "displayName": "displayName",
    "members": []
}

Gruppe abrufenGet Group

AnforderungRequest

GET /Groups/40734ae655284ad3abcc?excludedAttributes=members HTTP/1.1GET /Groups/40734ae655284ad3abcc?excludedAttributes=members HTTP/1.1

AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "id": "40734ae655284ad3abcc",
    "externalId": "60f1bb27-2e1e-402d-bcc4-ec999564a194",
    "meta": {
        "resourceType": "Group",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "displayName": "displayName",
}

Gruppe nach „displayName“ abrufenGet Group by displayName

AnforderungRequest

GET /Groups?excludedAttributes=members&filter=displayName eq "displayName" HTTP/1.1GET /Groups?excludedAttributes=members&filter=displayName eq "displayName" HTTP/1.1

AntwortResponse

HTTP/1.1 200 OKHTTP/1.1 200 OK

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 1,
    "Resources": [{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
        "id": "8c601452cc934a9ebef9",
        "externalId": "0db508eb-91e2-46e4-809c-30dcbda0c685",
        "meta": {
            "resourceType": "Group",
            "created": "2018-03-27T22:02:32.000Z",
            "lastModified": "2018-03-27T22:02:32.000Z",
            
        },
        "displayName": "displayName",
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

Gruppe aktualisieren [Nichtmitglieder-Attribute]Update Group [Non-member attributes]

AnforderungRequest

PATCH /Groups/fa2ce26709934589afc5 HTTP/1.1PATCH /Groups/fa2ce26709934589afc5 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Replace",
        "path": "displayName",
        "value": "1879db59-3bdf-4490-ad68-ab880a269474updatedDisplayName"
    }]
}
AntwortResponse

HTTP/1.1 204 No ContentHTTP/1.1 204 No Content

Gruppe aktualisieren [Mitglieder hinzufügen]Update Group [Add Members]

AnforderungRequest

PATCH /Groups/a99962b9f99d4c4fac67 HTTP/1.1PATCH /Groups/a99962b9f99d4c4fac67 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Add",
        "path": "members",
        "value": [{
            "$ref": null,
            "value": "f648f8d5ea4e4cd38e9c"
        }]
    }]
}
AntwortResponse

HTTP/1.1 204 No ContentHTTP/1.1 204 No Content

Gruppe aktualisieren [Mitglieder entfernen]Update Group [Remove Members]

AnforderungRequest

PATCH /Groups/a99962b9f99d4c4fac67 HTTP/1.1PATCH /Groups/a99962b9f99d4c4fac67 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Remove",
        "path": "members",
        "value": [{
            "$ref": null,
            "value": "f648f8d5ea4e4cd38e9c"
        }]
    }]
}
AntwortResponse

HTTP/1.1 204 No ContentHTTP/1.1 204 No Content

Gruppe löschenDelete Group

AnforderungRequest

DELETE /Groups/cdb1ce18f65944079d37 HTTP/1.1DELETE /Groups/cdb1ce18f65944079d37 HTTP/1.1

AntwortResponse

HTTP/1.1 204 No ContentHTTP/1.1 204 No Content

Erstellen eines SCIM-Endpunkts mit Microsoft-CLI-BibliothekenBuilding a SCIM endpoint using Microsoft CLI libraries

Wenn Sie einen SCIM-Webdienst mit Schnittstelle zu Azure Active Directory erstellen, können Sie die automatische Benutzerbereitstellung für nahezu alle Anwendungen oder Identitätsspeicher aktivieren.By creating a SCIM web service that interfaces with Azure Active Directory, you can enable automatic user provisioning for virtually any application or identity store.

So funktioniert es:Here’s how it works:

  1. Azure AD stellt eine Common Language Infrastructure-Bibliothek (CLI-Bibliothek) namens „Microsoft.SystemForCrossDomainIdentityManagement“ mit den unten beschriebenen Codebeispielen bereit.Azure AD provides a common language infrastructure (CLI) library named Microsoft.SystemForCrossDomainIdentityManagement, included with the code samples describe below. Systemintegratoren und Entwickler können diese Bibliothek verwenden, um einen SCIM-basierten Webdienstendpunkt zu erstellen und bereitzustellen, über den Azure AD mit dem Identitätsspeicher einer beliebigen Anwendung verbunden werden kann.System integrators and developers can use this library to create and deploy a SCIM-based web service endpoint that can connect Azure AD to any application’s identity store.
  2. Zuordnungen werden in den Webdienst implementiert, um das standardisierte Benutzerschema dem erforderlichen Benutzerschema und Protokoll für die Anwendung zuzuordnen.Mappings are implemented in the web service to map the standardized user schema to the user schema and protocol required by the application.
  3. Die Endpunkt-URL wird in Azure AD als Teil einer benutzerdefinierten Anwendung im Anwendungskatalog registriert.The endpoint URL is registered in Azure AD as part of a custom application in the application gallery.
  4. Benutzer und Gruppen werden dieser Anwendung in Azure AD zugewiesen.Users and groups are assigned to this application in Azure AD. Bei der Zuweisung werden sie in eine Warteschlange eingereiht, um mit der Zielanwendung synchronisiert zu werden.Upon assignment, they're put into a queue to be synchronized to the target application. Der Synchronisierungsvorgang, der die Warteschlange verarbeitet, wird alle 40 Minuten ausgeführt.The synchronization process handling the queue runs every 40 minutes.

CodebeispieleCode samples

Um diesen Prozess zu vereinfachen, werden Codebeispiele bereitgestellt, in denen ein SCIM-Webdienstendpunkt erstellt und die automatische Bereitstellung demonstriert wird.To make this process easier, code samples are provided, which create a SCIM web service endpoint and demonstrate automatic provisioning. In dem Beispiel wird von einem Anbieter eine Datei mit Zeilen kommagetrennter Werte verwendet, die für Benutzer und Gruppen stehen.The sample is of a provider that maintains a file with rows of comma-separated values representing users and groups.

VoraussetzungenPrerequisites

Erste SchritteGetting started

Die einfachste Möglichkeit zum Implementieren eines SCIM-Endpunkts, der Bereitstellungsanforderungen von Azure AD akzeptiert, ist das Erstellen und Bereitstellen des Codebeispiels, bei dem die bereitgestellten Benutzer in eine Datei mit kommagetrennten Werten (CSV) ausgegeben werden.The easiest way to implement a SCIM endpoint that can accept provisioning requests from Azure AD is to build and deploy the code sample that outputs the provisioned users to a comma-separated value (CSV) file.

So erstellen Sie einen SCIM-BeispielendpunktTo create a sample SCIM endpoint

  1. Laden Sie das Beispielpaket aus https://github.com/Azure/AzureAD-BYOA-Provisioning-Samples/tree/master herunter.Download the code sample package at https://github.com/Azure/AzureAD-BYOA-Provisioning-Samples/tree/master

  2. Entzippen Sie das Paket, und speichern Sie die Daten auf Ihrem Windows-Computer, z.B. unter „C:\AzureAD-BYOA-Provisioning-Samples“.Unzip the package and place it on your Windows machine at a location such as C:\AzureAD-BYOA-Provisioning-Samples.

  3. Starten Sie in diesem Ordner das Projekt „FileProvisioning\Host\FileProvisioningService.csproj“ in Visual Studio.In this folder, launch the FileProvisioning\Host\FileProvisioningService.csproj project in Visual Studio.

  4. Klicken Sie auf Extras > NuGet-Paket-Manager > Paket-Manager-Konsole, und führen Sie die folgenden Befehle für das Projekt „FileProvisioningAgent“ aus, um die Projektmappenverweise aufzulösen:Select Tools > NuGet Package Manager > Package Manager Console, and execute the following commands for the FileProvisioningService project to resolve the solution references:

     Update-Package -Reinstall
    
  5. Erstellen Sie das Projekt „FileProvisioningAgent“.Build the FileProvisioningService project.

  6. Starten Sie die Anwendung „Eingabeaufforderung“ in Windows als Administrator, und verwenden Sie den Befehl cd, um zum Ordner \AzureAD-BYOA-Provisioning-Samples\FileProvisioning\Host\bin\Debug zu wechseln.Launch the Command Prompt application in Windows (as an Administrator), and use the cd command to change the directory to your \AzureAD-BYOA-Provisioning-Samples\FileProvisioning\Host\bin\Debug folder.

  7. Führen Sie den folgenden Befehl aus, und ersetzen Sie dabei <ip-address> durch die IP-Adresse oder den Domänennamen des Windows-Computers:Run the following command, replacing <ip-address> with the IP address or domain name of the Windows machine:

     FileSvc.exe http://<ip-address>:9000 TargetFile.csv
    
  8. Wählen Sie in Windows unter Windows-Einstellungen > Netzwerk- und Interneteinstellungen die Option Windows-Firewall > Erweiterte Einstellungen aus, und erstellen Sie eine Eingangsregel, mit der der eingehende Zugriff auf Port 9000 zugelassen wird.In Windows under Windows Settings > Network & Internet Settings, select the Windows Firewall > Advanced Settings, and create an Inbound Rule that allows inbound access to port 9000.

  9. Falls sich der Windows-Computer hinter einem Router befindet, muss der Router konfiguriert werden, um die Netzwerkadressübersetzung zwischen seinem Port 9000, der gegenüber dem Internet offen ist, und Port 9000 auf dem Windows-Computer durchzuführen.If the Windows machine is behind a router, the router needs to be configured to run Network Access Translation between its port 9000 that is exposed to the internet, and port 9000 on the Windows machine. Diese Konfiguration ist erforderlich, damit Azure AD auf diesen Endpunkt in der Cloud zugreifen kann.This configuration is required for Azure AD to access this endpoint in the cloud.

So registrieren Sie den SCIM-Beispielendpunkt in Azure ADTo register the sample SCIM endpoint in Azure AD

  1. Melden Sie sich am Azure Active Directory-Portal an.Sign in to the Azure Active Directory portal.

  2. Wählen Sie im linken Bereich die Option Unternehmensanwendungen aus.Select Enterprise applications from the left pane. Eine Liste mit allen konfigurierten Apps wird angezeigt, einschließlich Apps, die aus dem Katalog hinzugefügt wurden.A list of all configured apps is shown, including apps that were added from the gallery.

  3. Wählen Sie + Neue Anwendung > Alle > Nicht-Kataloganwendung.Select + New application > All > Non-gallery application.

  4. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Hinzufügen, um ein App-Objekt zu erstellen.Enter a name for your application, and select Add to create an app object. Mit dem erstellten Anwendungsobjekt soll die Ziel-App dargestellt werden, für die Sie einmaliges Anmelden bereitstellen und implementieren möchten, und nicht nur der SCIM-Endpunkt.The application object created is intended to represent the target app you would be provisioning to and implementing single sign-on for, and not just the SCIM endpoint.

  5. Wählen Sie auf dem App-Verwaltungsbildschirm im linken Bereich die Option Bereitstellung.In the app management screen, select Provisioning in the left panel.

  6. Wählen Sie im Menü Bereitstellungsmodus die Option Automatisch aus.In the Provisioning Mode menu, select Automatic.

  7. Geben Sie im Feld Mandanten-URL die URL des SCIM-Endpunkts der Anwendung ein.In the Tenant URL field, enter the URL of the application's SCIM endpoint. Beispiel: https://api.contoso.com/scim/Example: https://api.contoso.com/scim/

  8. Wenn der SCIM-Endpunkt ein OAuth-Bearertoken benötigt, das von einem anderen Aussteller als Azure AD stammt, kopieren Sie das erforderliche OAuth-Bearertoken in das optionale Feld Geheimes Token.If the SCIM endpoint requires an OAuth bearer token from an issuer other than Azure AD, then copy the required OAuth bearer token into the optional Secret Token field. Wird dieses Feld leer gelassen, fügt Azure AD in jede Anforderung ein von Azure AD ausgestelltes OAuth-Bearertoken ein.If this field is left blank, Azure AD includes an OAuth bearer token issued from Azure AD with each request. Apps, die Azure AD als Identitätsanbieter verwenden, können dieses von Azure AD ausgestellte Token überprüfen.Apps that use Azure AD as an identity provider can validate this Azure AD-issued token.

  9. Wählen Sie die Option Verbindung testen, damit Azure Active Directory versucht, eine Verbindung mit dem SCIM-Endpunkt herzustellen.Select Test Connection to have Azure Active Directory attempt to connect to the SCIM endpoint. Wenn der Versuch nicht erfolgreich ist, werden Fehlerinformationen angezeigt.If the attempt fails, error information is displayed.

    Hinweis

    Die Option Verbindung testen fragt den SCIM-Endpunkt nach einem Benutzer ab, der nicht vorhanden ist, und verwendet dabei einen zufälligen global eindeutigen Bezeichner (Globally Unique Identifier, GUID) als entsprechende Eigenschaft, die in der Azure AD-Konfiguration ausgewählt wurde.Test Connection queries the SCIM endpoint for a user that doesn't exist, using a random GUID as the matching property selected in the Azure AD configuration. Die erwartete richtige Antwort ist „HTTP 200 OK“ mit einer leeren SCIM ListResponse-Meldung.The expected correct response is HTTP 200 OK with an empty SCIM ListResponse message

  10. Wählen Sie bei einer erfolgreichen Verbindungsherstellung mit der Anwendung die Option Speichern, um die Administratoranmeldeinformationen zu speichern.If the attempts to connect to the application succeed, then select Save to save the admin credentials.

  11. Im Abschnitt Zuordnungen stehen zwei Sätze von Attributzuordnungen zur Verfügung: eine für Benutzerobjekte und eine für Gruppenobjekte.In the Mappings section, there are two selectable sets of attribute mappings: one for user objects and one for group objects. Wählen Sie beide nacheinander aus, um die Attribute zu überprüfen, die von Azure Active Directory mit Ihrer App synchronisiert werden.Select each one to review the attributes that are synchronized from Azure Active Directory to your app. Beachten Sie, dass die als übereinstimmende Eigenschaften ausgewählten Attribute für den Abgleich der Benutzer und Gruppen in Ihrer App für Updatevorgänge verwendet werden.The attributes selected as Matching properties are used to match the users and groups in your app for update operations. Wählen Sie Speichern aus, um Ihre Änderungen zu committen.Select Save to commit any changes.

  12. Im Feld Bereich unter Einstellungen wird festgelegt, welche Benutzer und Gruppen synchronisiert werden.Under Settings, the Scope field defines which users and or groups are synchronized. Wählen Sie Nur zugewiesene Benutzer und Gruppen synchronisieren (empfohlen) aus, damit nur Benutzer und Gruppen synchronisiert werden, die auf der Registerkarte Benutzer und Gruppen zugewiesen sind.Select "Sync only assigned users and groups (recommended) to only sync users and groups assigned in the Users and groups tab.

  13. Legen Sie den Bereitstellungsstatus nach Abschluss der Konfiguration auf Ein fest.Once your configuration is complete, set the Provisioning Status to On.

  14. Wählen Sie Speichern, um den Azure AD-Bereitstellungsdienst zu starten.Select Save to start the Azure AD provisioning service.

  15. Wenn nur zugewiesene Benutzer und Gruppen synchronisiert werden (empfohlen), sollten Sie darauf achten, dass die Registerkarte Benutzer und Gruppen ausgewählt ist und die Benutzer bzw. Gruppen zugewiesen sind, die synchronisiert werden sollen.If syncing only assigned users and groups (recommended), be sure to select the Users and groups tab and assign the users or groups you want to sync.

Nachdem der erste Zyklus gestartet wurde, können Sie im linken Bereich die Option Überwachungsprotokolle wählen, um den Fortschritt zu überwachen. Hier werden alle Aktionen angezeigt, die vom Bereitstellungsdienst für Ihre App durchgeführt werden.Once the initial cycle has started, you can select Audit logs in the left panel to monitor progress, which shows all actions done by the provisioning service on your app. Weitere Informationen zum Lesen von Azure AD-Bereitstellungsprotokollen finden Sie unter Tutorial: Meldung zur automatischen Benutzerkontobereitstellung.For more information on how to read the Azure AD provisioning logs, see Reporting on automatic user account provisioning.

Der letzte Schritt bei der Überprüfung des Beispiels besteht darin, die Datei „TargetFile.csv“ im Ordner „\AzureAD-BYOA-Provisioning-Samples\ProvisioningAgent\bin\Debug“ auf Ihrem Windows-Computer zu öffnen.The final step in verifying the sample is to open the TargetFile.csv file in the \AzureAD-BYOA-Provisioning-Samples\ProvisioningAgent\bin\Debug folder on your Windows machine. Wenn der Bereitstellungsprozess ausgeführt wird, werden in dieser Datei die Details aller zugewiesenen und bereitgestellten Benutzer und Gruppen angezeigt.Once the provisioning process is run, this file shows the details of all assigned and provisioned users and groups.

EntwicklungsbibliothekenDevelopment libraries

Um Ihren eigenen Webdienst zu entwickeln, der mit der SCIM-Spezifikation übereinstimmt, sollten Sie sich zuerst mit den folgenden Bibliotheken von Microsoft vertraut machen, mit denen der Entwicklungsprozess beschleunigt wird:To develop your own web service that conforms to the SCIM specification, first familiarize yourself with the following libraries provided by Microsoft to help accelerate the development process:

  • Common Language Infrastructure-Bibliotheken (CLI) werden zur Verwendung mit Sprachen angeboten, die auf der betreffenden Infrastruktur basieren, z.B. C#.Common Language Infrastructure (CLI) libraries are offered for use with languages based on that infrastructure, such as C#. Eine dieser Bibliotheken („Microsoft.SystemForCrossDomainIdentityManagement.Service“) deklariert eine Schnittstelle („Microsoft.SystemForCrossDomainIdentityManagement.IProvider“), die in der folgenden Abbildung dargestellt ist.One of those libraries, Microsoft.SystemForCrossDomainIdentityManagement.Service, declares an interface, Microsoft.SystemForCrossDomainIdentityManagement.IProvider, shown in the following illustration. Ein Entwickler, der die Bibliotheken verwendet, würde diese Schnittstelle mit einer Klasse implementieren, die generisch als „Anbieter“ bezeichnet werden kann.A developer using the libraries would implement that interface with a class that may be referred to, generically, as a provider. Die Bibliotheken ermöglichen dem Entwickler die Bereitstellung eines Webdiensts, der die Vorgaben der SCIM-Spezifikation erfüllt.The libraries let the developer deploy a web service that conforms to the SCIM specification. Der Webdienst kann entweder in Internetinformationsdienste oder einer beliebigen ausführbaren CLI-Assembly gehostet werden.The web service can be either hosted within Internet Information Services, or any executable CLI assembly. Anforderungen werden in Aufrufe der Anbietermethoden übersetzt, die vom Entwickler für den Betrieb über einen Identitätsspeicher programmiert werden.Request is translated into calls to the provider’s methods, which would be programmed by the developer to operate on some identity store.

    Aufschlüsselung: Eine Anforderung, die in Aufrufe der Methoden des Anbieters übersetzt wurde

  • ExpressRouten-Handler sind zum Analysieren von Node.js-Anforderungsobjekten verfügbar, die für Aufrufe an einen Node.js-Webdienst stehen (gemäß SCIM-Spezifikation).Express route handlers are available for parsing node.js request objects representing calls (as defined by the SCIM specification), made to a node.js web service.

Erstellen eines benutzerdefinierten SCIM-EndpunktsBuilding a custom SCIM endpoint

Entwickler, die die CLI-Bibliotheken nutzen, können ihre Dienste in einer ausführbaren CLI-Assembly oder in Internetinformationsdienste hosten.Developers using the CLI libraries can host their services within any executable CLI assembly, or within Internet Information Services. Dies ist ein Beispielcode zum Hosten eines Diensts in einer ausführbaren Assembly unter der Adresse http://localhost:9000:Here is sample code for hosting a service within an executable assembly, at the address http://localhost:9000:

 private static void Main(string[] arguments)
 {
 // Microsoft.SystemForCrossDomainIdentityManagement.IMonitor, 
 // Microsoft.SystemForCrossDomainIdentityManagement.IProvider and 
 // Microsoft.SystemForCrossDomainIdentityManagement.Service are all defined in 
 // Microsoft.SystemForCrossDomainIdentityManagement.Service.dll.  

 Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitor = 
   new DevelopersMonitor();
 Microsoft.SystemForCrossDomainIdentityManagement.IProvider provider = 
   new DevelopersProvider(arguments[1]);
 Microsoft.SystemForCrossDomainIdentityManagement.Service webService = null;
 try
 {
     webService = new WebService(monitor, provider);
     webService.Start("http://localhost:9000");

     Console.ReadKey(true);
 }
 finally
 {
     if (webService != null)
     {
         webService.Dispose();
         webService = null;
     }
 }
 }

 public class WebService : Microsoft.SystemForCrossDomainIdentityManagement.Service
 {
 private Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitor;
 private Microsoft.SystemForCrossDomainIdentityManagement.IProvider provider;

 public WebService(
   Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitoringBehavior, 
   Microsoft.SystemForCrossDomainIdentityManagement.IProvider providerBehavior)
 {
     this.monitor = monitoringBehavior;
     this.provider = providerBehavior;
 }

 public override IMonitor MonitoringBehavior
 {
     get
     {
         return this.monitor;
     }

     set
     {
         this.monitor = value;
     }
 }

 public override IProvider ProviderBehavior
 {
     get
     {
         return this.provider;
     }

     set
     {
         this.provider = value;
     }
 }
 }

Dieser Dienst muss über eine HTTP-Adresse und über ein Serverauthentifizierungszertifikat mit einer der folgenden Stammzertifizierungsstellen verfügen:This service must have an HTTP address and server authentication certificate of which the root certification authority is one of the following names:

  • CNNICCNNIC
  • ComodoComodo
  • CyberTrustCyberTrust
  • DigiCertDigiCert
  • GeoTrustGeoTrust
  • GlobalSignGlobalSign
  • Go DaddyGo Daddy
  • VeriSignVeriSign
  • WoSignWoSign

Ein Serverauthentifizierungszertifikat kann an einen Port auf einem Windows-Host gebunden werden, indem das Netzwerk-Shell-Hilfsprogramm verwendet wird:A server authentication certificate can be bound to a port on a Windows host using the network shell utility:

netsh http add sslcert ipport=0.0.0.0:443 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}  

Hier ist der für das certhash-Argument angegebene Wert der Fingerabdruck des Zertifikats, und der für das appid-Argument bereitgestellte Wert ist ein beliebiger eindeutiger Bezeichner (Globally Unique Identifier, GUID).Here, the value provided for the certhash argument is the thumbprint of the certificate, while the value provided for the appid argument is an arbitrary globally unique identifier.

Um den Dienst in Internetinformationsdienste zu hosten, würde ein Entwickler eine CLI-Codebibliothekassembly mit einer Klasse mit dem Namen „Startup“ im Standardnamespace der Assembly erstellen.To host the service within Internet Information Services, a developer would build a CLI code library assembly with a class named Startup in the default namespace of the assembly. Dies ist ein Beispiel für eine Klasse dieser Art:Here is a sample of such a class:

 public class Startup
 {
 // Microsoft.SystemForCrossDomainIdentityManagement.IWebApplicationStarter, 
 // Microsoft.SystemForCrossDomainIdentityManagement.IMonitor and  
 // Microsoft.SystemForCrossDomainIdentityManagement.Service are all defined in 
 // Microsoft.SystemForCrossDomainIdentityManagement.Service.dll.  

 Microsoft.SystemForCrossDomainIdentityManagement.IWebApplicationStarter starter;

 public Startup()
 {
     Microsoft.SystemForCrossDomainIdentityManagement.IMonitor monitor = 
       new DevelopersMonitor();
     Microsoft.SystemForCrossDomainIdentityManagement.IProvider provider = 
       new DevelopersProvider();
     this.starter = 
       new Microsoft.SystemForCrossDomainIdentityManagement.WebApplicationStarter(
         provider, 
         monitor);
 }

 public void Configuration(
   Owin.IAppBuilder builder) // Defined in Owin.dll.  
 {
     this.starter.ConfigureApplication(builder);
 }
 }

Behandeln der EndpunktauthentifizierungHandling endpoint authentication

Anforderungen aus Azure Active Directory enthalten ein OAuth 2.0-Bearertoken.Requests from Azure Active Directory include an OAuth 2.0 bearer token. Alle Dienste, die die Anforderung empfangen, sollten den Aussteller als Azure Active Directory-Instanz für den erwarteten Azure Active Directory-Mandanten authentifizieren, was den Zugriff auf den Graph-Webdienst von Azure Active Directory betrifft.Any service receiving the request should authenticate the issuer as being Azure Active Directory for the expected Azure Active Directory tenant, for access to the Azure Active Directory Graph web service. Im Token wird der Aussteller durch einen iss-Anspruch, z. B. „iss“, identifiziert: „https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/ “.In the token, the issuer is identified by an iss claim, like "iss":"https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/". In diesem Beispiel wird die Basisadresse des Anspruchswerts (https://sts.windows.net ) zum Identifizieren von Azure Active Directory als Aussteller verwendet, und das Segment mit der relativen Adresse (cbb1a5ac-f33b-45fa-9bf5-f37db0fed422) ist ein eindeutiger Bezeichner des Azure Active Directory-Mandanten, für den das Token ausgestellt wurde.In this example, the base address of the claim value, https://sts.windows.net, identifies Azure Active Directory as the issuer, while the relative address segment, cbb1a5ac-f33b-45fa-9bf5-f37db0fed422, is a unique identifier of the Azure Active Directory tenant for which the token was issued. Die Zielgruppe für das Token ist die Anwendungsvorlagen-ID für die App im Katalog.The audience for the token will be the application template ID for the app in the gallery. Die Anwendungsvorlagen-ID für alle benutzerdefinierten Apps lautet „8adf8e6e-67b2-4cf2-a259-e3dc5476c621“.The application template ID for all custom apps is 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Für Apps im Katalog variiert die Anwendungsvorlagen-ID jeweils.The application template ID for each app in the gallery varies. Sollten Sie Fragen zur Anwendungsvorlagen-ID für eine Kataloganwendung haben, wenden Sie sich an ProvisioningFeedback@microsoft.com.Please contact ProvisioningFeedback@microsoft.com for questions on the application template ID for a gallery application. Jede der in einem einzelnen Mandanten registrierten Anwendungen kann den gleichen iss-Anspruch mit SCIM-Anforderungen empfangen.Each of the applications registered in a single tenant may receive the same iss claim with SCIM requests.

Entwickler, die die von Microsoft bereitgestellten CLI-Bibliotheken zum Erstellen eines SCIM-Diensts verwenden, können Anforderungen von Azure Active Directory authentifizieren, indem sie das Microsoft.Owin.Security.ActiveDirectory-Paket verwenden. Hierzu müssen die folgenden Schritte ausgeführt werden:Developers using the CLI libraries provided by Microsoft for building a SCIM service can authenticate requests from Azure Active Directory using the Microsoft.Owin.Security.ActiveDirectory package by following these steps:

  1. Implementieren Sie in einem Anbieter die Microsoft.SystemForCrossDomainIdentityManagement.IProvider.StartupBehavior-Eigenschaft so, dass eine Methode zurückgegeben wird, die bei jedem Start des Diensts aufgerufen werden soll:In a provider, implement the Microsoft.SystemForCrossDomainIdentityManagement.IProvider.StartupBehavior property by having it return a method to be called whenever the service is started:

      public override Action<Owin.IAppBuilder, System.Web.Http.HttpConfiguration.HttpConfiguration> StartupBehavior
      {
        get
        {
          return this.OnServiceStartup;
        }
      }
    
      private void OnServiceStartup(
        Owin.IAppBuilder applicationBuilder,  // Defined in Owin.dll.  
        System.Web.Http.HttpConfiguration configuration)  // Defined in System.Web.Http.dll.  
      {
      }
    
  2. Fügen Sie dieser Methode den folgenden Code hinzu, damit alle Anforderungen an die Endpunkte des Diensts so authentifiziert werden, dass sie über ein Token mit folgenden Eigenschaften verfügen: Es wird von Azure Active Directory für einen angegebenen Mandanten ausgestellt und dient dem Zugriff auf den Graph-Webdienst von Azure AD:Add the following code to that method to have any request to any of the service’s endpoints authenticated as bearing a token issued by Azure Active Directory for a specified tenant, for access to the Azure AD Graph web service:

      private void OnServiceStartup(
        Owin.IAppBuilder applicationBuilder IAppBuilder applicationBuilder, 
        System.Web.Http.HttpConfiguration HttpConfiguration configuration)
      {
        // IFilter is defined in System.Web.Http.dll.  
        System.Web.Http.Filters.IFilter authorizationFilter = 
          new System.Web.Http.AuthorizeAttribute(); // Defined in System.Web.Http.dll.configuration.Filters.Add(authorizationFilter);
    
        // SystemIdentityModel.Tokens.TokenValidationParameters is defined in    
        // System.IdentityModel.Token.Jwt.dll.
        SystemIdentityModel.Tokens.TokenValidationParameters tokenValidationParameters =     
          new TokenValidationParameters()
          {
            ValidAudience = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621"
          };
    
        // WindowsAzureActiveDirectoryBearerAuthenticationOptions is defined in 
        // Microsoft.Owin.Security.ActiveDirectory.dll
        Microsoft.Owin.Security.ActiveDirectory.
        WindowsAzureActiveDirectoryBearerAuthenticationOptions authenticationOptions =
          new WindowsAzureActiveDirectoryBearerAuthenticationOptions()    {
          TokenValidationParameters = tokenValidationParameters,
          Tenant = "03F9FCBC-EA7B-46C2-8466-F81917F3C15E" // Substitute the appropriate tenant’s 
                                                        // identifier for this one.  
        };
    
        applicationBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(authenticationOptions);
      }
    

Vorgehensweise beim Bereitstellen und beim Aufheben der Bereitstellung von BenutzernHandling provisioning and deprovisioning of users

  1. Azure Active Directory fragt den Dienst nach einem Benutzer mit einem externalId-Attributwert ab, der mit dem mailNickname-Attributwert eines Benutzers in Azure AD übereinstimmt.Azure Active Directory queries the service for a user with an externalId attribute value matching the mailNickname attribute value of a user in Azure AD. Die Abfrage wird als Hypertext Transfer-Protokoll-Anforderung (HTTP-Anforderung) wie in diesem Beispiel ausgedrückt, wobei „jyoung“ ein Beispiel für ein mailNickname-Attribut eines Benutzers in Azure Active Directory ist.The query is expressed as a Hypertext Transfer Protocol (HTTP) request such as this example, wherein jyoung is a sample of a mailNickname of a user in Azure Active Directory.

    Hinweis

    Dies ist nur ein Beispiel.This is an example only. Nicht alle Benutzer verfügen über ein mailNickname-Attribut, und der Wert eines Benutzers ist möglicherweise im Verzeichnis nicht eindeutig.Not all users will have a mailNickname attribute, and the value a user has may not be unique in the directory. Das für den Abgleich verwendete Attribut (in diesem Fall „externalId“) kann auch in den Azure AD-Attributzuordnungen konfiguriert werden.Also, the attribute used for matching (which in this case is externalId) is configurable in the Azure AD attribute mappings.

     GET https://.../scim/Users?filter=externalId eq jyoung HTTP/1.1
     Authorization: Bearer ...
    

    Wenn der Dienst mit den von Microsoft bereitgestellten CLI-Bibliotheken zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Query-Methode des Dienstanbieters übersetzt.If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Query method of the service’s provider. Dies ist die Signatur dieser Methode:Here is the signature of that method:

     // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
     // Microsoft.SystemForCrossDomainIdentityManagement.Resource is defined in 
     // Microsoft.SystemForCrossDomainIdentityManagement.Schemas.  
     // Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters is defined in 
     // Microsoft.SystemForCrossDomainIdentityManagement.Protocol.  
    
     System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource[]> Query(
       Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters parameters, 
       string correlationIdentifier);
    

    Dies ist die Definition der Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters-Schnittstelle:Here is the definition of the Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters interface:

     public interface IQueryParameters: 
       Microsoft.SystemForCrossDomainIdentityManagement.IRetrievalParameters
     {
         System.Collections.Generic.IReadOnlyCollection <Microsoft.SystemForCrossDomainIdentityManagement.IFilter> AlternateFilters 
         { get; }
     }
    
     public interface Microsoft.SystemForCrossDomainIdentityManagement.IRetrievalParameters
     {
       system.Collections.Generic.IReadOnlyCollection<string> ExcludedAttributePaths 
       { get; }
       System.Collections.Generic.IReadOnlyCollection<string> RequestedAttributePaths 
       { get; }
       string SchemaIdentifier 
       { get; }
     }
    
      GET https://.../scim/Users?filter=externalId eq jyoung HTTP/1.1
      Authorization: Bearer ...
    

    Wenn der Dienst mit den Common Language Infrastructure-Bibliotheken von Microsoft zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Query-Methode des Dienstanbieters übersetzt.If the service was built using the Common Language Infrastructure libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Query method of the service’s provider. Dies ist die Signatur dieser Methode:Here is the signature of that method:

      // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
      // Microsoft.SystemForCrossDomainIdentityManagement.Resource is defined in 
      // Microsoft.SystemForCrossDomainIdentityManagement.Schemas.  
      // Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters is defined in 
      // Microsoft.SystemForCrossDomainIdentityManagement.Protocol.  
    
      System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource[]>  Query(
        Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters parameters, 
        string correlationIdentifier);
    

    Dies ist die Definition der Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters-Schnittstelle:Here is the definition of the Microsoft.SystemForCrossDomainIdentityManagement.IQueryParameters interface:

      public interface IQueryParameters: 
        Microsoft.SystemForCrossDomainIdentityManagement.IRetrievalParameters
      {
          System.Collections.Generic.IReadOnlyCollection  <Microsoft.SystemForCrossDomainIdentityManagement.IFilter> AlternateFilters 
          { get; }
      }
    
      public interface Microsoft.SystemForCrossDomainIdentityManagement.IRetrievalParameters
      {
        system.Collections.Generic.IReadOnlyCollection<string> ExcludedAttributePaths 
        { get; }
        System.Collections.Generic.IReadOnlyCollection<string> RequestedAttributePaths 
        { get; }
        string SchemaIdentifier 
        { get; }
      }
    
      public interface Microsoft.SystemForCrossDomainIdentityManagement.IFilter
      {
          Microsoft.SystemForCrossDomainIdentityManagement.IFilter AdditionalFilter 
            { get; set; }
          string AttributePath 
            { get; } 
          Microsoft.SystemForCrossDomainIdentityManagement.ComparisonOperator FilterOperator 
            { get; }
          string ComparisonValue 
            { get; }
      }
    
      public enum Microsoft.SystemForCrossDomainIdentityManagement.ComparisonOperator
      {
          Equals
      }
    

    Im folgenden Beispiel für eine Abfrage für einen Benutzer mit einem bestimmten Wert für das externalId-Attribut lauten die Werte der Argumente, die an die Query-Methode übergeben werden, wie folgt:In the following sample of a query for a user with a given value for the externalId attribute, values of the arguments passed to the Query method are:

    • parameters.AlternateFilters.Count: 1parameters.AlternateFilters.Count: 1
    • parameters.AlternateFilters.ElementAt(0).AttributePath: "externalId"parameters.AlternateFilters.ElementAt(0).AttributePath: "externalId"
    • parameters.AlternateFilters.ElementAt(0).ComparisonOperator: ComparisonOperator.Equalsparameters.AlternateFilters.ElementAt(0).ComparisonOperator: ComparisonOperator.Equals
    • parameters.AlternateFilter.ElementAt(0).ComparisonValue: "jyoung"parameters.AlternateFilter.ElementAt(0).ComparisonValue: "jyoung"
    • correlationIdentifier: System.Net.Http.HttpRequestMessage.GetOwinEnvironment["owin.RequestId"]correlationIdentifier: System.Net.Http.HttpRequestMessage.GetOwinEnvironment["owin.RequestId"]
  2. Wenn in der Antwort auf eine Abfrage an den Webdienst für einen Benutzer mit einem externalId-Attributwert, der mit dem mailNickname-Attributwert eines Benutzers übereinstimmt, keine Benutzer zurückgegeben werden, stellt Azure Active Directory die folgende Anforderung: Der Dienst muss einen Benutzer bereitstellen, der dem Benutzer in Azure Active Directory entspricht.If the response to a query to the web service for a user with an externalId attribute value that matches the mailNickname attribute value of a user doesn't return any users, then Azure Active Directory requests that the service provision a user corresponding to the one in Azure Active Directory. Dies ist ein Beispiel für eine Anforderung dieser Art:Here is an example of such a request:

     POST https://.../scim/Users HTTP/1.1
     Authorization: Bearer ...
     Content-type: application/scim+json
     {
       "schemas":
       [
         "urn:ietf:params:scim:schemas:core:2.0:User",
         "urn:ietf:params:scim:schemas:extension:enterprise:2.0User"],
       "externalId":"jyoung",
       "userName":"jyoung",
       "active":true,
       "addresses":null,
       "displayName":"Joy Young",
       "emails": [
         {
           "type":"work",
           "value":"jyoung@Contoso.com",
           "primary":true}],
       "meta": {
         "resourceType":"User"},
        "name":{
         "familyName":"Young",
         "givenName":"Joy"},
       "phoneNumbers":null,
       "preferredLanguage":null,
       "title":null,
       "department":null,
       "manager":null}
    

    Mit den von Microsoft bereitgestellten CLI-Bibliotheken zum Implementieren von SCIM-Diensten wird diese Anforderung in einen Aufruf der Create-Methode des Dienstanbieters übersetzt.The CLI libraries provided by Microsoft for implementing SCIM services would translate that request into a call to the Create method of the service’s provider. Die Create-Methode hat die folgende Signatur:The Create method has this signature:

     // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
     // Microsoft.SystemForCrossDomainIdentityManagement.Resource is defined in 
     // Microsoft.SystemForCrossDomainIdentityManagement.Schemas.  
    
     System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource> Create(
       Microsoft.SystemForCrossDomainIdentityManagement.Resource resource, 
       string correlationIdentifier);
    

    In einer Anforderung zum Bereitstellen eines Benutzers ist der Wert des Ressourcenarguments eine Instanz von „Microsoft.SystemForCrossDomainIdentityManagement“.In a request to provision a user, the value of the resource argument is an instance of the Microsoft.SystemForCrossDomainIdentityManagement. Die Core2EnterpriseUser-Klasse, die in der Microsoft.SystemForCrossDomainIdentityManagement.Schemas-Bibliothek definiert ist.Core2EnterpriseUser class, defined in the Microsoft.SystemForCrossDomainIdentityManagement.Schemas library. Wenn die Anforderung zum Bereitstellen des Benutzers erfolgreich ist, wird von der Implementierung der Methode erwartet, dass eine Instanz der Microsoft.SystemForCrossDomainIdentityManagement.If the request to provision the user succeeds, then the implementation of the method is expected to return an instance of the Microsoft.SystemForCrossDomainIdentityManagement. Core2EnterpriseUser-Klasse zurückgegeben wird, für die der Wert der Identifier-Eigenschaft auf den eindeutigen Bezeichner des neu bereitgestellten Benutzers festgelegt ist.Core2EnterpriseUser class, with the value of the Identifier property set to the unique identifier of the newly provisioned user.

  3. Zum Aktualisieren eines Benutzers, der in einem Identitätsspeicher mit vorgelagertem SCIM vorhanden ist, geht Azure Active Directory so vor, dass der aktuelle Status dieses Benutzers vom Dienst per Anforderung abgefragt wird. Die Anforderung hierzu sieht wie folgt aus:To update a user known to exist in an identity store fronted by an SCIM, Azure Active Directory proceeds by requesting the current state of that user from the service with a request such as:

     GET ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
     Authorization: Bearer ...
    

    Bei einem mit den von Microsoft bereitgestellten CLI-Bibliotheken zum Implementieren von SCIM-Diensten erstellten Dienst wird die Anforderung in einen Aufruf der Retrieve-Methode des Dienstanbieters übersetzt.In a service built using the CLI libraries provided by Microsoft for implementing SCIM services, the request is translated into a call to the Retrieve method of the service’s provider. Dies ist die Signatur der Retrieve-Methode:Here is the signature of the Retrieve method:

     // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
     // Microsoft.SystemForCrossDomainIdentityManagement.Resource and 
     // Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters 
     // are defined in Microsoft.SystemForCrossDomainIdentityManagement.Schemas.  
     System.Threading.Tasks.Task<Microsoft.SystemForCrossDomainIdentityManagement.Resource> 
        Retrieve(
          Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters 
            parameters, 
            string correlationIdentifier);
    
     public interface 
       Microsoft.SystemForCrossDomainIdentityManagement.IResourceRetrievalParameters:   
         IRetrievalParameters
         {
           Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier 
             ResourceIdentifier 
               { get; }
     }
     public interface Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier
     {
         string Identifier 
           { get; set; }
         string Microsoft.SystemForCrossDomainIdentityManagement.SchemaIdentifier 
           { get; set; }
     }
    

    Im Beispiels für eine Anforderung zum Abrufen des aktuellen Status eines Benutzers lauten die Werte der Eigenschaften des Objekts, das als Wert des parameters-Arguments angegeben wird, wie folgt:In the example of a request to retrieve the current state of a user, the values of the properties of the object provided as the value of the parameters argument are as follows:

    • Bezeichner: „54D382A4-2050-4C03-94D1-E769F1D15682“Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
    • SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
  4. Wenn ein Verweisattribut aktualisiert werden soll, fragt Azure Active Directory den Dienst ab, um zu ermitteln, ob der aktuelle Wert des Verweisattributs im Identitätsspeicher mit vorgelagertem Dienst bereits mit dem Wert dieses Attributs in Azure Active Directory übereinstimmt.If a reference attribute is to be updated, then Azure Active Directory queries the service to determine whether the current value of the reference attribute in the identity store fronted by the service already matches the value of that attribute in Azure Active Directory. Bei Benutzern ist das einzige Attribut, für das der aktuelle Wert auf diese Weise abgefragt wird, das manager-Attribut.For users, the only attribute of which the current value is queried in this way is the manager attribute. Dies ist ein Beispiel für eine Anforderung, mit der ermittelt wird, ob das manager-Attribut eines bestimmten Benutzerobjekts derzeit über einen bestimmten Wert verfügt:Here is an example of a request to determine whether the manager attribute of a particular user object currently has a certain value:

    Wenn der Dienst mit den von Microsoft bereitgestellten CLI-Bibliotheken zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Query-Methode des Dienstanbieters übersetzt.If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Query method of the service’s provider. Der Wert der Eigenschaften des Objekts, das als Wert des parameters-Arguments angegeben wird, lautet wie folgt:The value of the properties of the object provided as the value of the parameters argument are as follows:

    • parameters.AlternateFilters.Count: 2parameters.AlternateFilters.Count: 2
    • parameters.AlternateFilters.ElementAt(x).AttributePath: „ID“parameters.AlternateFilters.ElementAt(x).AttributePath: "ID"
    • parameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equalsparameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equals
    • parameters.AlternateFilter.ElementAt(x).ComparisonValue: „54D382A4-2050-4C03-94D1-E769F1D15682“parameters.AlternateFilter.ElementAt(x).ComparisonValue: "54D382A4-2050-4C03-94D1-E769F1D15682"
    • parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"
    • parameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equalsparameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equals
    • parameters.AlternateFilter.ElementAt(y).ComparisonValue: „2819c223-7f76-453a-919d-413861904646“parameters.AlternateFilter.ElementAt(y).ComparisonValue: "2819c223-7f76-453a-919d-413861904646"
    • parameters.RequestedAttributePaths.ElementAt(0): „ID“parameters.RequestedAttributePaths.ElementAt(0): "ID"
    • parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

    Hier kann der Wert von Index x „0“ und der Wert von Index y „1“ lauten, oder der Wert von x kann „1“ und der Wert von y „0“ lauten. Dies hängt von der Reihenfolge bei den Ausdrücken des Filterabfrageparameters ab.Here, the value of the index x can be 0 and the value of the index y can be 1, or the value of x can be 1 and the value of y can be 0, depending on the order of the expressions of the filter query parameter.

  5. Dies ist ein Beispiel für eine Anforderung von Azure Active Directory an einen SCIM-Dienst zum Aktualisieren eines Benutzers:Here is an example of a request from Azure Active Directory to an SCIM service to update a user:

     PATCH ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
     Authorization: Bearer ...
     Content-type: application/scim+json
     {
       "schemas": 
       [
         "urn:ietf:params:scim:api:messages:2.0:PatchOp"],
       "Operations":
       [
         {
           "op":"Add",
           "path":"manager",
           "value":
             [
               {
                 "$ref":"http://.../scim/Users/2819c223-7f76-453a-919d-413861904646",
                 "value":"2819c223-7f76-453a-919d-413861904646"}]}]}
    

    Mit den CLI-Bibliotheken von Microsoft zum Implementieren von SCIM-Diensten wird die Anforderung in einen Aufruf der Update-Methode des Dienstanbieters übersetzt.The Microsoft CLI libraries for implementing SCIM services would translate the request into a call to the Update method of the service’s provider. Dies ist die Signatur der Update-Methode:Here is the signature of the Update method:

     // System.Threading.Tasks.Tasks and 
     // System.Collections.Generic.IReadOnlyCollection<T>
     // are defined in mscorlib.dll.  
     // Microsoft.SystemForCrossDomainIdentityManagement.IPatch, 
     // Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase, 
     // Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier, 
     // Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation, 
     // Microsoft.SystemForCrossDomainIdentityManagement.OperationName, 
     // Microsoft.SystemForCrossDomainIdentityManagement.IPath and 
     // Microsoft.SystemForCrossDomainIdentityManagement.OperationValue 
     // are all defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol. 
    
     System.Threading.Tasks.Task Update(
       Microsoft.SystemForCrossDomainIdentityManagement.IPatch patch, 
       string correlationIdentifier);
    
     public interface Microsoft.SystemForCrossDomainIdentityManagement.IPatch
     {
     Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase 
       PatchRequest 
         { get; set; }
     Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier 
       ResourceIdentifier 
         { get; set; }        
     }
    
     public class PatchRequest2: 
       Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase
     {
     public System.Collections.Generic.IReadOnlyCollection
       <Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation> 
         Operations
         { get;}
    

    Wenn der Dienst mit den Common Language Infrastructure-Bibliotheken von Microsoft zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Query-Methode des Dienstanbieters übersetzt.If the service was built using the Common Language Infrastructure libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Query method of the service’s provider. Der Wert der Eigenschaften des Objekts, das als Wert des parameters-Arguments angegeben wird, lautet wie folgt:The value of the properties of the object provided as the value of the parameters argument are as follows:

  • parameters.AlternateFilters.Count: 2parameters.AlternateFilters.Count: 2

  • parameters.AlternateFilters.ElementAt(x).AttributePath: „ID“parameters.AlternateFilters.ElementAt(x).AttributePath: "ID"

  • parameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equalsparameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equals

  • parameters.AlternateFilter.ElementAt(x).ComparisonValue: „54D382A4-2050-4C03-94D1-E769F1D15682“parameters.AlternateFilter.ElementAt(x).ComparisonValue: "54D382A4-2050-4C03-94D1-E769F1D15682"

  • parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"

  • parameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equalsparameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equals

  • parameters.AlternateFilter.ElementAt(y).ComparisonValue: „2819c223-7f76-453a-919d-413861904646“parameters.AlternateFilter.ElementAt(y).ComparisonValue: "2819c223-7f76-453a-919d-413861904646"

  • parameters.RequestedAttributePaths.ElementAt(0): „ID“parameters.RequestedAttributePaths.ElementAt(0): "ID"

  • parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

    Hier kann der Wert von Index x „0“ und der Wert von Index y „1“ lauten, oder der Wert von x kann „1“ und der Wert von y „0“ lauten. Dies hängt von der Reihenfolge bei den Ausdrücken des Filterabfrageparameters ab.Here, the value of the index x can be 0 and the value of the index y can be 1, or the value of x can be 1 and the value of y can be 0, depending on the order of the expressions of the filter query parameter.

  1. Dies ist ein Beispiel für eine Anforderung von Azure Active Directory an einen SCIM-Dienst zum Aktualisieren eines Benutzers:Here is an example of a request from Azure Active Directory to an SCIM service to update a user:

      PATCH ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
      Authorization: Bearer ...
      Content-type: application/scim+json
      {
        "schemas": 
        [
          "urn:ietf:params:scim:api:messages:2.0:PatchOp"],
        "Operations":
        [
          {
            "op":"Add",
            "path":"manager",
            "value":
              [
                {
                  "$ref":"http://.../scim/Users/2819c223-7f76-453a-919d-413861904646",
                  "value":"2819c223-7f76-453a-919d-413861904646"}]}]}
    

    Mit den Common Language Infrastructure-Bibliotheken von Microsoft zum Implementieren von SCIM-Diensten wird die Anforderung in einen Aufruf der Update-Methode des Dienstanbieters übersetzt.The Microsoft Common Language Infrastructure libraries for implementing SCIM services would translate the request into a call to the Update method of the service’s provider. Dies ist die Signatur der Update-Methode:Here is the signature of the Update method:

      // System.Threading.Tasks.Tasks and 
      // System.Collections.Generic.IReadOnlyCollection<T>
      // are defined in mscorlib.dll.  
      // Microsoft.SystemForCrossDomainIdentityManagement.IPatch, 
      // Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase, 
      // Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier, 
      // Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation, 
      // Microsoft.SystemForCrossDomainIdentityManagement.OperationName, 
      // Microsoft.SystemForCrossDomainIdentityManagement.IPath and 
      // Microsoft.SystemForCrossDomainIdentityManagement.OperationValue 
      // are all defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol. 
    
      System.Threading.Tasks.Task Update(
        Microsoft.SystemForCrossDomainIdentityManagement.IPatch patch, 
        string correlationIdentifier);
    
      public interface Microsoft.SystemForCrossDomainIdentityManagement.IPatch
      {
      Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase 
        PatchRequest 
          { get; set; }
      Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier 
        ResourceIdentifier 
          { get; set; }        
      }
    
      public class PatchRequest2: 
        Microsoft.SystemForCrossDomainIdentityManagement.PatchRequestBase
      {
      public System.Collections.Generic.IReadOnlyCollection
        <Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation> 
          Operations
          { get;}
    
      public void AddOperation(
        Microsoft.SystemForCrossDomainIdentityManagement.PatchOperation operation);
      }
    
      public class PatchOperation
      {
      public Microsoft.SystemForCrossDomainIdentityManagement.OperationName 
        Name
        { get; set; }
    
      public Microsoft.SystemForCrossDomainIdentityManagement.IPath 
        Path
        { get; set; }
    
      public System.Collections.Generic.IReadOnlyCollection
        <Microsoft.SystemForCrossDomainIdentityManagement.OperationValue> Value
        { get; }
    
      public void AddValue(
        Microsoft.SystemForCrossDomainIdentityManagement.OperationValue value);
      }
    
      public enum OperationName
      {
        Add,
        Remove,
        Replace
      }
    
      public interface IPath
      {
        string AttributePath { get; }
        System.Collections.Generic.IReadOnlyCollection<IFilter> SubAttributes { get; }
        Microsoft.SystemForCrossDomainIdentityManagement.IPath ValuePath { get; }
      }
    
      public class OperationValue
      {
        public string Reference
        { get; set; }
    
        public string Value
        { get; set; }
      }
    

    Im Beispiel für eine Anforderung zum Aktualisieren eines Benutzers verfügt das Objekt, das als Wert des patch-Arguments angegeben wird, über diese Eigenschaftswerte:In the example of a request to update a user, the object provided as the value of the patch argument has these property values:

    • ResourceIdentifier.Identifier: „54D382A4-2050-4C03-94D1-E769F1D15682“ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
    • ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
    • (PatchRequest as PatchRequest2).Operations.Count: 1(PatchRequest as PatchRequest2).Operations.Count: 1
    • (PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName: OperationName.Add(PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName: OperationName.Add
    • (PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath: "manager"(PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath: "manager"
    • (PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count: 1(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count: 1
    • (PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference: http://.../scim/Users/2819c223-7f76-453a-919d-413861904646(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference: http://.../scim/Users/2819c223-7f76-453a-919d-413861904646
    • (PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value: 2819c223-7f76-453a-919d-413861904646(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value: 2819c223-7f76-453a-919d-413861904646
  2. Um die Bereitstellung für einen Benutzer aus einem Identitätsspeicher mit vorgelagertem SCIM-Dienst aufzuheben, sendet Azure AD eine Anforderung der folgenden Art:To de-provision a user from an identity store fronted by an SCIM service, Azure AD sends a request such as:

      DELETE ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
      Authorization: Bearer ...
    

    Wenn der Dienst mit den Common Language Infrastructure-Bibliotheken von Microsoft zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Delete-Methode des Dienstanbieters übersetzt.If the service was built using the Common Language Infrastructure libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Delete method of the service’s provider. Diese Methode verfügt über folgende Signatur:That method has this signature:

      // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
      // Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier, 
      // is defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol. 
      System.Threading.Tasks.Task Delete(
        Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier  
          resourceIdentifier, 
        string correlationIdentifier);
    

    Im Beispiel für eine Anforderung zum Aufheben der Bereitstellung eines Benutzers verfügt das Objekt, das als Wert des resourceIdentifier-Arguments angegeben wird, über diese Eigenschaftswerte:The object provided as the value of the resourceIdentifier argument has these property values in the example of a request to de-provision a user:

  3. Um die Bereitstellung für einen Benutzer aus einem Identitätsspeicher mit vorgelagertem SCIM-Dienst aufzuheben, sendet Azure AD eine Anforderung der folgenden Art:To de-provision a user from an identity store fronted by an SCIM service, Azure AD sends a request such as:

     DELETE ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
     Authorization: Bearer ...
    

    Wenn der Dienst mit den von Microsoft bereitgestellten CLI-Bibliotheken zum Implementieren von SCIM-Diensten erstellt wurde, wird die Anforderung in einen Aufruf der Delete-Methode des Dienstanbieters übersetzt.If the service was built using the CLI libraries provided by Microsoft for implementing SCIM services, then the request is translated into a call to the Delete method of the service’s provider. Diese Methode verfügt über folgende Signatur:That method has this signature:

     // System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
     // Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier, 
     // is defined in Microsoft.SystemForCrossDomainIdentityManagement.Protocol. 
     System.Threading.Tasks.Task Delete(
       Microsoft.SystemForCrossDomainIdentityManagement.IResourceIdentifier  
         resourceIdentifier, 
       string correlationIdentifier);
    

    Im Beispiel für eine Anforderung zum Aufheben der Bereitstellung eines Benutzers verfügt das Objekt, das als Wert des resourceIdentifier-Arguments angegeben wird, über diese Eigenschaftswerte:The object provided as the value of the resourceIdentifier argument has these property values in the example of a request to de-provision a user:

    • ResourceIdentifier.Identifier: „54D382A4-2050-4C03-94D1-E769F1D15682“ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
    • ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

Referenz zum Benutzer- und GruppenschemaUser and group schema reference

Azure Active Directory kann für SCIM-Webdienste zwei Arten von Ressourcen bereitstellen.Azure Active Directory can provision two types of resources to SCIM web services. Diese Arten von Ressourcen sind Benutzer und Gruppen.Those types of resources are users and groups.

Benutzerressourcen werden durch den Schemabezeichner urn:ietf:params:scim:schemas:extension:enterprise:2.0:User identifiziert, der in dieser Protokollspezifikation enthalten ist: https://tools.ietf.org/html/rfc7643.User resources are identified by the schema identifier, urn:ietf:params:scim:schemas:extension:enterprise:2.0:User, which is included in this protocol specification: https://tools.ietf.org/html/rfc7643. Die Standardzuordnung der Attribute von Benutzern in Azure Active Directory zu den Attributen von Benutzerressourcen ist in Tabelle 1 angegeben.The default mapping of the attributes of users in Azure Active Directory to the attributes of user resources is provided in Table 1.

Gruppenressourcen werden durch die Schema-ID, urn:ietf:params:scim:schemas:core:2.0:Group, identifiziert.Group resources are identified by the schema identifier, urn:ietf:params:scim:schemas:core:2.0:Group. Die Standardzuordnung der Attribute von Gruppen in Azure Active Directory zu den Attributen von Gruppenressourcen ist in Tabelle 2 angegeben.Table 2 shows the default mapping of the attributes of groups in Azure Active Directory to the attributes of group resources.

Tabelle 1: Standardzuordnung von BenutzerattributenTable 1: Default user attribute mapping

Azure Active Directory-BenutzerAzure Active Directory user "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User""urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
IsSoftDeletedIsSoftDeleted aktivactive
displayNamedisplayName displayNamedisplayName
Facsimile-TelephoneNumberFacsimile-TelephoneNumber phoneNumbers[type eq "fax"].valuephoneNumbers[type eq "fax"].value
givenNamegivenName name.givenNamename.givenName
jobTitlejobTitle titletitle
mailmail emails[type eq "work"].valueemails[type eq "work"].value
mailNicknamemailNickname externalIdexternalId
managermanager managermanager
mobilemobile phoneNumbers[type eq "mobile"].valuephoneNumbers[type eq "mobile"].value
objectIdobjectId idID
postalCodepostalCode addresses[type eq "work"].postalCodeaddresses[type eq "work"].postalCode
proxy-Addressesproxy-Addresses emails[type eq "other"].Valueemails[type eq "other"].Value
physical-Delivery-OfficeNamephysical-Delivery-OfficeName addresses[type eq "other"].Formattedaddresses[type eq "other"].Formatted
streetAddressstreetAddress addresses[type eq "work"].streetAddressaddresses[type eq "work"].streetAddress
surnamesurname name.familyNamename.familyName
telephone-Numbertelephone-Number phoneNumbers[type eq "work"].valuephoneNumbers[type eq "work"].value
user-PrincipalNameuser-PrincipalName userNameuserName

Tabelle 2: Standardzuordnung von GruppenattributenTable 2: Default group attribute mapping

Azure Active Directory-GruppeAzure Active Directory group urn:ietf:params:scim:schemas:core:2.0:Groupurn:ietf:params:scim:schemas:core:2.0:Group
displayNamedisplayName externalIdexternalId
mailmail emails[type eq "work"].valueemails[type eq "work"].value
mailNicknamemailNickname displayNamedisplayName
membersmembers membersmembers
objectIdobjectId idID
proxyAddressesproxyAddresses emails[type eq "other"].Valueemails[type eq "other"].Value

Zulassen, dass vom Azure AD-Bereitstellungsdienst verwendete IP-Adressen SCIM-Anforderungen sendenAllow IP addresses used by the Azure AD provisioning service to make SCIM requests

Bestimmte Apps lassen eingehenden Datenverkehr für ihre App zu.Certain apps allow inbound traffic to their app. Damit der Azure AD-Bereitstellungsdienst erwartungsgemäß funktioniert, müssen die verwendeten IP-Adressen zulässig sein.In order for the Azure AD provisioning service to function as expected, the IP addresses used must be allowed. Eine Liste der IP-Adressen für die einzelnen Diensttags/Regionen finden Sie in der JSON-Datei unter Azure-IP-Bereiche und -Diensttags – öffentliche Cloud.For a list of IP addresses for each service tag/region, see the JSON file - Azure IP Ranges and Service Tags – Public Cloud. Sie können diese IP-Adressen herunterladen und bei Bedarf für Ihre Firewall programmieren.You can download and program these IPs into your firewall as needed. Die reservierten IP-Adressbereiche für die Azure AD-Bereitstellung finden Sie unter „AzureActiveDirectoryDomainServices“.The reserved IP ranges for Azure AD provisioning can be found under "AzureActiveDirectoryDomainServices."