Samouczek: opracowywanie i planowanie aprowizacji punktu końcowego SCIM w usłudze Microsoft Entra ID
Jako deweloper aplikacji możesz użyć interfejsu API zarządzania użytkownikami między domenami (SCIM, System for Cross-Domain Identity Management), aby umożliwić automatyczną aprowizację użytkowników i grup między aplikacją a identyfikatorem Entra firmy Microsoft. W tym artykule opisano sposób tworzenia punktu końcowego SCIM i integracji z usługą aprowizacji firmy Microsoft. Specyfikacja SCIM udostępnia wspólny schemat użytkownika na potrzeby aprowizacji. W przypadku użycia ze standardami federacyjnymi, takimi jak SAML lub OpenID Connect, program SCIM zapewnia administratorom kompleksowe, oparte na standardach rozwiązanie do zarządzania dostępem.
SCIM 2.0 to ustandaryzowana definicja dwóch punktów końcowych: /Users
punktu końcowego i punktu końcowego /Groups
. Używa on typowych punktów końcowych interfejsu API REST do tworzenia, aktualizowania i usuwania obiektów. SCIM składa się ze wstępnie zdefiniowanego schematu typowych atrybutów, takich jak nazwa grupy, nazwa użytkownika, imię, nazwisko i adres e-mail.
Aplikacje, które oferują interfejs API REST SCIM 2.0, mogą zmniejszyć lub wyeliminować ból pracy z zastrzeżonym interfejsem API zarządzania użytkownikami. Na przykład każdy zgodny klient SCIM wie, jak utworzyć wpis HTTP POST obiektu JSON w /Users
punkcie końcowym w celu utworzenia nowego wpisu użytkownika. Zamiast potrzebować nieco innego interfejsu API dla tych samych podstawowych akcji, aplikacje zgodne ze standardem SCIM mogą natychmiast korzystać z istniejących klientów, narzędzi i kodu.
Standardowy schemat obiektów użytkownika i interfejsy API rest do zarządzania zdefiniowane w standardzie SCIM 2.0 (RFC 7642, 7643, 7644) umożliwiają dostawcom tożsamości i aplikacjom łatwiejsze integrowanie się ze sobą. Deweloperzy aplikacji, którzy tworzą punkt końcowy SCIM, mogą integrować się z dowolnym klientem zgodnym ze standardem SCIM bez konieczności wykonywania niestandardowych czynności.
Aby zautomatyzować aprowizowanie aplikacji, wymaga ona utworzenia i zintegrowania punktu końcowego SCIM, który jest dostępny przez usługę aprowizacji firmy Microsoft. Wykonaj poniższe kroki, aby rozpocząć aprowizowanie użytkowników i grup w aplikacji.
Projektowanie schematu użytkownika i grupy — zidentyfikuj obiekty i atrybuty aplikacji, aby określić sposób mapowania ich na schemat użytkownika i grupy obsługiwany przez implementację rozwiązania Microsoft Entra SCIM.
Omówienie implementacji rozwiązania Microsoft Entra SCIM — dowiedz się, w jaki sposób usługa aprowizacji firmy Microsoft jest implementowana w celu modelowania obsługi żądań i odpowiedzi protokołu SCIM.
Tworzenie punktu końcowego SCIM — punkt końcowy musi być zgodny z protokołem SCIM 2.0 w celu zintegrowania z usługą aprowizacji firmy Microsoft. Jako opcja użyj bibliotek infrastruktury języka wspólnego firmy Microsoft i przykładów kodu, aby skompilować punkt końcowy. Te przykłady są przeznaczone tylko do celów referencyjnych i testowych; Zalecamy używanie ich jako zależności w aplikacji produkcyjnej.
Zintegruj punkt końcowy SCIM z usługą aprowizacji firmy Microsoft. Identyfikator Entra firmy Microsoft obsługuje kilka aplikacji innych firm, które implementują protokół SCIM 2.0. Jeśli używasz jednej z tych aplikacji, możesz szybko zautomatyzować aprowizowanie i anulowanie aprowizacji użytkowników i grup.
[Opcjonalnie] Publikowanie aplikacji w galerii aplikacji Microsoft Entra — ułatwia klientom odnajdywanie aplikacji i łatwe konfigurowanie aprowizacji.
Projektowanie schematu użytkownika i grupy
Każda aplikacja wymaga różnych atrybutów do utworzenia użytkownika lub grupy. Rozpocznij integrację, identyfikując wymagane obiekty (użytkowników, grupy) i atrybuty (nazwa, menedżer, stanowisko itd.), których potrzebuje aplikacja.
Standard SCIM definiuje schemat zarządzania użytkownikami i grupami.
Podstawowy schemat użytkownika wymaga tylko trzech atrybutów (wszystkie inne atrybuty są opcjonalne):
id
, identyfikator zdefiniowany przez dostawcę usługuserName
, unikatowy identyfikator użytkownika (zazwyczaj mapuje na główną nazwę użytkownika Firmy Microsoft Entra)meta
, metadane tylko do odczytu obsługiwane przez dostawcę usług
Oprócz podstawowego schematu użytkownika standard SCIM definiuje rozszerzenie użytkownika przedsiębiorstwa z modelem rozszerzania schematu użytkownika w celu zaspokojenia potrzeb aplikacji.
Jeśli na przykład aplikacja wymaga zarówno poczty e-mail użytkownika, jak i menedżera użytkownika, użyj podstawowego schematu, aby zebrać adres e-mail użytkownika i schemat użytkownika przedsiębiorstwa , aby zebrać menedżera użytkownika.
Aby zaprojektować schemat, wykonaj następujące kroki:
Wyświetl listę atrybutów wymaganych przez aplikację, a następnie kategoryzuj jako atrybuty wymagane do uwierzytelniania (na przykład loginName i email). Atrybuty są potrzebne do zarządzania cyklem życia użytkownika (na przykład stan/aktywny) i wszystkie inne atrybuty potrzebne do działania aplikacji (na przykład menedżer, tag).
Sprawdź, czy atrybuty są już zdefiniowane w podstawowym schemacie użytkownika lub schemacie użytkownika przedsiębiorstwa. Jeśli nie, musisz zdefiniować rozszerzenie schematu użytkownika, które obejmuje brakujące atrybuty. Zobacz przykład rozszerzenia dla użytkownika, aby umożliwić aprowizowanie użytkownika
tag
.Mapowanie atrybutów SCIM na atrybuty użytkownika w identyfikatorze Entra firmy Microsoft. Jeśli jeden z atrybutów zdefiniowanych w punkcie końcowym SCIM nie ma wyraźnego odpowiednika w schemacie użytkownika Microsoft Entra, poprowadz administratora dzierżawy w celu rozszerzenia schematu lub użyj atrybutu rozszerzenia, jak pokazano w przykładzie
tags
dla właściwości.
W poniższej tabeli wymieniono przykład wymaganych atrybutów:
Wymagany atrybut aplikacji/przykład | Zamapowany atrybut SCIM | Zamapowany atrybut Microsoft Entra |
---|---|---|
loginName | userName | userPrincipalName |
firstName | name.givenName | givenName |
lastName | name.familyName | nazwisko |
workMail | emails[type eq "work"].value | Adres pocztowy |
manager | manager | manager |
tag | urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User:tag |
extensionAttribute1 |
status | aktywne | isSoftDeleted (obliczona wartość nie jest przechowywana na użytkowniku) |
Poniższy ładunek JSON przedstawia przykładowy schemat SCIM:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User"],
"userName":"bjensen@testuser.com",
"id": "48af03ac28ad4fb88478",
"externalId":"bjensen",
"name":{
"familyName":"Jensen",
"givenName":"Barbara"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"manager": "123456"
},
"urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User": {
"tag": "701984",
},
"meta": {
"resourceType": "User",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"3694e05e9dff591\"",
"location":
"https://example.com/v2/Users/00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
}
}
Uwaga
Oprócz atrybutów wymaganych dla aplikacji reprezentacja JSON zawiera również wymagane id
atrybuty , externalId
i meta
.
Pomaga to kategoryzować między /User
i /Group
mapować wszystkie domyślne atrybuty użytkownika w identyfikatorze Entra firmy Microsoft do SCIM RFC, zobacz , jak dostosować atrybuty są mapowane między identyfikatorem Entra firmy Microsoft i punktem końcowym SCIM.
W poniższej tabeli wymieniono przykład atrybutów użytkownika:
Użytkownik firmy Microsoft Entra | urn:ietf:params:scim:schemas:extension:enterprise:2.0:User |
---|---|
IsSoftDeleted | aktywne |
department | urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department |
displayName | displayName |
employeeId | urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber |
Facsimile-PhoneNumber | phoneNumbers[type eq "fax"].value |
givenName | name.givenName |
jobTitle | title |
poczta | emails[type eq "work"].value |
mailNickname | externalId |
manager | urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager |
mobilnych | phoneNumbers[type eq "mobile"].value |
postalCode | addresses[type eq "work"].postalCode |
adresy proxy | email[type eq "other"]. Wartość |
physical-Delivery-OfficeName | addresses[type eq "other"]. Sformatowany |
streetAddress | addresses[type eq "work"].streetAddress |
surname | name.familyName |
numer telefonu | phoneNumbers[type eq "work"].value |
user-PrincipalName | userName |
W poniższej tabeli wymieniono przykład atrybutów grupy:
Grupa Microsoft Entra | urn:ietf:params:scim:schemas:core:2.0:Group |
---|---|
displayName | displayName |
członkowie | członkowie |
objectId | externalId |
Uwaga
Nie musisz obsługiwać zarówno użytkowników, jak i grup ani wszystkich atrybutów przedstawionych w tym miejscu, jest to tylko odwołanie do tego, jak atrybuty w identyfikatorze Entra firmy Microsoft są często mapowane na właściwości w protokole SCIM.
W dokumencie RFC SCIM zdefiniowano kilka punktów końcowych. Możesz zacząć od punktu końcowego /User
, a następnie rozwinąć się z tego miejsca. W poniższej tabeli wymieniono niektóre punkty końcowe SCIM:
Punkt końcowy | opis |
---|---|
/użytkownika | Wykonywanie operacji CRUD na obiekcie użytkownika. |
/Grupa | Wykonywanie operacji CRUD na obiekcie grupy. |
/Schematów | Zestaw atrybutów obsługiwanych przez każdego klienta i dostawcę usług może się różnić. Jeden dostawca usług może obejmować name , title i emails , podczas gdy inny dostawca usług używa name , title i phoneNumbers . Punkt końcowy schematów umożliwia odnajdywanie obsługiwanych atrybutów. |
/Wielkość | Operacje zbiorcze umożliwiają wykonywanie operacji na dużej kolekcji obiektów zasobów w ramach jednej operacji (na przykład zaktualizowanie członkostwa dla dużej grupy). |
/ServiceProviderConfig | Zawiera szczegółowe informacje o funkcjach standardu SCIM, które są obsługiwane, na przykład obsługiwane zasoby i metodę uwierzytelniania. |
/ResourceTypes | Określa metadane dotyczące każdego zasobu. |
Uwaga
Użyj punktu końcowego /Schemas
, aby obsługiwać atrybuty niestandardowe lub jeśli schemat zmienia się często, ponieważ umożliwia klientowi automatyczne pobieranie najbardziej aktualnego schematu. Użyj punktu końcowego /Bulk
do obsługi grup.
Omówienie implementacji rozwiązania Microsoft Entra SCIM
Usługa microsoft Entra provisioning jest przeznaczona do obsługi interfejsu API zarządzania użytkownikami SCIM 2.0.
Ważne
Zachowanie implementacji rozwiązania Microsoft Entra SCIM zostało ostatnio zaktualizowane 18 grudnia 2018 r. Aby uzyskać informacje na temat zmian, zobacz Zgodność protokołu SCIM 2.0 z usługą aprowizacji użytkowników firmy Microsoft Entra.
W ramach specyfikacji protokołu SCIM 2.0 aplikacja musi obsługiwać następujące wymagania:
Wymaganie | Uwagi referencyjne (protokół SCIM) |
---|---|
Tworzenie użytkowników i opcjonalnie również grup | Sekcja 3.3 |
Modyfikowanie użytkowników lub grup przy użyciu żądań PATCH | Sekcja 3.5.2. Obsługa zapewnia, że grupy i użytkownicy są aprowizowani w wydajny sposób. |
Pobieranie znanego zasobu utworzonego wcześniej przez użytkownika lub grupę | Sekcja 3.4.1 |
Wykonywanie zapytań dotyczących użytkowników lub grup | Sekcja 3.4.2. Domyślnie użytkownicy są pobierani przy użyciu zapytań id i z zapytaniami do ich username grup i externalId i są odpytywane za pomocą polecenia displayName . |
Filtr excludedAttributes=members podczas wykonywania zapytania o zasób grupy | Sekcja 3.4.2.2 |
Obsługa wyświetlania listy użytkowników i stronicowania | Sekcja 3.4.2.4. |
Usuwanie nietrwałe użytkownika active=false i przywracanie użytkownika active=true |
Obiekt użytkownika powinien zostać zwrócony w żądaniu, czy użytkownik jest aktywny. Jedynym czasem, gdy użytkownik nie powinien być zwracany, jest to, gdy jest on ciężko usunięty z aplikacji. |
Obsługa punktu końcowego /Schemas | Sekcja 7 Punkt końcowy odnajdywania schematu służy do odnajdywania większej liczby atrybutów. |
Zaakceptuj pojedynczy token elementu nośnego na potrzeby uwierzytelniania i autoryzacji identyfikatora Entra firmy Microsoft do aplikacji. |
Skorzystaj z ogólnych wytycznych podczas implementowania punktu końcowego SCIM, aby zapewnić zgodność z identyfikatorem Entra firmy Microsoft:
Ogólne:
id
jest wymaganą właściwością dla wszystkich zasobów. Każda odpowiedź zwracająca zasób powinien mieć pewność, że każdy zasób ma tę właściwość, z wyjątkiemListResponse
elementów zerowych.- Wysłane wartości powinny być przechowywane w tym samym formacie, który zostały wysłane. Nieprawidłowe wartości powinny zostać odrzucone z opisowym komunikatem o błędzie z możliwością działania. Przekształcenia danych nie powinny odbywać się między danymi z identyfikatora Entra firmy Microsoft i danymi przechowywanymi w aplikacji SCIM. (na przykład. Numer telefonu wysłany jako 55555555555 nie powinien zostać zapisany/zwrócony jako +5 (555) 555-5555)
- Nie jest konieczne uwzględnienie całego zasobu w odpowiedzi PATCH .
- Nie wymagaj dopasowania uwzględniającego wielkość liter dla elementów strukturalnych w programie SCIM, w szczególności wartości operacji PATCH
op
, zgodnie z definicją w sekcji 3.5.2. Identyfikator Entra firmy Microsoft emituje wartościop
typu Add, Replace i Remove. - Microsoft Entra ID wysyła żądania pobrania losowego użytkownika i grupy, aby upewnić się, że punkt końcowy i poświadczenia są prawidłowe. Odbywa się to również w ramach przepływu testu połączenia .
- Obsługa protokołu HTTPS w punkcie końcowym SCIM.
- Niestandardowe złożone i wielowartościowe atrybuty są obsługiwane, ale identyfikator Entra firmy Microsoft nie ma wielu złożonych struktur danych do ściągania danych z tych przypadków. Atrybuty nazwy/wartości można łatwo mapować, ale przepływ danych do złożonych atrybutów z co najmniej trzema atrybutami podrzędnymi nie jest obsługiwany.
- Wartości podrzędne "type" atrybutów złożonych wielowartościowych muszą być unikatowe. Na przykład nie może istnieć dwa różne adresy e-mail z podtypem "work".
- Nagłówek wszystkich odpowiedzi powinien mieć typ zawartości: application/scim+json
Pobieranie zasobów:
- Odpowiedź na żądanie zapytania/filtru powinna zawsze być .
ListResponse
- Firma Microsoft Entra używa tylko następujących operatorów:
eq
,and
- Atrybut, dla którego można wykonywać zapytania dotyczące zasobów, należy ustawić jako pasujący atrybut w aplikacji, zobacz Dostosowywanie mapowań atrybutów aprowizacji użytkowników.
/Użytkowników:
- Atrybut uprawnień nie jest obsługiwany.
- Wszystkie atrybuty, które są uznawane za unikatowość użytkownika, muszą być używane jako część filtrowanego zapytania. (na przykład jeśli unikatowość użytkownika jest oceniana zarówno dla userName, jak i wiadomości e-mail[type eq "work"], polecenie GET do /Users z filtrem musi zezwalać zarówno dla parametru userName eq "user@contoso.com" i wiadomości e-mail[type eq "work"].value eq "user@contoso.com".
/Grupy:
- Grupy są opcjonalne, ale obsługiwane tylko wtedy, gdy implementacja SCIM obsługuje żądania PATCH .
- Grupy muszą mieć unikatowość w wartości "displayName", aby pasowały do identyfikatora Microsoft Entra ID i aplikacji SCIM. Unikatowość nie jest wymaganiem protokołu SCIM, ale jest wymagana do integracji punktu końcowego SCIM z identyfikatorem Entra firmy Microsoft.
/Schemas (Odnajdywanie schematu):
- Przykładowe żądanie/odpowiedź
- Odnajdywanie schematu jest używane w niektórych aplikacjach galerii. Odnajdywanie schematu to jedyna metoda dodawania większej liczby atrybutów do schematu istniejącej aplikacji SCIM galerii. Odnajdywanie schematu nie jest obecnie obsługiwane w niestandardowej aplikacji SCIM spoza galerii.
- Jeśli wartość nie jest obecna, nie wysyłaj wartości null.
- Wartości właściwości powinny mieć wielkość liter camel (na przykład readWrite).
- Musi zwrócić odpowiedź listy.
- Usługa aprowizacji firmy Microsoft wysyła żądanie /schemas podczas zapisywania konfiguracji aprowizacji. Żądanie jest również wykonywane po otwarciu strony edytowania aprowizacji. Inne odnalezione atrybuty są udostępniane klientom w mapowaniach atrybutów na liście atrybutów docelowych. Odnajdywanie schematu prowadzi tylko do dodawania większej liczby atrybutów docelowych. Atrybuty nie są usuwane.
Aprowizowanie i anulowanie aprowizacji użytkowników
Na poniższym diagramie przedstawiono komunikaty wysyłane przez identyfikator Entra firmy Microsoft do punktu końcowego SCIM w celu zarządzania cyklem życia użytkownika w magazynie tożsamości aplikacji.
Aprowizowanie grup i anulowanie aprowizacji
Aprowizowanie grup i anulowanie aprowizacji są opcjonalne. Po zaimplementowaniu i włączeniu na poniższej ilustracji przedstawiono komunikaty wysyłane przez identyfikator Entra firmy Microsoft do punktu końcowego SCIM w celu zarządzania cyklem życia grupy w magazynie tożsamości aplikacji. Te komunikaty różnią się od komunikatów o użytkownikach na dwa sposoby:
- Żądania pobrania grup określają, że atrybut członków ma zostać wykluczony z dowolnego zasobu dostarczonego w odpowiedzi na żądanie.
- Żądania określenia, czy atrybut odwołania ma określoną wartość, to żądania dotyczące atrybutu elementów członkowskich.
Na poniższym diagramie przedstawiono sekwencję anulowania aprowizacji grupy:
Żądania i odpowiedzi protokołu SCIM
Ten artykuł zawiera przykładowe żądania SCIM emitowane przez usługę aprowizacji firmy Microsoft i przykładowe oczekiwane odpowiedzi. Aby uzyskać najlepsze wyniki, należy zastosować kod aplikacji do obsługi tych żądań w tym formacie i emitować oczekiwane odpowiedzi.
Ważne
Aby dowiedzieć się, jak i kiedy usługa aprowizacji użytkowników firmy Microsoft emituje operacje opisane w tym przykładzie, zobacz sekcję Cykle aprowizacji: Początkowe i przyrostowe w temacie Jak działa aprowizacja.
- Tworzenie użytkownika (odpowiedź na żądanie / )
- Uzyskiwanie użytkownika (odpowiedź na żądanie / )
- Pobieranie użytkownika według zapytania (odpowiedź na żądanie / )
- Pobieranie użytkownika według zapytania — zero wyników (odpowiedź na żądanie / )
- Aktualizowanie użytkownika [właściwości wielowartościowe] (odpowiedź na żądanie / )
- Aktualizowanie użytkownika [właściwości z jedną wartością] (odpowiedź na żądanie / )
- Wyłącz użytkownika (odpowiedź na żądanie / )
- Usuń użytkownika (odpowiedź na żądanie / )
- Tworzenie grupy (odpowiedź na żądanie / )
- Pobierz grupę (odpowiedź na żądanie / )
- Pobieranie grupy według displayName (odpowiedź na żądanie / )
- Aktualizuj grupę [atrybuty inne niż składowe] (odpowiedź na żądanie / )
- Aktualizuj grupę [Dodaj członków] (odpowiedź na żądanie / )
- Aktualizuj grupę [Usuń członków] (odpowiedź na żądanie / )
- Usuń grupę (odpowiedź na żądanie / )
Operacje użytkownika
- Użyj
userName
atrybutów lubemails[type eq "work"]
, aby wysyłać zapytania do użytkowników.
Tworzenie użytkowników
Żądanie
POST /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_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"active": true,
"emails": [{
"primary": true,
"type": "work",
"value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com"
}],
"meta": {
"resourceType": "User"
},
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName"
},
"roles": []
}
Response
Utworzono protokół HTTP/1.1 201
{
"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_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName",
},
"active": true,
"emails": [{
"value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
"type": "work",
"primary": true
}]
}
Pobieranie użytkownika
Żądanie
GET /Users/5d48a0a8e9f04aa38008
Odpowiedź (znaleziono użytkownika)
HTTP/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_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"name": {
"formatted": "givenName familyName",
"familyName": "familyName",
"givenName": "givenName",
},
"active": true,
"emails": [{
"value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
"type": "work",
"primary": true
}]
}
Żądanie
GET /Users/5171a35d82074e068ce2
Odpowiedź (nie znaleziono użytkownika. Szczegóły nie są wymagane, tylko stan).
Nie znaleziono protokołu HTTP/1.1 404
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error"
],
"status": "404",
"detail": "Resource 23B51B0E5D7AE9110A49411D@7cca31655d49f3640a494224 not found"
}
Pobieranie użytkownika według zapytania
Żądanie
GET /Users?filter=userName eq "Test_User_00aa00aa-bb11-cc22-dd33-44ee4ee4e4ee"
Response
HTTP/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_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"name": {
"familyName": "familyName",
"givenName": "givenName"
},
"active": true,
"emails": [{
"value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
"type": "work",
"primary": true
}]
}],
"startIndex": 1,
"itemsPerPage": 20
}
Pobieranie użytkownika według zapytania — zero wyników
Żądanie
GET /Users?filter=userName eq "nieistniejący użytkownik"
Response
HTTP/1.1 200 OK
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": [],
"startIndex": 1,
"itemsPerPage": 20
}
Aktualizuj użytkownika [właściwości wielowartościowe]
Żądanie
PATCH /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"
}
]
}
Response
HTTP/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_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"name": {
"formatted": "givenName updatedFamilyName",
"familyName": "updatedFamilyName",
"givenName": "givenName"
},
"active": true,
"emails": [{
"value": "updatedEmail@microsoft.com",
"type": "work",
"primary": true
}]
}
Aktualizowanie użytkownika [właściwości z jedną wartością]
Żądanie
PATCH /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"
}]
}
Response
HTTP/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_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
"type": "work",
"primary": true
}]
}
Wyłącz użytkownika
Żądanie
PATCH /Users/5171a35d82074e068ce2 HTTP/1.1
{
"Operations": [
{
"op": "Replace",
"path": "active",
"value": false
}
],
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
]
}
Response
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "CEC50F275D83C4530A495FCF@834d0e1e5d8235f90a495fda",
"userName": "deanruiz@testuser.com",
"name": {
"familyName": "Harris",
"givenName": "Larry"
},
"active": false,
"emails": [
{
"value": "gloversuzanne@testuser.com",
"type": "work",
"primary": true
}
],
"addresses": [
{
"country": "ML",
"type": "work",
"primary": true
}
],
"meta": {
"resourceType": "Users",
"location": "/scim/5171a35d82074e068ce2/Users/CEC50F265D83B4530B495FCF@5171a35d82074e068ce2"
}
}
Usuwanie użytkownika
Żądanie
DELETE /Users/5171a35d82074e068ce2 HTTP/1.1
Response
HTTP/1.1 204 Brak zawartości
Operacje grupy
- Grupy są tworzone z pustą listą członków.
- Użyj atrybutu
displayName
, aby wykonywać zapytania dotyczące grup. - Aktualizacja do żądania PATCH grupy powinna spowodować wystąpienie błędu HTTP 204 Brak zawartości w odpowiedzi. Zwracanie treści z listą wszystkich elementów członkowskich nie jest zalecane.
- Nie trzeba obsługiwać zwracania wszystkich członków grupy.
Utwórz grupę
Żądanie
POST /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",
"meta": {
"resourceType": "Group"
}
}
Response
Utworzono protokół HTTP/1.1 201
{
"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": []
}
Pobierz grupę
Żądanie
GET /Groups/40734ae655284ad3abcc?excludedAttributes=members HTTP/1.1
Response
HTTP/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",
}
Pobieranie grupy według displayName
Żądanie
GET /Groups?excludedAttributes=members&filter=displayName eq "displayName" HTTP/1.1
Response
HTTP/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
}
Aktualizuj grupę [atrybuty inne niż składowe]
Żądanie
PATCH /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"
}]
}
Response
HTTP/1.1 204 Brak zawartości
Aktualizuj grupę [Dodaj członków]
Żądanie
PATCH /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"
}]
}]
}
Response
HTTP/1.1 204 Brak zawartości
Aktualizuj grupę [Usuń członków]
Żądanie
PATCH /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"
}]
}]
}
Response
HTTP/1.1 204 Brak zawartości
Usuwanie grupy
Żądanie
DELETE /Groups/cdb1ce18f65944079d37 HTTP/1.1
Response
HTTP/1.1 204 Brak zawartości
Odnajdywanie schematów
Odnajdywanie schematu
Żądanie
GET /Schemas
Response
HTTP/1.1 200 OK
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"itemsPerPage": 50,
"startIndex": 1,
"totalResults": 3,
"Resources": [
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
"id" : "urn:ietf:params:scim:schemas:core:2.0:User",
"name" : "User",
"description" : "User Account",
"attributes" : [
{
"name" : "userName",
"type" : "string",
"multiValued" : false,
"description" : "Unique identifier for the User, typically
used by the user to directly authenticate to the service provider.
Each User MUST include a non-empty userName value. This identifier
MUST be unique across the service provider's entire set of Users.
REQUIRED.",
"required" : true,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "server"
},
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
}
},
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
"id" : "urn:ietf:params:scim:schemas:core:2.0:Group",
"name" : "Group",
"description" : "Group",
"attributes" : [
{
"name" : "displayName",
"type" : "string",
"multiValued" : false,
"description" : "A human-readable name for the Group.
REQUIRED.",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group"
}
},
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
"id" : "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"name" : "EnterpriseUser",
"description" : "Enterprise User",
"attributes" : [
{
"name" : "employeeNumber",
"type" : "string",
"multiValued" : false,
"description" : "Numeric or alphanumeric identifier assigned
to a person, typically based on order of hire or association with an
organization.",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
}
}
]
}
Wymagania dotyczące zabezpieczeń
Wersje protokołu TLS
Jedyną akceptowalną wersją protokołu jest TLS 1.2. Nie jest dozwolona żadna inna wersja protokołu SSL/TLS.
- Klucze RSA muszą mieć co najmniej 2048 bitów.
- Klucze ECC muszą mieć co najmniej 256 bitów, generowane przy użyciu zatwierdzonej krzywej eliptycznej
Długość klucza
Wszystkie usługi muszą używać certyfikatów X.509 generowanych przy użyciu kluczy kryptograficznych o wystarczającej długości, co oznacza:
Zestawy szyfrowania
Wszystkie usługi muszą być skonfigurowane do używania następujących zestawów szyfrowania w dokładnej kolejności określonej w przykładzie. Jeśli masz tylko certyfikat RSA, zainstalowane zestawy szyfrowania ECDSA nie mają żadnego wpływu.
Minimalny pasek zestawów szyfrowania TLS 1.2:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Zakresy adresów IP
Obecnie usługa aprowizacji Firmy Microsoft działa w ramach zakresów adresów IP dla identyfikatora Entra firmy Microsoft, jak wymieniono tutaj. Zakresy adresów IP wymienione w tagu AzureActiveDirectory
umożliwiają ruch z usługi aprowizacji firmy Microsoft do aplikacji. Należy dokładnie przejrzeć listę zakresów adresów IP pod kątem obliczonych adresów. Adres taki jak "40.126.25.32" może być reprezentowany na liście zakresów adresów IP jako "40.126.0.0/18". Możesz również programowo pobrać listę zakresów adresów IP przy użyciu następującego interfejsu API.
Microsoft Entra ID obsługuje również rozwiązanie oparte na agencie, aby zapewnić łączność z aplikacjami w sieciach prywatnych (lokalnie, hostowane na platformie Azure, hostowane na platformie AWS itd.). Klienci mogą wdrożyć uproszczonego agenta, który zapewnia łączność z identyfikatorem Entra firmy Microsoft bez otwierania portów przychodzących na serwerze w sieci prywatnej. Dowiedz się więcej tutaj.
Tworzenie punktu końcowego SCIM
Po zaprojektowaniu schematu i zrozumieniu implementacji rozwiązania Microsoft Entra SCIM możesz rozpocząć tworzenie punktu końcowego SCIM. Zamiast rozpoczynać od podstaw i tworzyć implementację samodzielnie, możesz polegać na wielu bibliotekach SCIM typu open source opublikowanych przez społeczność SCIM.
Aby uzyskać wskazówki dotyczące tworzenia punktu końcowego SCIM, w tym przykłady, zobacz Tworzenie przykładowego punktu końcowego SCIM.
Przykład kodu referencyjnego platformy .NET Core typu open source opublikowany przez zespół ds. aprowizacji firmy Microsoft jest jednym z takich zasobów, które mogą szybko rozpocząć programowanie. Utwórz punkt końcowy SCIM, a następnie przetestuj go, uruchamiając przykładowe żądania/odpowiedzi.
Uwaga
Kod referencyjny ma pomóc w rozpoczęciu tworzenia punktu końcowego SCIM i jest dostarczany jako "AS IS". Współtworzenie społeczności jest mile widziane, aby pomóc w tworzeniu i utrzymywaniu kodu.
Rozwiązanie składa się z dwóch projektów : Microsoft.SCIM i Microsoft.SCIM.WebHostSample.
Projekt Microsoft.SCIM to biblioteka, która definiuje składniki usługi internetowej zgodnej ze specyfikacją SCIM. Deklaruje interfejs Microsoft.SCIM.IProvider, żądania są tłumaczone na wywołania metod dostawcy, które będą programowane do działania w magazynie tożsamości.
Projekt Microsoft.SCIM.WebHostSample jest aplikacją internetową platformy ASP.NET Core opartą na szablonie Pusty. Umożliwia wdrożenie przykładowego kodu jako autonomicznego, hostowanego w kontenerach lub w usługach Internet Information Services. Implementuje również interfejs Microsoft.SCIM.IProvider , który przechowuje klasy w pamięci jako przykładowy magazyn tożsamości.
public class Startup
{
...
public IMonitor MonitoringBehavior { get; set; }
public IProvider ProviderBehavior { get; set; }
public Startup(IWebHostEnvironment env, IConfiguration configuration)
{
...
this.MonitoringBehavior = new ConsoleMonitor();
this.ProviderBehavior = new InMemoryProvider();
}
...
Tworzenie niestandardowego punktu końcowego SCIM
Punkt końcowy SCIM musi mieć adres HTTP i certyfikat uwierzytelniania serwera, którego główny urząd certyfikacji jest jedną z następujących nazw:
- CNNIC
- Comodo
- CyberTrust
- DigiCert
- GeoTrust
- GlobalSign
- Go Daddy
- VeriSign
- WoSign
- Główny urząd certyfikacji DST X3
Zestaw .NET Core SDK zawiera certyfikat dewelopera HTTPS, który jest używany podczas programowania. Certyfikat jest instalowany w ramach pierwszego uruchomienia. W zależności od sposobu uruchamiania aplikacji internetowej ASP.NET Core nasłuchuje innego portu:
- Microsoft.SCIM.WebHostSample:
https://localhost:5001
- IIS Express:
https://localhost:44359
Aby uzyskać więcej informacji na temat protokołu HTTPS w programie ASP.NET Core, użyj następującego linku: Wymuszanie protokołu HTTPS w programie ASP.NET Core
Obsługa uwierzytelniania punktu końcowego
Żądania z usługi aprowizacji firmy Microsoft obejmują token elementu nośnego OAuth 2.0. Serwer autoryzacji wystawia token elementu nośnego. Microsoft Entra ID to przykład zaufanego serwera autoryzacji. Skonfiguruj usługę microsoft Entra provisioning, aby używała jednego z następujących tokenów:
Długotrwały token elementu nośnego. Jeśli punkt końcowy SCIM wymaga tokenu elementu nośnego OAuth od wystawcy innego niż identyfikator Entra firmy Microsoft, skopiuj wymagany token elementu nośnego OAuth do opcjonalnego pola Token tajny. W środowisku projektowym można użyć tokenu testowego z punktu końcowego
/scim/token
. Tokeny testowe nie powinny być używane w środowiskach produkcyjnych.Token elementu nośnego Entra firmy Microsoft. Jeśli pole Token wpisu tajnego jest puste, identyfikator Entra firmy Microsoft zawiera token elementu nośnego OAuth wystawiony przez identyfikator Entra firmy Microsoft z każdym żądaniem. Aplikacje korzystające z identyfikatora Entra firmy Microsoft jako dostawcy tożsamości mogą zweryfikować ten token wystawiony przez identyfikator Entra firmy Microsoft.
- Aplikacja, która odbiera żądania, powinna zweryfikować wystawcę tokenu jako identyfikator Entra firmy Microsoft dla oczekiwanej dzierżawy firmy Microsoft Entra.
- Oświadczenie
iss
identyfikuje wystawcę tokenu. Na przykład"iss":"https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/"
. W tym przykładzie podstawowy adres wartości oświadczenia identyfikujehttps://sts.windows.net
identyfikator Microsoft Entra jako wystawcę, podczas gdy segment adresu względnego aaaabbbb-0000-cccc-1111-dddd2222eeeee jest unikatowym identyfikatorem dzierżawy Firmy Microsoft Entra, dla której wystawiono token. - Odbiorcy tokenu to identyfikator aplikacji dla aplikacji w galerii. Aplikacje zarejestrowane w jednej dzierżawie otrzymują to samo
iss
oświadczenie z żądaniami SCIM. Identyfikator aplikacji dla wszystkich aplikacji niestandardowych to 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Token wygenerowany przez identyfikator Entra firmy Microsoft powinien być używany tylko do testowania. Nie należy jej używać w środowiskach produkcyjnych.
W przykładowym kodzie żądania są uwierzytelniane przy użyciu pakietu Microsoft.AspNetCore.Authentication.JwtBearer. Poniższy kod wymusza, że żądania do dowolnego z punktów końcowych usługi są uwierzytelniane przy użyciu tokenu elementu nośnego wystawionego przez identyfikator Entra firmy Microsoft dla określonej dzierżawy:
public void ConfigureServices(IServiceCollection services)
{
if (_env.IsDevelopment())
{
...
}
else
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = " https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/";
options.Audience = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621";
...
});
}
...
}
public void Configure(IApplicationBuilder app)
{
...
app.UseAuthentication();
app.UseAuthorization();
...
}
Przykładowy kod używa środowisk ASP.NET Core, aby zmienić opcje uwierzytelniania podczas etapu programowania i włączyć używanie tokenu z podpisem własnym.
Aby uzyskać więcej informacji na temat wielu środowisk w środowisku ASP.NET Core, zobacz Używanie wielu środowisk w programie ASP.NET Core.
Poniższy kod wymusza, że żądania do dowolnego z punktów końcowych usługi są uwierzytelniane przy użyciu tokenu elementu nośnego podpisanego przy użyciu klucza niestandardowego:
public void ConfigureServices(IServiceCollection services)
{
if (_env.IsDevelopment())
{
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters =
new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = false,
ValidateIssuerSigningKey = false,
ValidIssuer = "Microsoft.Security.Bearer",
ValidAudience = "Microsoft.Security.Bearer",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("A1B2C3D4E5F6A1B2C3D4E5F6"))
};
});
}
...
Wyślij żądanie GET do kontrolera tokenu, aby uzyskać prawidłowy token elementu nośnego. Metoda GenerateJSONWebToken jest odpowiedzialna za utworzenie tokenu pasującego do parametrów skonfigurowanych do programowania:
private string GenerateJSONWebToken()
{
// Create token key
SymmetricSecurityKey securityKey =
new SymmetricSecurityKey(Encoding.UTF8.GetBytes("A1B2C3D4E5F6A1B2C3D4E5F6"));
SigningCredentials credentials =
new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
// Set token expiration
DateTime startTime = DateTime.UtcNow;
DateTime expiryTime = startTime.AddMinutes(120);
// Generate the token
JwtSecurityToken token =
new JwtSecurityToken(
"Microsoft.Security.Bearer",
"Microsoft.Security.Bearer",
null,
notBefore: startTime,
expires: expiryTime,
signingCredentials: credentials);
string result = new JwtSecurityTokenHandler().WriteToken(token);
return result;
}
Obsługa aprowizacji i anulowania aprowizacji użytkowników
Przykład 1. Wykonywanie zapytań względem usługi dla pasującego użytkownika
Microsoft Entra ID wysyła zapytanie do usługi dla użytkownika z wartością atrybutu zgodną externalId
z wartością atrybutu mailNickname użytkownika w identyfikatorze Entra firmy Microsoft. Zapytanie jest wyrażane jako żądanie protokołu HTTP (Hypertext Transfer Protocol), takie jak w tym przykładzie, gdziein jyoung jest przykładem mailNickname użytkownika w usłudze Microsoft Entra ID.
Uwaga
Jest to tylko przykład. Nie wszyscy użytkownicy będą mieć atrybut mailNickname, a wartość, która ma użytkownik, może nie być unikatowa w katalogu. Ponadto atrybut używany do dopasowywania (w tym przypadku externalId
) można skonfigurować w mapowaniach atrybutów Entra firmy Microsoft.
GET https://.../scim/Users?filter=externalId eq jyoung HTTP/1.1
Authorization: Bearer ...
W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody QueryAsync dostawcy usługi. Oto podpis tej metody:
// System.Threading.Tasks.Tasks is defined in mscorlib.dll.
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.Resource is defined in
// Microsoft.SCIM.Schemas.
// Microsoft.SCIM.IQueryParameters is defined in
// Microsoft.SCIM.Protocol.
Task<Resource[]> QueryAsync(IRequest<IQueryParameters> request);
W przykładowym zapytaniu dla użytkownika z daną wartością atrybutu externalId
wartości argumentów przekazanych do metody QueryAsync są następujące:
- Parametry. AlternateFilters.Count: 1
- Parametry. AlternateFilters.ElementAt(0). AttributePath: "externalId"
- Parametry. AlternateFilters.ElementAt(0). ComparisonOperator: ComparisonOperator.Equals
- Parametry. AlternateFilter.ElementAt(0). ComparisonValue: "jyoung"
Przykład 2. Aprowizuj użytkownika
Jeśli odpowiedź na zapytanie do punktu końcowego SCIM dla użytkownika z wartością atrybutu zgodną z wartością externalId
atrybutu mailNickname użytkownika nie zwraca żadnych użytkowników, identyfikator Entra firmy Microsoft żąda, aby usługa aprowizować użytkownika odpowiadającego temu identyfikatorowi w usłudze Microsoft Entra ID. Oto przykład takiego żądania:
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@testuser.com",
"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}
W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody CreateAsync dostawcy usługi. Oto podpis tej metody:
// System.Threading.Tasks.Tasks is defined in mscorlib.dll.
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.Resource is defined in
// Microsoft.SCIM.Schemas.
Task<Resource> CreateAsync(IRequest<Resource> request);
W żądaniu aprowizacji użytkowników wartość argumentu zasobu jest wystąpieniem Microsoft.SCIM.Core2EnterpriseUser
klasy. Ta klasa jest zdefiniowana w bibliotece Microsoft.SCIM.Schemas
. Jeśli żądanie aprowizacji użytkownika powiedzie się, oczekuje się, że implementacja metody zwróci wystąpienie Microsoft.SCIM.Core2EnterpriseUser
klasy. Wartość Identifier
właściwości jest ustawiona na unikatowy identyfikator nowo aprowizowanego użytkownika.
Przykład 3. Wykonywanie zapytań względem bieżącego stanu użytkownika
Identyfikator Entra firmy Microsoft żąda bieżącego stanu określonego użytkownika z usługi z żądaniem, takim jak:
GET ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 HTTP/1.1
Authorization: Bearer ...
W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody RetrieveAsync dostawcy usługi. Oto podpis tej metody:
// System.Threading.Tasks.Tasks is defined in mscorlib.dll.
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.Resource and
// Microsoft.SCIM.IResourceRetrievalParameters
// are defined in Microsoft.SCIM.Schemas
Task<Resource> RetrieveAsync(IRequest<IResourceRetrievalParameters> request);
W przykładzie żądania, aby pobrać bieżący stan użytkownika, wartości właściwości obiektu podane jako wartość argumentu parametrów są następujące:
- Identyfikator: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1e1e1"
- SchemaIdentifier:
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
Przykład 4. Wykonywanie zapytań dotyczących wartości atrybutu odwołania, który ma zostać zaktualizowany
Microsoft Entra ID sprawdza bieżącą wartość atrybutu w magazynie tożsamości przed zaktualizowaniem. Jednak tylko atrybut menedżera jest sprawdzany jako pierwszy dla użytkowników. Oto przykład żądania w celu określenia, czy atrybut menedżera obiektu użytkownika ma obecnie określoną wartość: W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody QueryAsync dostawcy usługi. Wartość właściwości obiektu podanego jako wartość argumentu parametrów jest następująca:
- Parametry. AlternateFilters.Count: 2
- Parametry. AlternateFilters.ElementAt(x). AttributePath: "ID"
- Parametry. AlternateFilters.ElementAt(x). ComparisonOperator: ComparisonOperator.Equals
- Parametry. AlternateFilter.ElementAt(x). ComparisonValue: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1e1e1"
- Parametry. AlternateFilters.ElementAt(y). AttributePath: "manager"
- Parametry. AlternateFilters.ElementAt(y). ComparisonOperator: ComparisonOperator.Equals
- Parametry. AlternateFilter.ElementAt(y). ComparisonValue: "00aa00aa-bb11-cc22-dd33-44eee4ee4e4ee"
- Parametry. RequestedAttributePaths.ElementAt(0): "ID"
- Parametry. SchemaIdentifier:
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
Wartość indeksu x może być 0
i wartość indeksu y może być 1
. Lub wartość x może być 1
i wartość y może być 0
. Zależy to od kolejności wyrażeń parametru zapytania filtru.
Przykład 5. Żądanie od identyfikatora Entra firmy Microsoft do punktu końcowego SCIM w celu zaktualizowania użytkownika
Oto przykład żądania od firmy Microsoft Entra ID do punktu końcowego SCIM w celu zaktualizowania użytkownika:
PATCH ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 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/00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"value":"00aa00aa-bb11-cc22-dd33-44ee44ee44ee"}]}]}
W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody UpdateAsync dostawcy usługi. Oto podpis tej metody:
// System.Threading.Tasks.Tasks and
// System.Collections.Generic.IReadOnlyCollection<T> // are defined in mscorlib.dll.
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.IPatch,
// is defined in Microsoft.SCIM.Protocol.
Task UpdateAsync(IRequest<IPatch> request);
W przykładzie żądania, aby zaktualizować użytkownika, obiekt podany jako wartość argumentu poprawki ma następujące wartości właściwości:
Argument | Wartość |
---|---|
ResourceIdentifier.Identifier |
"a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1e1" |
ResourceIdentifier.SchemaIdentifier |
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User |
(PatchRequest as PatchRequest2).Operations.Count |
1 |
(PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName |
OperationName.Add |
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath |
Menedżer |
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count |
1 |
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference |
http://.../scim/Users/00aa00aa-bb11-cc22-dd33-44ee44ee44ee |
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value |
00aa0aa-bb11-cc22-dd33-44ee4e4ee4ee4e4ee |
Przykład 6. Anulowanie aprowizacji użytkownika
Aby anulować aprowizowanie użytkownika z magazynu tożsamości frontowanego przez punkt końcowy SCIM, identyfikator Entra firmy Microsoft wysyła żądanie, takie jak:
DELETE ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 HTTP/1.1
Authorization: Bearer ...
W przykładowym kodzie żądanie jest tłumaczone na wywołanie metody DeleteAsync dostawcy usługi. Oto podpis tej metody:
// System.Threading.Tasks.Tasks is defined in mscorlib.dll.
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.IResourceIdentifier,
// is defined in Microsoft.SCIM.Protocol.
Task DeleteAsync(IRequest<IResourceIdentifier> request);
Obiekt podany jako wartość argumentu resourceIdentifier ma te wartości właściwości w przykładzie żądania anulowania aprowizacji użytkownika:
- ResourceIdentifier.Identifier: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1e1e1"
- ResourceIdentifier.SchemaIdentifier:
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
Integrowanie punktu końcowego SCIM z usługą aprowizacji firmy Microsoft
Identyfikator Entra firmy Microsoft można skonfigurować tak, aby automatycznie aprowizować przypisanych użytkowników i grupy do aplikacji, które implementują określony profil protokołu SCIM 2.0. Szczegóły profilu opisano w artykule Omówienie implementacji protokołu SCIM firmy Microsoft.
Zapoznaj się z dostawcą aplikacji lub dokumentacją dostawcy aplikacji, aby uzyskać instrukcje zgodności z tymi wymaganiami.
Ważne
Implementacja rozwiązania Microsoft Entra SCIM jest oparta na usłudze aprowizacji użytkowników firmy Microsoft Entra, która jest zaprojektowana tak, aby stale synchronizować użytkowników między identyfikatorem Entra firmy Microsoft i aplikacją docelową oraz implementuje bardzo konkretny zestaw standardowych operacji. Ważne jest, aby zrozumieć te zachowania, aby zrozumieć zachowanie usługi aprowizacji firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Cykle aprowizacji: Początkowe i przyrostowe w temacie Jak działa aprowizacja.
Wprowadzenie
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Aplikacje, które obsługują profil SCIM opisany w tym artykule, mogą być połączone z identyfikatorem Entra firmy Microsoft przy użyciu funkcji "aplikacja spoza galerii" w galerii aplikacji Microsoft Entra. Po nawiązaniu połączenia identyfikator Entra firmy Microsoft uruchamia proces synchronizacji. Proces jest uruchamiany co 40 minut. Proces wysyła zapytanie do punktu końcowego SCIM aplikacji dla przypisanych użytkowników i grup oraz tworzy lub modyfikuje je zgodnie ze szczegółami przypisania.
Aby połączyć aplikację, która obsługuje protokół SCIM:
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji.
Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.
Zostanie wyświetlona lista wszystkich skonfigurowanych aplikacji, w tym aplikacji dodanych z galerii.
Wybierz pozycję + Nowa aplikacja>+ Utwórz własną aplikację.
Wprowadź nazwę aplikacji, wybierz opcję "zintegruj dowolną inną aplikację, której nie znajdziesz w galerii", a następnie wybierz pozycję Dodaj , aby utworzyć obiekt aplikacji. Nowa aplikacja zostanie dodana do listy aplikacji dla przedsiębiorstw i zostanie otwarta na ekranie zarządzania aplikacjami.
Poniższy zrzut ekranu przedstawia galerię aplikacji Microsoft Entra:
Na ekranie zarządzania aplikacjami wybierz pozycję Aprowizowanie w panelu po lewej stronie.
W menu Tryb aprowizacji wybierz pozycję Automatyczne.
Poniższy zrzut ekranu przedstawia konfigurowanie ustawień aprowizacji w centrum administracyjnym firmy Microsoft Entra:
W polu Adres URL dzierżawy wprowadź adres URL punktu końcowego SCIM aplikacji. Przykład:
https://api.contoso.com/scim/
Jeśli punkt końcowy SCIM wymaga tokenu elementu nośnego OAuth od wystawcy innego niż identyfikator Entra firmy Microsoft, skopiuj wymagany token elementu nośnego OAuth do opcjonalnego pola Token tajny. Jeśli to pole pozostanie puste, identyfikator Entra firmy Microsoft zawiera token elementu nośnego OAuth wystawiony z identyfikatora Entra firmy Microsoft z każdym żądaniem. Aplikacje korzystające z identyfikatora Entra firmy Microsoft jako dostawcy tożsamości mogą zweryfikować ten token wystawiony przez identyfikator Entra firmy Microsoft.
Uwaga
Nie zaleca się pozostawienia tego pola pustego i polegania na tokenie wygenerowanym przez identyfikator Firmy Microsoft Entra. Ta opcja jest dostępna głównie do celów testowych.
Wybierz pozycję Testuj połączenie , aby identyfikator Entra firmy Microsoft próbował nawiązać połączenie z punktem końcowym SCIM. Jeśli próba nie powiedzie się, zostaną wyświetlone informacje o błędzie.
Uwaga
Przetestuj połączenie wysyła zapytanie do punktu końcowego SCIM dla użytkownika, który nie istnieje, używając losowego identyfikatora GUID jako pasującej właściwości wybranej w konfiguracji firmy Microsoft Entra. Oczekiwana prawidłowa odpowiedź to HTTP 200 OK z pustym komunikatem SCIM ListResponse.
Jeśli próba nawiązania połączenia z aplikacją powiedzie się, wybierz pozycję Zapisz , aby zapisać poświadczenia administratora.
W sekcji Mapowania istnieją dwa możliwe do wyboru zestawy mapowań atrybutów: jeden dla obiektów użytkownika i jeden dla obiektów grupy. Wybierz każdy z nich, aby przejrzeć atrybuty synchronizowane z identyfikatora Entra firmy Microsoft do aplikacji. Atrybuty wybrane jako Pasujące właściwości są używane do dopasowania użytkowników i grup w aplikacji do operacji aktualizacji. Wybierz pozycję Zapisz , aby zatwierdzić wszelkie zmiany.
Uwaga
Opcjonalnie można wyłączyć synchronizację obiektów grupy, wyłączając mapowanie "grup".
W obszarze Ustawienia pole Zakres definiuje użytkowników i grupy, które są synchronizowane. Wybierz pozycję Synchronizuj tylko przypisanych użytkowników i grup (zalecane), aby zsynchronizować tylko użytkowników i grupy przypisane na karcie Użytkownicy i grupy .
Po zakończeniu konfiguracji ustaw wartość Stan aprowizacji na Wł.
Wybierz pozycję Zapisz , aby uruchomić usługę aprowizacji firmy Microsoft.
W przypadku synchronizowania tylko przypisanych użytkowników i grup (zalecane) wybierz kartę Użytkownicy i grupy . Następnie przypisz użytkowników lub grupy, które chcesz zsynchronizować.
Po rozpoczęciu cyklu początkowego możesz wybrać pozycję Dzienniki aprowizacji w panelu po lewej stronie, aby monitorować postęp, co pokazuje wszystkie akcje wykonywane przez usługę aprowizacji w aplikacji. Aby uzyskać więcej informacji na temat sposobu odczytywania dzienników aprowizacji firmy Microsoft, zobacz Raportowanie automatycznej aprowizacji konta użytkownika.
Uwaga
Cykl początkowy trwa dłużej niż późniejsza synchronizacja, która występuje co około 40 minut, o ile usługa jest uruchomiona.
Publikowanie aplikacji w galerii aplikacji Microsoft Entra
Jeśli tworzysz aplikację używaną przez więcej niż jedną dzierżawę, udostępnij ją w galerii aplikacji Microsoft Entra. Organizacje mogą łatwo odnajdywać aplikację i konfigurować aprowizację. Publikowanie aplikacji w galerii Microsoft Entra i udostępnianie aprowizacji innym osobom jest łatwe. Zapoznaj się z krokami tutaj. Firma Microsoft współpracuje z Tobą w celu zintegrowania aplikacji z galerią, przetestowania punktu końcowego i wydania dokumentacji dołączania dla klientów.
Lista kontrolna dołączania do galerii
Użyj listy kontrolnej, aby szybko dołączyć aplikację, a klienci mają bezproblemowe środowisko wdrażania. Informacje te są zbierane podczas dołączania do galerii.
- Obsługa punktu końcowego użytkownika i grupy SCIM 2.0 (wymagane jest tylko jedno, ale obie są zalecane)
- Obsługa co najmniej 25 żądań na sekundę na dzierżawę w celu zapewnienia, że użytkownicy i grupy są aprowizowani i co najmniej 25 żądań na sekundę (wymagane)
- Ustanów kontakty inżynieryjne i pomocy technicznej, aby umożliwić klientom publikowanie w galerii dołączania (wymagane)
- 3 Nie wygasające poświadczenia testowe dla aplikacji (wymagane)
- Obsługa udzielenia kodu autoryzacji OAuth lub długotrwałego tokenu zgodnie z opisem w przykładzie (wymagane)
- Aplikacje OIDC muszą mieć zdefiniowaną co najmniej 1 rolę (niestandardową lub domyślną)
- Ustanów punkt pomocy technicznej i inżynieryjny w celu uzyskania pomocy technicznej dla klientów korzystających z dołączania do galerii (wymagane)
- Obsługa odnajdywania schematów (wymagane)
- Obsługa aktualizowania wielu członkostw w grupach przy użyciu pojedynczej poprawki
- Dokumentowanie punktu końcowego SCIM publicznie
Autoryzacja do aprowizacji łączników w galerii aplikacji
Specyfikacja SCIM nie definiuje schematu specyficznego dla standardu SCIM na potrzeby uwierzytelniania i autoryzacji i opiera się na użyciu istniejących standardów branżowych.
Metoda autoryzacji | Plusy | Minusy | Pomoc techniczna |
---|---|---|---|
Nazwa użytkownika i hasło (niezalecane lub obsługiwane przez identyfikator Entra firmy Microsoft) | Łatwe do zaimplementowania | Niezabezpieczone — Twoje $word Pa$nie ma znaczenia | Nieobsługiwane w przypadku nowych aplikacji z galerii ani aplikacji spoza galerii. |
Długożytny token elementu nośnego | Długotrwałe tokeny nie wymagają obecności użytkownika. Administratorzy mogą łatwo używać ich podczas konfigurowania aprowizacji. | Długotrwałe tokeny mogą być trudne do udostępnienia administratorowi bez używania niezabezpieczonych metod, takich jak poczta e-mail. | Obsługiwane w przypadku aplikacji z galerii i spoza galerii. |
Udzielanie kodu autoryzacji OAuth | Tokeny dostępu mają krótszy okres życia niż hasła i mają zautomatyzowany mechanizm odświeżania, którego nie mają długotrwałe tokeny elementu nośnego. Rzeczywisty użytkownik musi być obecny podczas początkowej autoryzacji, dodając poziom odpowiedzialności. | Wymaga obecności użytkownika. Jeśli użytkownik opuści organizację, token jest nieprawidłowy, a autoryzacja musi zostać ukończona ponownie. | Obsługiwane w przypadku aplikacji z galerii, ale nie aplikacji spoza galerii. Można jednak podać token dostępu w interfejsie użytkownika jako token tajny na potrzeby testowania krótkoterminowego. Obsługa udzielania kodu OAuth w przypadku spoza galerii znajduje się na naszej liście prac, oprócz obsługi konfigurowalnych adresów URL uwierzytelniania/tokenu w aplikacji galerii. |
Udzielanie poświadczeń klienta OAuth | Tokeny dostępu mają krótszy okres życia niż hasła i mają zautomatyzowany mechanizm odświeżania, którego nie mają długotrwałe tokeny elementu nośnego. Zarówno udziel kod autoryzacji, jak i poświadczenia klienta przyznają tworzenie tego samego typu tokenu dostępu, więc przenoszenie między tymi metodami jest niewidoczne dla interfejsu API. Aprowizacja może być zautomatyzowana, a nowe tokeny mogą być dyskretnie żądane bez interakcji z użytkownikiem. | Obsługiwane w przypadku aplikacji z galerii, ale nie aplikacji spoza galerii. Można jednak podać token dostępu w interfejsie użytkownika jako token tajny na potrzeby testowania krótkoterminowego. Obsługa udzielania poświadczeń klienta OAuth w przypadku spoza galerii znajduje się na naszej liście prac. |
Uwaga
Nie zaleca się pozostawienia pustego pola tokenu w interfejsie użytkownika niestandardowej aplikacji konfiguracji aprowizacji firmy Microsoft. Wygenerowany token jest dostępny głównie do celów testowych.
Przepływ udzielania kodu OAuth
Usługa aprowizacji obsługuje udzielanie kodu autoryzacji i po przesłaniu żądania opublikowania aplikacji w galerii nasz zespół będzie współpracować z Tobą w celu zebrania następujących informacji:
Adres URL autoryzacji, adres URL klienta umożliwiający uzyskanie autoryzacji od właściciela zasobu za pośrednictwem przekierowania agenta użytkownika. Użytkownik jest przekierowywany do tego adresu URL w celu autoryzowania dostępu.
Adres URL wymiany tokenów, adres URL klienta umożliwiający wymianę udzielenia autoryzacji dla tokenu dostępu, zazwyczaj z uwierzytelnianiem klienta.
Identyfikator klienta, serwer autoryzacji wystawia zarejestrowanego klienta identyfikator klienta, który jest unikatowym ciągiem reprezentującym informacje o rejestracji dostarczone przez klienta. Identyfikator klienta nie jest wpisem tajnym; jest on udostępniany właścicielowi zasobu i nie może być używany tylko do uwierzytelniania klienta.
Wpis tajny klienta, wpis tajny wygenerowany przez serwer autoryzacji, który powinien być unikatową wartością znaną tylko serwerowi autoryzacji.
Uwaga
Adres URL autoryzacji i adres URL wymiany tokenów nie można obecnie konfigurować dla dzierżawy.
Uwaga
Protokół OAuth w wersji 1 nie jest obsługiwany z powodu ujawnienia wpisu tajnego klienta. Protokół OAuth w wersji 2 jest obsługiwany.
W przypadku korzystania z przepływu udzielania kodu OAuth wymagany jest model, w którym każdy klient będzie przesyłał własny identyfikator klienta i klucz tajny klienta podczas konfigurowania wystąpienia aprowizacji. Pojedyncza para identyfikatora klienta/klucza tajnego klienta dla jednej aplikacji nie jest obsługiwana.
Jak skonfigurować przepływ udzielania kodu OAuth
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji.
Przejdź do pozycji Identity>Applications Enterprise Applications>Application Provisioning (Aprowizowanie aplikacji>>dla przedsiębiorstw) i wybierz pozycję Authorize (Autoryzuj).
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji.
Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.
Wybierz aplikację i przejdź do pozycji Aprowizacja.
Wybierz pozycję Autoryzuj.
Użytkownicy są przekierowywani do adresu URL autoryzacji (strona logowania dla aplikacji innej firmy).
Administrator udostępnia poświadczenia do aplikacji innej firmy.
Aplikacja innej firmy przekierowuje użytkownika z powrotem i udostępnia kod udzielania
Usługa Aprowizacji wywołuje adres URL tokenu i udostępnia kod udzielania. Aplikacja innej firmy odpowiada za pomocą tokenu dostępu, tokenu odświeżania i daty wygaśnięcia
Po rozpoczęciu cyklu aprowizacji usługa sprawdza, czy bieżący token dostępu jest prawidłowy i w razie potrzeby wymienia go na nowy token. Token dostępu jest udostępniany w każdym żądaniu przekazanym do aplikacji, a ważność żądania jest sprawdzana przed każdym żądaniem.
Uwaga
Chociaż nie można skonfigurować uwierzytelniania OAuth w aplikacjach spoza galerii, możesz ręcznie wygenerować token dostępu z serwera autoryzacji i wprowadzić go jako token tajny do aplikacji spoza galerii. Dzięki temu można sprawdzić zgodność serwera SCIM z usługą aprowizacji firmy Microsoft przed dołączenia do galerii aplikacji, która obsługuje udzielanie kodu OAuth.
Długotrwałe tokeny elementu nośnego OAuth: jeśli aplikacja nie obsługuje przepływu udzielania kodu autoryzacji OAuth, zamiast tego wygeneruj długotrwały token elementu nośnego OAuth, którego administrator może użyć do skonfigurowania integracji aprowizacji. Token powinien być bezterminowy lub w przeciwnym razie zadanie aprowizacji jest poddane kwarantannie po wygaśnięciu tokenu.
Aby uzyskać więcej metod uwierzytelniania i autoryzacji, poinformuj nas o usłudze UserVoice.
Lista kontrolna wprowadzenia galerii na rynek
Aby zwiększyć świadomość i zapotrzebowanie na wspólną integrację, zalecamy zaktualizowanie istniejącej dokumentacji i rozszerzenie integracji w kanałach marketingowych. Zalecamy wykonanie następującej listy kontrolnej w celu obsługi uruchamiania:
- Upewnij się, że zespoły ds. sprzedaży i obsługi klienta są świadome, gotowe i mogą rozmawiać z możliwościami integracji. Pokróć swoje zespoły, podaj im często zadawane pytania i uwzględnij integrację z materiałami sprzedażowymi.
- Utwórz wpis w blogu lub komunikat prasowy, który opisuje wspólną integrację, korzyści i sposób rozpoczęcia pracy. Przykład: Imprivata i Microsoft Entra Press Release
- Korzystaj z mediów społecznościowych, takich jak X, Facebook lub LinkedIn, aby promować integrację z klientami. Pamiętaj, aby dołączyć @Microsoft identyfikator Entra, abyśmy mogli retweetować post. Przykład: Imprivata X Post
- Utwórz lub zaktualizuj strony marketingowe/witrynę internetową (na przykład stronę integracji, stronę partnera, stronę cennika itd.), aby uwzględnić dostępność wspólnej integracji. Przykład: strona integracji pingboard, strona integracji usługi Smartsheet, strona z cennikiem Monday.com
- Utwórz artykuł centrum pomocy lub dokumentację techniczną dotyczącą tego, jak klienci mogą rozpocząć pracę. Przykład: Integracja aplikacji Envoy + Microsoft Entra.
- Ostrzegaj klientów o nowej integracji za pośrednictwem komunikacji klienta (comiesięczne biuletyny, kampanie e-mail, informacje o wersji produktu).
Następne kroki
Tworzenie przykładowego punktu końcowego SCIM Automate aprowizacji użytkowników i anulowania aprowizacji użytkowników w aplikacjachSaaS Dostosowywanie mapowań atrybutów na potrzeby aprowizacji użytkowników Pisanie wyrażeń na potrzeby mapowań atrybutówFiltry określania zakresu dla powiadomieńaprowizacjikonta Lista samouczków dotyczących sposobu integrowania aplikacji SaaS