Przykłady komunikacji usługi wystawcy
Usługa Zweryfikowany identyfikator Microsoft Entra może wystawiać poświadczenia weryfikowalne, pobierając oświadczenia z tokenu identyfikatora wygenerowanego przez dostawcę tożsamości zgodnego z identyfikatorem organizacji. W tym artykule opisano sposób konfigurowania dostawcy tożsamości, aby aplikacja Authenticator mogła się z nim komunikować i pobierać prawidłowy token identyfikatora, aby przekazać go do usługi wystawiającej certyfikaty.
Aby wydać poświadczenia weryfikowalne, aplikacja Authenticator jest poinstruowana przez pobranie kontraktu w celu zebrania danych wejściowych od użytkownika i wysłania tych informacji do usługi wystawiającej certyfikaty. Jeśli musisz użyć tokenu identyfikatora, musisz skonfigurować dostawcę tożsamości, aby zezwolić aplikacji Authenticator na logowanie użytkownika przy użyciu protokołu OpenID Połączenie. Oświadczenia w wynikowym tokenie identyfikatora są używane do wypełniania zawartości poświadczeń weryfikowalnych. Aplikacja Authenticator uwierzytelnia użytkownika przy użyciu przepływu kodu autoryzacji openID Połączenie. Dostawca OpenID musi obsługiwać następujące funkcje Połączenie OpenID:
Funkcja | opis |
---|---|
Typ udzielenia | Musi obsługiwać typ udzielania kodu autoryzacji. |
Format tokenu | Musi tworzyć niezaszyfrowane kompaktowe zestawy JWTs. |
Algorytm podpisu | Należy utworzyć znaki JWTs podpisane przy użyciu rs 256. |
Dokument konfiguracji | Musi obsługiwać dokument konfiguracji openID Połączenie i jwks_uri . |
Rejestracja klienta | Musi obsługiwać publiczną rejestrację redirect_uri klienta przy użyciu wartości vcclient://openid/ . |
PKCE | Zalecane ze względów bezpieczeństwa, ale nie są wymagane. |
Poniżej przedstawiono przykłady żądań HTTP wysyłanych do dostawcy tożsamości. Dostawca tożsamości musi zaakceptować te żądania i odpowiadać na nie zgodnie ze standardem uwierzytelniania openID Połączenie.
Rejestracja klienta
Aby uzyskać poświadczenia weryfikowalne, użytkownicy muszą zalogować się do dostawcy tożsamości z aplikacji Microsoft Authenticator.
Aby włączyć tę wymianę, zarejestruj aplikację u dostawcy tożsamości. Jeśli używasz identyfikatora Entra firmy Microsoft, możesz znaleźć instrukcje tutaj. Podczas rejestrowania użyj następujących wartości.
Ustawienie | Wartość |
---|---|
Nazwa aplikacji | <Issuer Name> Verifiable Credential Service |
Adres URI przekierowania | vcclient://openid/ |
Po zarejestrowaniu aplikacji u dostawcy tożsamości zapisz jego identyfikator klienta. Będzie on używany w poniższej sekcji. Należy również zapisać adres URL dobrze znanego punktu końcowego dla dostawcy tożsamości zgodnego z OIDC. Usługa wystawiania używa tego punktu końcowego do pobrania kluczy publicznych potrzebnych do zweryfikowania tokenu identyfikatora po wysłaniu przez wystawcę Authenticator.
Skonfigurowany identyfikator URI przekierowania jest używany przez aplikację Authenticator, więc wie, kiedy logowanie zostało ukończone i może pobrać token identyfikatora.
Żądanie autoryzacji
Żądanie autoryzacji wysłane do dostawcy tożsamości używa następującego formatu.
GET /authorize?client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&response_mode=query&response_type=code&scope=openid&state=12345&nonce=12345 HTTP/1.1
Host: www.contoso.com
Connection: Keep-Alive
Parametr | Wartość |
---|---|
client_id |
Identyfikator klienta uzyskany podczas procesu rejestracji aplikacji. |
redirect_uri |
Należy użyć polecenia vcclient://openid/ . |
response_mode |
Musi obsługiwać wartość query . |
response_type |
Musi obsługiwać wartość code . |
scope |
Musi obsługiwać wartość openid . |
state |
Musi zostać zwrócony klientowi zgodnie ze standardem OpenID Połączenie. |
nonce |
Należy zwrócić jako oświadczenie w tokenie identyfikatora zgodnie ze standardem OpenID Połączenie. |
Po otrzymaniu żądania autoryzacji dostawca tożsamości powinien uwierzytelnić użytkownika i wykonać wszelkie kroki niezbędne do ukończenia logowania, takiego jak uwierzytelnianie wieloskładnikowe.
Możesz dostosować proces logowania w celu spełnienia Twoich potrzeb. Możesz poprosić użytkowników o podanie dodatkowych informacji, zaakceptowanie warunków świadczenia usługi, zapłacenie za ich poświadczenia i nie tylko. Po wykonaniu wszystkich kroków odpowiedz na żądanie autoryzacji, przekierowując do identyfikatora URI przekierowania, jak pokazano poniżej.
vcclient://openid/?code=nbafhjbh1ub1yhbj1h4jr1&state=12345
Parametr | Wartość |
---|---|
code |
Kod autoryzacji zwrócony przez dostawcę tożsamości. |
state |
Musi zostać zwrócony klientowi zgodnie ze standardem OpenID Połączenie. |
Żądanie tokenu
Żądanie tokenu wysłane do dostawcy tożsamości będzie mieć następujący formularz.
POST /token HTTP/1.1
Host: www.contoso.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 291
client_id=<client-id>&redirect_uri=vcclient%3A%2F%2Fopenid%2F&grant_type=authorization_code&code=nbafhjbh1ub1yhbj1h4jr1&scope=openid
Parametr | Wartość |
---|---|
client_id |
Identyfikator klienta uzyskany podczas procesu rejestracji aplikacji. |
redirect_uri |
Należy użyć polecenia vcclient://openid/ . |
scope |
Musi obsługiwać wartość openid . |
grant_type |
Musi obsługiwać wartość authorization_code . |
code |
Kod autoryzacji zwrócony przez dostawcę tożsamości. |
Po otrzymaniu żądania tokenu dostawca tożsamości powinien odpowiedzieć przy użyciu tokenu identyfikatora.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
}
Token identyfikatora musi używać formatu serializacji kompaktowej JWT i nie może być szyfrowany. Token identyfikatora powinien zawierać następujące oświadczenia.
Oświadczenie | Wartość |
---|---|
kid |
Identyfikator klucza używany do podpisywania tokenu identyfikatora odpowiadający wpisowi w dostawcy jwks_uri OpenID . |
aud |
Identyfikator klienta uzyskany podczas procesu rejestracji aplikacji. |
iss |
Musi być wartością issuer w dokumencie konfiguracji Połączenie OpenID. |
exp |
Musi zawierać czas wygaśnięcia tokenu identyfikatora. |
iat |
Musi zawierać czas wystawienia tokenu identyfikatora. |
nonce |
Wartość uwzględniona w żądaniu autoryzacji. |
Dodatkowe oświadczenia | Token identyfikatora powinien zawierać wszelkie dodatkowe oświadczenia, których wartości zostaną uwzględnione w poświadczeniach weryfikowalnych, które zostaną wystawione. W tej sekcji należy uwzględnić wszelkie atrybuty użytkownika, takie jak ich nazwa. |