Znane problemy i rozwiązania dotyczące zgodności protokołu SCIM 2.0 usługi aprowizacji użytkowników firmy Microsoft

Microsoft Entra ID może automatycznie aprowizować użytkowników i grupy do dowolnej aplikacji lub systemu, który jest fronted przez usługę internetową z interfejsem zdefiniowanym w systemie zarządzania tożsamościami między domenami (SCIM) 2.0 specyfikacji protokołu.

Obsługa identyfikatora Entra firmy Microsoft dla protokołu SCIM 2.0 została opisana w temacie Using System for Cross-Domain Identity Management (SCIM) to automatically provision users and groups from Microsoft Entra ID to applications (Używanie systemu do zarządzania tożsamościami między domenami w celu automatycznego aprowizowania użytkowników i grup z identyfikatora Microsoft Entra) do aplikacji obsługujących protokół SCIM 2.0.

W tym artykule opisano bieżące i wcześniejsze problemy z przestrzeganiem protokołu SCIM 2.0 przez usługę microsoft Entra i sposobem obejścia tych problemów.

Opis zadania aprowizacji

Usługa aprowizacji używa koncepcji zadania do działania względem aplikacji. Identyfikator zadania można znaleźć na pasku postępu. Wszystkie nowe aplikacje aprowizacji są tworzone przy użyciu identyfikatora jobID rozpoczynającego się od "scim". Zadanie scim reprezentuje bieżący stan usługi. Starsze zadania mają identyfikator "customappsso". To zadanie reprezentuje stan usługi w 2018 roku.

Jeśli używasz aplikacji w galerii, zadanie zazwyczaj zawiera nazwę aplikacji (np. zoom snowFlake lub dataBricks). Tę dokumentację można pominąć podczas korzystania z aplikacji z galerii. Dotyczy to głównie aplikacji spoza galerii z identyfikatorem jobID SCIM lub customAppSSO.

Problemy ze zgodnością i stanem standardu SCIM 2.0

W poniższej tabeli każdy element oznaczony jako stały oznacza, że odpowiednie zachowanie można znaleźć w zadaniu SCIM. Pracowaliśmy nad zapewnieniem zgodności z poprzednimi wersjami dla wprowadzonych zmian. Zalecamy użycie nowego zachowania dla wszelkich nowych implementacji i zaktualizowanie istniejących implementacji. Należy pamiętać, że zachowanie customappSSO, które było domyślne przed grudniem 2018 r., nie jest już obsługiwane.

Uwaga

W przypadku zmian wprowadzonych w 2018 r. można przywrócić zachowanie niestandardowego logowania jednokrotnego. W przypadku zmian wprowadzonych od 2018 r. możesz użyć adresów URL, aby przywrócić starsze zachowanie. Pracowaliśmy nad zapewnieniem zgodności z poprzednimi wersjami zmian, które wprowadziliśmy, umożliwiając powrót do starego identyfikatora jobID lub przy użyciu flagi. Jednak, jak wspomniano wcześniej, nie zalecamy implementowania starego zachowania, ponieważ nie jest już obsługiwane. Zalecamy użycie nowego zachowania dla wszelkich nowych implementacji i zaktualizowanie istniejących implementacji.

Problem ze zgodnością standardu SCIM 2.0 Stałe? Data poprawki Zgodność z poprzednimi wersjami
Identyfikator entra firmy Microsoft wymaga, aby adres "/scim" był w katalogu głównym adresu URL punktu końcowego SCIM aplikacji Tak 18 grudnia 2018 r. obniżanie poziomu do niestandardowego logowania jednokrotnego aplikacji
Atrybuty rozszerzenia używają notacji kropki "." przed nazwami atrybutów zamiast notacji dwukropka ":" Tak 18 grudnia 2018 r. obniżanie poziomu do niestandardowego logowania jednokrotnego aplikacji
Żądania poprawek dla atrybutów wielowartych zawierają nieprawidłową składnię filtru ścieżki Tak 18 grudnia 2018 r. obniżanie poziomu do niestandardowego logowania jednokrotnego aplikacji
Żądania tworzenia grupy zawierają nieprawidłowy identyfikator URI schematu Tak 18 grudnia 2018 r. obniżanie poziomu do niestandardowego logowania jednokrotnego aplikacji
Aktualizowanie zachowania PATCH w celu zapewnienia zgodności (np. aktywne jako wartości logiczne i prawidłowe usuwanie członkostwa w grupach) Nie. Do ustalenia użyj flagi funkcji

Flagi zmiany zachowania SCIM

Użyj flag poniżej w adresie URL dzierżawy aplikacji, aby zmienić domyślne zachowanie klienta SCIM.

SCIM flags to later behavior.

Użyj następującego adresu URL, aby zaktualizować zachowanie poprawki i zapewnić zgodność ze standardem SCIM. Flaga zmieni następujące zachowania:

  • Żądania wysyłane do wyłączania użytkowników
  • Żądania dodania atrybutu ciągu o pojedynczej wartości
  • Żądania zastąpienia wielu atrybutów
  • Żądania usunięcia członka grupy

To zachowanie jest obecnie dostępne tylko w przypadku używania flagi, ale stanie się domyślnym zachowaniem w ciągu najbliższych kilku miesięcy. Należy pamiętać, że ta flaga funkcji nie działa obecnie z aprowizowaniem na żądanie.

Poniżej przedstawiono przykładowe żądania, które pomogą określić, co aparat synchronizacji aktualnie wysyła w porównaniu z żądaniami wysyłanymi po włączeniu flagi funkcji.

Żądania dotyczące wyłączania użytkowników:

Bez flagi funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "active",
          "value": "False"
      }
  ]
}

Z flagą funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "active",
          "value": false
      }
  ]
}

