OpenID Connect a Microsoft Identitásplatform
Az OpenID Connect (OIDC) kiterjeszti az OAuth 2.0 engedélyezési protokollt egy másik hitelesítési protokollként való használatra. Az OIDC használatával engedélyezheti az egyszeri bejelentkezést (SSO) az OAuth-kompatibilis alkalmazások között egy azonosító jogkivonatnak nevezett biztonsági jogkivonat használatával.
Az OIDC teljes specifikációja elérhető az OpenID Foundation webhelyén, az OpenID Connect Core 1.0 specifikációban.
Protokollfolyamat: Bejelentkezés
Az alábbi ábrán az OpenID Connect egyszerű bejelentkezési folyamata látható. A folyamat lépéseit részletesebben a cikk későbbi szakaszaiban ismertetjük.
Azonosító jogkivonatok engedélyezése
Az OpenID Connect által bevezetett azonosító jogkivonatot az engedélyezési kiszolgáló, a Microsoft Identitásplatform állítja ki, amikor az ügyfélalkalmazás a felhasználói hitelesítés során kér egyet. Az azonosító jogkivonat lehetővé teszi, hogy az ügyfélalkalmazás ellenőrizze a felhasználó személyazonosságát, és egyéb információkat (jogcímeket) kapjon róluk.
Az azonosító jogkivonatok alapértelmezés szerint nem jelennek meg a Microsoft Identitásplatform regisztrált alkalmazásokhoz. Az alkalmazások azonosító jogkivonatai az alábbi módszerek egyikével engedélyezve vannak:
- Jelentkezzen be a Microsoft Entra felügyeleti központjába.
- Keresse meg az identitásalkalmazásokat>> Alkalmazásregisztrációk>< a hitelesítést.>>
- A Platformkonfigurációk területen válassza a Platform hozzáadása lehetőséget.
- A megnyíló panelen válassza ki az alkalmazásnak megfelelő platformot. Válassza például a Web elemet egy webalkalmazáshoz.
- Az Átirányítási URI-k területen adja hozzá az alkalmazás átirányítási URI-ját. Például:
https://localhost:8080/
. - Az Implicit engedélyezési és hibrid folyamatok területen jelölje be az (implicit és hibrid folyamatokhoz használt) azonosító jogkivonatokat.
Vagy:
- Válassza az Identitásalkalmazások>> lehetőséget Alkalmazásregisztrációk>< az alkalmazásjegyzéket.>>
- Állítsa
oauth2AllowIdTokenImplicitFlow
be az alkalmazásregisztráció alkalmazásjegyzékében.true
Ha az azonosító jogkivonatok nincsenek engedélyezve az alkalmazáshoz, és az egyiket kérik, a Microsoft Identitásplatform a következőhöz hasonló hibát ad visszaunsupported_response
:
Az "response_type" bemeneti paraméter megadott értéke ebben az ügyfélben nem engedélyezett. A várt érték "kód".
Az azonosító jogkivonat kérését id_token
a response_type
cikk későbbi részében, a Bejelentkezési kérelem elküldése című cikk ismerteti.
Az OpenID konfigurációs dokumentum lekérése
Az openID-szolgáltatók, például a Microsoft Identitásplatform, nyilvánosan elérhető végponton biztosítják az OpenID-szolgáltató konfigurációs dokumentumát, amely tartalmazza a szolgáltató OIDC-végpontjait, a támogatott jogcímeket és egyéb metaadatokat. Az ügyfélalkalmazások a metaadatok segítségével felderíthetik a hitelesítéshez használandó URL-címeket és a hitelesítési szolgáltatás nyilvános aláíró kulcsait.
A hitelesítési kódtárak az OpenID konfigurációs dokumentum leggyakoribb felhasználói, amelyeket hitelesítési URL-címek, a szolgáltató nyilvános aláírókulcsai és egyéb szolgáltatás metaadatainak felderítésére használnak. Ha egy hitelesítési kódtárat használ az alkalmazásban, valószínűleg nem kell kézzel kódolnia az OpenID konfigurációs dokumentum végpontjának kéréseit és válaszait.
Az alkalmazás OpenID konfigurációs dokumentumának URI-jának megkeresése
A Microsoft Entra ID-ban minden alkalmazásregisztráció nyilvánosan elérhető végpontot biztosít, amely az OpenID konfigurációs dokumentumát szolgálja ki. A konfigurációs dokumentum alkalmazáshoz tartozó végpontjának URI-jának meghatározásához fűzze hozzá a jól ismert OpenID konfigurációs útvonalat az alkalmazásregisztráció szolgáltatói URL-címéhez.
- Jól ismert konfigurációs dokumentum elérési útja:
/.well-known/openid-configuration
- Szolgáltató URL-címe:
https://login.microsoftonline.com/{tenant}/v2.0
Az érték {tenant}
az alkalmazás bejelentkezési célközönségétől függően változik az alábbi táblázatban látható módon. A szolgáltató URL-címe a felhőpéldányonként is eltérő.
Érték | Leírás |
---|---|
common |
A Személyes Microsoft-fiókkal és a Microsoft Entra-azonosítóból származó munkahelyi vagy iskolai fiókkal rendelkező felhasználók bejelentkezhetnek az alkalmazásba. |
organizations |
Csak a Microsoft Entra-azonosítóból munkahelyi vagy iskolai fiókkal rendelkező felhasználók jelentkezhetnek be az alkalmazásba. |
consumers |
Csak személyes Microsoft-fiókkal rendelkező felhasználók jelentkezhetnek be az alkalmazásba. |
Directory (tenant) ID vagy contoso.onmicrosoft.com |
Csak egy adott Microsoft Entra-bérlő (munkahelyi vagy iskolai fiókkal rendelkező címtártagok vagy személyes Microsoft-fiókkal rendelkező címtárvendégek) felhasználói jelentkezhetnek be az alkalmazásba. Az érték lehet a Microsoft Entra-bérlő tartományneve vagy a bérlőazonosító GUID formátumban. |
Tipp.
Vegye figyelembe, hogy ha személyes Microsoft-fiókokhoz használja a szolgáltatót vagy consumers
a common
szolgáltatót, a felhasználó erőforrásalkalmazást úgy kell konfigurálni, hogy az a signInAudience-nek megfelelően támogassa az ilyen típusú fiókokat.
Ha meg szeretné keresni az OIDC konfigurációs dokumentumát a Microsoft Entra felügyeleti központban, jelentkezzen be a Microsoft Entra felügyeleti központba , majd:
- Keresse meg az identitásalkalmazásokat>> Alkalmazásregisztrációk>< a végpontokat.>>
- Keresse meg az URI-t az OpenID Connect metaadat-dokumentumában.
Mintakérelem
A következő kérés lekéri az OpenID konfigurációs metaadatait a common
szolgáltató OpenID-konfigurációs dokumentumvégpontjáról az Azure nyilvános felhőben:
GET /common/v2.0/.well-known/openid-configuration
Host: login.microsoftonline.com
Tipp.
Próbálja ki! Az alkalmazás szolgáltatójának OpenID-konfigurációs dokumentumának common
megtekintéséhez nyissa meg a következőt https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration: .
Mintaválasz
A konfigurációs metaadatok JSON formátumban jelennek meg az alábbi példában látható módon (a rövidség kedvéért csonkolt). A JSON-válaszban visszaadott metaadatokat részletesen az OpenID Connect 1.0 felderítési specifikációja ismerteti.
{
"authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt"
],
"jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
"userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
"subject_types_supported": [
"pairwise"
],
...
}
A bejelentkezési kérelem elküldése
Ha hitelesíteni szeretne egy felhasználót, és azonosító jogkivonatot szeretne kérni az alkalmazásban való használathoz, irányítsa a felhasználói ügynökét a Microsoft Identitásplatform /engedélyezés végpontjára. A kérés hasonló az OAuth 2.0 engedélyezési kódfolyamat első szakaszához, de az alábbi különbségekkel:
- Adja meg a
openid
hatókört ascope
paraméterben. - Adja meg
id_token
aresponse_type
paraméterben. - Adja meg a paramétert
nonce
.
Példa bejelentkezési kérelemre (a sortörések csak olvashatóság érdekében szerepelnek):
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910
Paraméter | Feltétel | Leírás |
---|---|---|
tenant |
Kötelező | A kérés elérési útján található érték használatával {tenant} szabályozhatja, hogy ki jelentkezhet be az alkalmazásba. Az engedélyezett értékek a common , organizations és consumers a bérlőazonosítók. További információkért tekintse meg a protokoll alapjait. Kritikus fontosságú, hogy olyan vendégforgatókönyvek esetén, ahol egy felhasználót egy bérlőről egy másik bérlőbe ír alá, meg kell adnia a bérlőazonosítót, hogy helyesen jelentkezzen be az erőforrás-bérlőbe. |
client_id |
Kötelező | Az alkalmazás (ügyfél) azonosítója, amelyet a Microsoft Entra felügyeleti központ – Alkalmazásregisztrációk alkalmazáshoz rendelt felhasználói felület. |
response_type |
Kötelező | Az OpenID Connect-bejelentkezéshez szerepelnie id_token kell. |
redirect_uri |
Ajánlott | Az alkalmazás átirányítási URI-ja, ahol az alkalmazás hitelesítési válaszokat küldhet és fogadhat. Pontosan meg kell egyeznie a portálon regisztrált átirányítási URI-k egyikével, kivéve, hogy URL-címkóddal kell rendelkeznie. Ha nincs jelen, a végpont véletlenszerűen regisztrált redirect_uri egyet választ a felhasználó visszaküldéséhez. |
scope |
Kötelező | A hatókörök szóközzel elválasztott listája. Az OpenID Connect esetében tartalmaznia kell a hatókört openid , amely a bejelentkezési engedélyre lefordítja a hozzájárulás felhasználói felületén. Ebben a kérelemben más hatókörök is szerepelhetnek a hozzájárulás kéréséhez. |
nonce |
Kötelező | Az alkalmazás által az azonosító jogkivonatra vonatkozó kérésében létrehozott és elküldött érték. Ugyanez nonce az érték szerepel az alkalmazásnak a Microsoft Identitásplatform által visszaadott azonosító jogkivonatban. A jogkivonatok visszajátszási támadásainak csökkentése érdekében az alkalmazásnak ellenőriznie kell, hogy az nonce azonosító jogkivonatában szereplő érték ugyanaz-e, mint amelyet a jogkivonat kérésekor küldött. Az érték általában egy egyedi, véletlenszerű sztring. |
response_mode |
Ajánlott | Megadja azt a metódust, amellyel az eredményül kapott engedélyezési kódot vissza kell küldeni az alkalmazásnak. A következők egyike lehet: form_post vagy fragment . Webalkalmazások esetén javasoljuk, hogy a response_mode=form_post jogkivonatok biztonságos átvitelét biztosítsa az alkalmazásnak. |
state |
Ajánlott | A kérésben szereplő érték, amelyet a jogkivonat válasza is visszaad. Bármilyen tartalom sztringje lehet. A véletlenszerűen létrehozott egyedi érték általában a helyek közötti hamisítási támadások megelőzésére szolgál. Az állapot a felhasználó állapotával kapcsolatos információk kódolására is használható az alkalmazásban a hitelesítési kérelem előtt, például a felhasználó lapjának vagy nézetének megtekintéséhez. |
prompt |
Választható | A szükséges felhasználói beavatkozás típusát jelzi. Az egyetlen érvényes érték jelenleg a login , none , consent és select_account . A prompt=login jogcím arra kényszeríti a felhasználót, hogy adja meg a hitelesítő adatait a kéréshez, ami nem teszi lehetővé az egyszeri bejelentkezést. A prompt=none paraméter az ellenkezője, és párosítani kell egy login_hint olyannal, amely jelzi, hogy melyik felhasználót kell bejelentkezni. Ezek a paraméterek biztosítják, hogy a felhasználó egyáltalán ne jelenjen meg interaktív kéréssel. Ha a kérés nem hajtható végre csendben egyszeri bejelentkezéssel, a Microsoft Identitásplatform hibát ad vissza. Az okok közé tartozik, hogy nincs bejelentkezett felhasználó, a javasolt felhasználó nincs bejelentkezve, vagy több felhasználó van bejelentkezve, de nincs megadva tipp. A prompt=consent jogcím aktiválja az OAuth hozzájárulási párbeszédpanelt, miután a felhasználó bejelentkezett. A párbeszédpanel arra kéri a felhasználót, hogy adjon engedélyeket az alkalmazásnak. select_account Végül megjeleníti a felhasználónak egy fiókválasztót, amely kizárja az egyszeri kijelentkezést, de lehetővé teszi a felhasználó számára, hogy a hitelesítő adatok megadása nélkül válassza ki, hogy melyik fiókkal kíván bejelentkezni. Nem használhatja mindkettőt login_hint és select_account . |
login_hint |
Választható | Ezzel a paramétersel előre kitöltheti a felhasználó bejelentkezési oldalának felhasználónevét és e-mail-címét, ha előre ismeri a felhasználónevet. Az alkalmazások gyakran használják ezt a paramétert az újrahitelesítés során, miután már kinyerték az login_hint opcionális jogcímet egy korábbi bejelentkezésből. |
domain_hint |
Választható | A felhasználó tartománya egy összevont könyvtárban. Ez kihagyja azt az e-mail-alapú felderítési folyamatot, amelyen a felhasználó végighalad a bejelentkezési oldalon, kissé egyszerűbb felhasználói élmény érdekében. Az olyan bérlők esetében, amelyek egy helyszíni címtáron, például az AD FS-en keresztül vannak összevonva, ez gyakran zökkenőmentes bejelentkezést eredményez a meglévő bejelentkezési munkamenet miatt. |
Ekkor a rendszer kéri a felhasználót, hogy adja meg a hitelesítő adatait, és fejezze be a hitelesítést. A Microsoft Identitásplatform ellenőrzi, hogy a felhasználó hozzájárult-e a scope
lekérdezési paraméterben megadott engedélyekhez. Ha a felhasználó nem járult hozzá ezekhez az engedélyekhez, a Microsoft Identitásplatform kéri a felhasználót, hogy járuljon hozzá a szükséges engedélyekhez. Az engedélyekről, a hozzájárulásokról és a több-bérlős alkalmazásokról bővebben is olvashat.
Miután a felhasználó hitelesített és hozzájárulást adott, a Microsoft Identitásplatform a paraméterben response_mode
megadott módszerrel választ ad vissza az alkalmazásnak a megadott átirányítási URI-n.
Sikeres válasz
A sikeres válasz használata response_mode=form_post
a következőhöz hasonló:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
Hibaválasz
A hibaválaszokat az átirányítási URI-nak is elküldheti, hogy az alkalmazás kezelni tudja őket, például:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Paraméter | Leírás |
---|---|
error |
Hibakód-sztring, amellyel osztályozhatja a előforduló hibák típusait, és reagálhat a hibákra. |
error_description |
Egy adott hibaüzenet, amely segíthet azonosítani a hitelesítési hiba kiváltó okát. |
Az engedélyezési végpont hibáinak hibakódjai
Az alábbi táblázat a hibaválasz paraméterében error
visszaadható hibakódokat ismerteti:
Hibakód | Leírás | Ügyfélművelet |
---|---|---|
invalid_request |
Protokollhiba, például hiányzó kötelező paraméter. | Javítsa ki és küldje el újra a kérést. Ezt a fejlesztési hibát az alkalmazástesztelés során kell észlelni. |
unauthorized_client |
Az ügyfélalkalmazás nem kérhet engedélyezési kódot. | Ez a hiba akkor fordulhat elő, ha az ügyfélalkalmazás nincs regisztrálva a Microsoft Entra-azonosítóban, vagy nem kerül a felhasználó Microsoft Entra-bérlőjére. Az alkalmazás megkérheti a felhasználót, hogy telepítse az alkalmazást, és adja hozzá a Microsoft Entra-azonosítóhoz. |
access_denied |
Az erőforrás tulajdonosa megtagadta a hozzájárulást. | Az ügyfélalkalmazás értesítheti a felhasználót, hogy csak akkor folytathatja a műveletet, ha a felhasználó beleegyezik. |
unsupported_response_type |
Az engedélyezési kiszolgáló nem támogatja a kérés választípusát. | Javítsa ki és küldje el újra a kérést. Ezt a fejlesztési hibát az alkalmazástesztelés során kell észlelni. |
server_error |
A kiszolgáló váratlan hibát észlelt. | Ismételje meg a kérést. Ezek a hibák átmeneti feltételekből adódhatnak. Az ügyfélalkalmazás elmagyarázhatja a felhasználónak, hogy a válasza egy ideiglenes hiba miatt késik. |
temporarily_unavailable |
A kiszolgáló átmenetileg túl elfoglalt a kérés kezeléséhez. | Ismételje meg a kérést. Az ügyfélalkalmazás elmagyarázhatja a felhasználónak, hogy a válasza egy ideiglenes feltétel miatt késik. |
invalid_resource |
A célerőforrás érvénytelen, mert nem létezik, a Microsoft Entra-azonosító nem találja, vagy helytelenül van konfigurálva. | Ez a hiba azt jelzi, hogy az erőforrás , ha létezik, nem lett konfigurálva a bérlőben. Az alkalmazás kérheti a felhasználót az alkalmazás telepítésére és a Microsoft Entra-azonosítóhoz való hozzáadására vonatkozó utasítások megadására. |
Az azonosító jogkivonat érvényesítése
Előfordulhat, hogy egy azonosító jogkivonat fogadása az alkalmazásban nem mindig elegendő a felhasználó teljes hitelesítéséhez. Előfordulhat, hogy ellenőriznie kell az azonosító jogkivonat aláírását, és ellenőriznie kell a jogcímeit az alkalmazás igényeinek megfelelően. Az összes OpenID-szolgáltatóhoz hasonlóan a Microsoft Identitásplatform azonosító jogkivonatai a nyilvános kulcsú titkosítással aláírt JSON-webjogkivonatok (JWT-k).
Az engedélyezéshez azonosító jogkivonatokat használó webalkalmazásoknak és webes API-knak ellenőrizniük kell őket, mert az ilyen alkalmazások hozzáférést kapnak az adatokhoz. Előfordulhat azonban, hogy más típusú alkalmazások esetében nem előnyös az azonosító jogkivonatának érvényesítése. A natív és egyoldalas alkalmazások (SPA) például ritkán élvezik az azonosító jogkivonatok érvényesítését, mivel az eszközhöz vagy böngészőhöz fizikai hozzáféréssel rendelkező entitások esetleg megkerülhetik az érvényesítést.
A jogkivonat-érvényesítési megkerülésre két példa:
- Hamis jogkivonatok vagy kulcsok biztosítása az eszköz hálózati forgalmának módosításával
- Az alkalmazás hibakeresése és az érvényesítési logika túllépése a program végrehajtása során.
Ha érvényesíti az azonosító jogkivonatokat az alkalmazásban, javasoljuk , hogy ne tegye ezt manuálisan. Ehelyett használjon jogkivonat-érvényesítési kódtárat a jogkivonatok elemzéséhez és érvényesítéséhez. A jogkivonat-érvényesítési kódtárak a legtöbb fejlesztési nyelvhez, keretrendszerhez és platformhoz elérhetők.
Mit kell érvényesíteni egy azonosító jogkivonatban?
Az azonosító jogkivonat aláírásának érvényesítése mellett számos jogcímét is érvényesítenie kell az azonosító jogkivonat érvényesítése című cikkben leírtak szerint. Lásd még a kulcsátállítás aláírásával kapcsolatos fontos információkat.
Számos más ellenőrzés is gyakori, és alkalmazásforgatókönyvenként eltérő, például:
- Annak biztosítása, hogy a felhasználó/szervezet regisztrált az alkalmazásra.
- Annak biztosítása, hogy a felhasználó megfelelő engedélyekkel/jogosultságokkal rendelkezik
- A hitelesítés bizonyos erősségének biztosítása, például a többtényezős hitelesítés.
Miután ellenőrizte az azonosító jogkivonatot, megkezdhet egy munkamenetet a felhasználóval, és a jogkivonat jogcímeiben szereplő információkat felhasználhatja az alkalmazások személyre szabására, megjelenítésére vagy az adataik tárolására.
Protokolldiagram: Hozzáférési jogkivonat beszerzése
Sok alkalmazásnak nem csak be kell jelentkeznie egy felhasználóba, hanem egy védett erőforráshoz, például egy webes API-hoz is hozzá kell férnie a felhasználó nevében. Ez a forgatókönyv az OpenID Connectet kombinálja egy azonosító jogkivonat lekéréséhez a felhasználó és az OAuth 2.0 hitelesítéséhez egy védett erőforrás hozzáférési jogkivonatának lekéréséhez.
A teljes OpenID Connect bejelentkezési és jogkivonat-beszerzési folyamat az alábbi diagramhoz hasonlóan néz ki:
Hozzáférési jogkivonat beszerzése a UserInfo-végponthoz
Az azonosító jogkivonaton kívül a hitelesített felhasználó adatai az OIDC UserInfo végpontján is elérhetővé válnak.
Az OIDC UserInfo végpont hozzáférési jogkivonatának lekéréséhez módosítsa a bejelentkezési kérést az alábbiak szerint:
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444 // Your app registration's Application (client) ID
&response_type=id_token%20token // Requests both an ID token and access token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F // Your application's redirect URI (URL-encoded)
&response_mode=form_post // 'form_post' or 'fragment'
&scope=openid+profile+email // 'openid' is required; 'profile' and 'email' provide information in the UserInfo endpoint as they do in an ID token.
&state=12345 // Any value - provided by your app
&nonce=678910 // Any value - provided by your app
Használhatja az engedélyezési kódfolyamatot, az eszköz kódfolyamatát vagy egy frissítési jogkivonatot az alkalmazás hozzáférési jogkivonatának response_type=token
lekéréséhez.
Sikeres jogkivonat-válasz
Sikeres válasz a következő használatával response_mode=form_post
:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I....
&token_type=Bearer
&expires_in=3598
&scope=email+openid+profile
&id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI....
&state=12345
A válaszparaméterek ugyanazt jelentik, függetlenül a beolvasásukhoz használt folyamattól.
Paraméter | Leírás |
---|---|
access_token |
A UserInfo végpont meghívásához használt jogkivonat. |
token_type |
Mindig "Tulajdonos" |
expires_in |
A hozzáférési jogkivonat lejárati ideje másodpercben. |
scope |
A hozzáférési jogkivonaton megadott engedélyek. Mivel a UserInfo végpont a Microsoft Graphon található, az scope alkalmazásnak korábban megadott egyéb elemeket is tartalmazhat (például User.Read ). |
id_token |
Az alkalmazás által kért azonosító jogkivonat. Az azonosító jogkivonat használatával ellenőrizheti a felhasználó identitását, és munkamenetet indíthat a felhasználóval. Az azonosító jogkivonatokról és azok tartalmáról az azonosító jogkivonatok referenciájában talál további információt. |
state |
Ha egy állapotparaméter szerepel a kérelemben, akkor ugyanaz az érték jelenik meg a válaszban. Az alkalmazásnak ellenőriznie kell, hogy a kérés és a válasz állapotértékei azonosak-e. |
Figyelmeztetés
Ne kísérelje meg a jogkivonatok érvényesítését vagy olvasását a kódban a nem birtokolt API-k esetében, beleértve az ebben a példában szereplő jogkivonatokat is. A Microsoft-szolgáltatások jogkivonatai olyan speciális formátumot használhatnak, amely nem érvényesíthető JWT-ként, és titkosíthatók a fogyasztói (Microsoft-fiók) felhasználók számára is. Bár a jogkivonatok olvasása hasznos hibakeresési és tanulási eszköz, ne vegyen fel függőségeket a kódban, és ne feltételezze a nem ön által vezérelt API-khoz tartozó jogkivonatokat.
Hibaválasz
A hibaválaszok az átirányítási URI-nak is elküldhetők, hogy az alkalmazás megfelelően kezelje őket:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Paraméter | Leírás |
---|---|
error |
Hibakód-sztring, amellyel osztályozhatja a előforduló hibák típusait, és reagálhat a hibákra. |
error_description |
Egy adott hibaüzenet, amely segíthet azonosítani a hitelesítési hiba kiváltó okát. |
A lehetséges hibakódok és az ajánlott ügyfélválaszok leírásáért tekintse meg az engedélyezési végpont hibáinak hibakódjait.
Ha rendelkezik engedélyezési kóddal és azonosító jogkivonattal, bejelentkeztetheti a felhasználót, és hozzáférési jogkivonatokat kérhet le a nevükben. A felhasználó bejelentkezéséhez érvényesítenie kell az azonosító jogkivonatot az érvényesítési jogkivonatokban leírtak szerint. Hozzáférési jogkivonatok beszerzéséhez kövesse az OAuth-kódfolyamat dokumentációjában leírt lépéseket.
A UserInfo-végpont meghívása
Tekintse át a UserInfo dokumentációját , és tekintse át, hogyan hívhatja meg a UserInfo végpontot ezzel a jogkivonattal.
Bejelentkezési kérés küldése
Felhasználó kijelentkeztetéséhez hajtsa végre az alábbi műveletek mindegyikét:
- A felhasználó felhasználói ügynökének átirányítása a Microsoft Identitásplatform bejelentkezési URI-jára.
- Törölje az alkalmazás cookie-ját, vagy fejezheti be a felhasználó munkamenetét az alkalmazásban.
Ha egyik műveletet sem hajtja végre, előfordulhat, hogy a felhasználó továbbra is hitelesítve marad, és a rendszer nem kéri a bejelentkezést az alkalmazás következő használatakor.
A felhasználói ügynök átirányítása az end_session_endpoint
OpenID Connect konfigurációs dokumentumban látható módon. A end_session_endpoint
HTTP GET és a POST kéréseket is támogatja.
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
Paraméter | Feltétel | Leírás |
---|---|---|
post_logout_redirect_uri |
Ajánlott | A sikeres kijelentkezés után a felhasználó által átirányított URL-cím. Ha a paraméter nem szerepel a fájlban, a felhasználó egy általános üzenetet jelenít meg, amelyet a Microsoft Identitásplatform generál. Ennek az URL-címnek meg kell egyeznie az alkalmazáshoz regisztrált átirányítási URI-k egyikével az alkalmazásregisztrációs portálon. |
logout_hint |
Választható | Lehetővé teszi a kijelentkezést anélkül, hogy a felhasználót a fiók kiválasztására kéri. A használathoz logout_hint engedélyezze az login_hint opcionális jogcímet az ügyfélalkalmazásban, és használja az login_hint opcionális jogcím értékét paraméterként logout_hint . Ne használjon UPN-eket vagy telefonszámokat a logout_hint paraméter értékeként. |
Feljegyzés
A sikeres kijelentkezés után az aktív munkamenetek inaktívra lesznek állítva. Ha érvényes elsődleges frissítési jogkivonat (PRT) létezik a kijelentkezett felhasználó számára, és egy új bejelentkezést hajt végre, a rendszer megszakítja az egyszeri kijelentkezést, és a felhasználó megjelenik egy fiókválasztó kérésével. Ha a kiválasztott beállítás a PRT-ra hivatkozó csatlakoztatott fiók, a bejelentkezés automatikusan folytatódik, és nem kell új hitelesítő adatokat beszúrnia.
Egyszeri kijelentkezés
Amikor átirányítja a felhasználót egy end_session_endpoint
alkalmazásba, a Microsoft Identitásplatform befejezi az alkalmazás felhasználói munkamenetét. Előfordulhat azonban, hogy a felhasználó továbbra is bejelentkezik más alkalmazásokba, amelyek ugyanazt a Microsoft-fiókot használják hitelesítésre.
Ha egy felhasználó több, ebben a címtárban (más néven bérlőként) regisztrált webes vagy SPA-alkalmazásba jelentkezett be, az egyszeri kijelentkezés lehetővé teszi, hogy a felhasználó azonnal kijelentkezjen az összes alkalmazásból az egyik alkalmazásba való kijelentkezéssel.
Az egyszeri kijelentkezés Entra-alkalmazáshoz való engedélyezéséhez használja az OpenID Connect előtércsatorna-kijelentkeztetés funkcióját. Ez a funkció lehetővé teszi, hogy az alkalmazás értesítse a felhasználó által kijelentkezett más alkalmazásokat. Amikor a felhasználó kijelentkezik egy alkalmazásból, a Microsoft Identitásplatform HTTP GET kérést küld minden olyan alkalmazás előtérbeli bejelentkezési URL-címére, amelyre a felhasználó jelenleg bejelentkezett.
Ezeknek az alkalmazásoknak a következő két művelet végrehajtásával kell válaszolniuk erre a kérésre az egyszeri kijelentkezés sikerességéhez:
- Törölje a felhasználót azonosító munkameneteket.
- Az alkalmazásoknak válaszolniuk kell erre a kérésre a felhasználót azonosító munkamenet törlésével és a
200
válasz visszaadásával.
Mi az első csatorna bejelentkezési URL-címe?
Az előtérbeli csatorna bejelentkezési URL-címe az, ahol a web- vagy SPA-alkalmazás megkapja a kijelentkezés kérését az Entra hitelesítési kiszolgálótól, és egyszeri kijelentkezést hajt végre. Minden alkalmazáshoz tartozik egy előtércsatorna-bejelentkezési URL-cím.
Mikor kell beállítania az első csatorna bejelentkezési URL-címét?
Ha Ön vagy a fejlesztője úgy határozott, hogy egyszeri kijelentkezés szükséges egy alkalmazáshoz, be kell állítania az alkalmazás alkalmazásregisztrációjához az első csatorna bejelentkezési URL-címét. Miután beállította az alkalmazás alkalmazásregisztrációjához tartozó előtércsatorna-bejelentkezési URL-címet, a Microsoft Identitásplatform http GET kérést küld az alkalmazás előtérbeli bejelentkezési URL-címére, amikor a bejelentkezett felhasználó kijelentkezett egy másik alkalmazásból.
Egyszeri kijelentkezés beállítása az előtérbeli csatorna kijelentkeztetés funkciójával
Az előtérbeli csatorna kijelentkeztetés funkciójának alkalmazáskészlethez való használatához az alábbi két feladatot kell elvégeznie:
- A Microsoft Entra felügyeleti központban állítsa be az első csatorna bejelentkezési URL-címét az összes olyan alkalmazáshoz, amelyet egyidejűleg ki kell jelentkeznie. Minden alkalmazás általában saját dedikált előtércsatorna-bejelentkezési URL-címével rendelkezik.
- Szerkessze az alkalmazások kódját, hogy a Microsoft Identitásplatform által az előtérbeli csatorna kijelentkezési URL-címére küldött HTTP GET kérést figyelhessenek, és válaszoljanak erre a kérésre úgy, hogy törlik a felhasználót azonosító munkameneteket, és 200 választ adnak vissza.
Az első csatorna bejelentkezési URL-címének kiválasztása
Az első csatorna kijelentkezési URL-címének olyan URL-címnek kell lennie, amely képes HTTP GET-kérések fogadására és megválaszolására, és képesnek kell lennie törölni a felhasználót azonosító munkameneteket. Az előtérbeli csatorna bejelentkezési URL-címe például lehet, de nem korlátozódik a következőkre:
Következő lépések
- Tekintse át a UserInfo végpont dokumentációját.
- Jogcímértékek feltöltése egy jogkivonatban helyszíni rendszerekből származó adatokkal.
- Saját jogcímek belefoglalása jogkivonatba.