Żądania do dodania atrybutu ciągu o pojedynczej wartości:

Bez flagi funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "Add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

Z flagą funkcji

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    {
      "op": "add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

Żądania zastąpienia wielu atrybutów:

Bez flagi funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "displayName",
          "value": "Pvlo"
      },
      {
          "op": "Replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestBcwqnm@test.microsoft.com"
      },
      {
          "op": "Replace",
          "path": "name.givenName",
          "value": "Gtfd"
      },
      {
          "op": "Replace",
          "path": "name.familyName",
          "value": "Pkqf"
      },
      {
          "op": "Replace",
          "path": "externalId",
          "value": "Eqpj"
      },
      {
          "op": "Replace",
          "path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber",
          "value": "Eqpj"
      }
  ]
}

Z flagą funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestMhvaes@test.microsoft.com"
      },
      {
          "op": "replace",
          "value": {
              "displayName": "Bjfe",
              "name.givenName": "Kkom",
              "name.familyName": "Unua",
              "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber": "Aklq"
          }
      }
  ]
}

Żądania usunięcia członka grupy:

Bez flagi funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Remove",
          "path": "members",
          "value": [
              {
                  "value": "u1091"
              }
          ]
      }
  ]
}

Z flagą funkcji

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "remove",
          "path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
      }
  ]
}
  • Adres URL zmiany na starszą dół: Gdy nowe zachowanie zgodne ze standardem SCIM stanie się domyślne w aplikacji spoza galerii, możesz użyć następującego adresu URL, aby przywrócić stare, niezgodne z standardem SCIM zachowanie: AzureAdScimPatch2017

Uaktualnianie ze starszego zadania usługi customappsso do zadania SCIM

Wykonanie poniższych kroków spowoduje usunięcie istniejącego zadania customappsso i utworzenie nowego zadania SCIM.

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej Administracja istrator aplikacji.

  2. Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.

  3. Znajdź i wybierz istniejącą aplikację SCIM.

  4. W sekcji Właściwości istniejącej aplikacji SCIM skopiuj identyfikator obiektu.

  5. W nowym oknie przeglądarki internetowej przejdź do https://developer.microsoft.com/graph/graph-explorer witryny i zaloguj się jako administrator dzierżawy firmy Microsoft Entra, w której jest dodawana aplikacja.

  6. W Eksploratorze programu Graph uruchom poniższe polecenie, aby zlokalizować identyfikator zadania aprowizacji. Zastąp ciąg "[object-id]" identyfikatorem jednostki usługi (identyfikatorem obiektu) skopiowanym z trzeciego kroku.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs

    Get Jobs

  7. W wynikach skopiuj pełny ciąg "ID", który rozpoczyna się od ciągu "customappsso" lub "scim".

  8. Uruchom poniższe polecenie, aby pobrać konfigurację mapowania atrybutów, aby utworzyć kopię zapasową. Użyj tego samego [object-id] jak poprzednio i zastąp ciąg [job-id] identyfikatorem zadania aprowizacji skopiowanym z ostatniego kroku.

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema

    Get Schema

  9. Skopiuj dane wyjściowe JSON z ostatniego kroku i zapisz je w pliku tekstowym. Kod JSON zawiera wszystkie niestandardowe mapowania atrybutów dodane do starej aplikacji i powinny zawierać około kilku tysięcy wierszy kodu JSON.

  10. Uruchom poniższe polecenie, aby usunąć zadanie aprowizacji:

    DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]

  11. Uruchom poniższe polecenie, aby utworzyć nowe zadanie aprowizacji zawierające najnowsze poprawki usługi.

POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { "templateId": "scim" }

  1. W wynikach ostatniego kroku skopiuj pełny ciąg "ID", który zaczyna się od ciągu "scim". Opcjonalnie ponownie zastosuj stare mapowania atrybutów, uruchamiając poniższe polecenie, zastępując ciąg [new-job-id] skopiowanym nowym identyfikatorem zadania i wprowadzając dane wyjściowe JSON z kroku 7 jako treść żądania.

PUT https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[new-job-id]/schema { <your-schema-json-here> }

  1. Wróć do pierwszego okna przeglądarki internetowej i wybierz kartę Aprowizacja aplikacji.
  2. Zweryfikuj konfigurację, a następnie uruchom zadanie aprowizacji.

Umożliwiamy obniżenie poziomu do starego zachowania, ale nie zalecamy jej, ponieważ usługa customappsso nie korzysta z niektórych aktualizacji, które wprowadzamy, i może nie być obsługiwana na zawsze.

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra jako co najmniej Administracja istrator aplikacji.

  2. Przejdź do aplikacji dla przedsiębiorstw usługi Identity>Applications>.

  3. W sekcji Tworzenie aplikacji utwórz nową aplikację spoza galerii.

  4. W sekcji Właściwości nowej aplikacji niestandardowej skopiuj identyfikator obiektu.

  5. W nowym oknie przeglądarki internetowej przejdź do https://developer.microsoft.com/graph/graph-explorer witryny i zaloguj się jako administrator dzierżawy firmy Microsoft Entra, w której jest dodawana aplikacja.

  6. W Eksploratorze programu Graph uruchom poniższe polecenie, aby zainicjować konfigurację aprowizacji aplikacji. Zastąp ciąg "[object-id]" identyfikatorem jednostki usługi (identyfikatorem obiektu) skopiowanym z trzeciego kroku.

    POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { templateId: "customappsso" }

  7. Wróć do pierwszego okna przeglądarki internetowej i wybierz kartę Aprowizacja aplikacji.

  8. Ukończ konfigurację aprowizacji użytkowników, tak jak zwykle.

Następne kroki

Dowiedz się więcej na temat aprowizacji i anulowania aprowizacji aplikacji SaaS