Alkalmazástípusok a Microsoft Identitásplatformhoz

A Microsoft identitásplatformja számos modern alkalmazásarchitektúrához támogatja a hitelesítést, amelyek mindegyike az OAuth 2.0 vagy az OpenID Connect iparági szabványoknak megfelelő protokollokon alapul. Ez a cikk azokat az alkalmazástípusokat ismerteti, amelyeket a Microsoft identitásplatform használatával hozhat létre, függetlenül az előnyben részesített nyelvtől vagy platformtól. Az információk célja, hogy segítsenek megérteni a magas szintű forgatókönyveket, mielőtt elkezdené használni a kódot az alkalmazásforgatókönyvekben.

Az alapok

Regisztrálnia kell minden olyan alkalmazást, amely a Microsoft identitásplatformot használja az Azure Portal alkalmazásregisztrációiban. Az alkalmazásregisztrációs folyamat összegyűjti és hozzárendeli az alábbi értékeket az alkalmazáshoz:

  • Az alkalmazást egyedileg azonosító alkalmazásazonosító (ügyfél)
  • Átirányítási URI, amellyel visszaadhatja a válaszokat az alkalmazásnak
  • Néhány más forgatókönyv-specifikus érték, például a támogatott fióktípusok

További információ az alkalmazások regisztrálásáról.

Az alkalmazás regisztrálása után az alkalmazás a végpontnak küldött kérésekkel kommunikál a Microsoft identitásplatformjával. Nyílt forráskódú keretrendszereket és kódtárakat biztosítunk, amelyek kezelik a kérések részleteit. A hitelesítési logikát saját maga is implementálhatja, ha kéréseket hoz létre az alábbi végpontokhoz:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

Egyoldalas alkalmazások (JavaScript)

Számos modern alkalmazás rendelkezik egyoldalas alkalmazáselőtérrel, amely elsősorban JavaScript nyelven íródott, gyakran olyan keretrendszerrel, mint az Angular, a React vagy a Vue. A Microsoft identitásplatformja az OpenID Connect protokoll használatával támogatja ezeket az alkalmazásokat a hitelesítéshez, vagy az OAuth 2.0 implicit engedélyezési folyamat vagy a legutóbbi OAuth 2.0 engedélyezési kód + PKCE-folyamat használatával az engedélyezéshez (lásd alább).

Az alábbi folyamatábra bemutatja az OAuth 2.0 engedélyezési kód megadását (a PKCE kihagyásával kapcsolatos részletekkel), ahol az alkalmazás kódot kap a Microsoft identitásplatform authorize végpontjától, és beváltja egy hozzáférési jogkivonatra és egy frissítési jogkivonatra webhelyközi kérések használatával. A hozzáférési jogkivonat 24 óránként lejár, és az alkalmazásnak egy másik kódot kell kérnie a frissítési jogkivonat használatával. A hozzáférési jogkivonaton id_token kívül az ügyfélalkalmazásba bejelentkezett felhasználót jelképező felhasználót általában ugyanazzal a folyamattal és/vagy egy külön OpenID Connect-kéréssel is lekérik (itt nem látható).

Diagram showing the OAuth 2 authorization code flow between a single-page app and the security token service endpoint.

A forgatókönyv működés közbeni megtekintéséhez tekintse meg a következő oktatóanyagot: Felhasználók bejelentkezése és a Microsoft Graph API meghívása JavaScript SPA-ból hitelesítési kódfolyamat használatával.

Engedélyezési kódfolyamat és implicit folyamat

Az OAuth 2.0 előzményeinek többségében az implicit folyamat volt az ajánlott módszer egyoldalas alkalmazások készítésére. A harmadik féltől származó cookie-k eltávolításával és az implicit folyamattal kapcsolatos biztonsági problémákra nagyobb figyelmet fordítva áttértünk az egyoldalas alkalmazások engedélyezési kódfolyamatára.

Az alkalmazás kompatibilitásának biztosítása érdekében a Safariban és más adatvédett böngészőkben a továbbiakban nem javasoljuk az implicit folyamat használatát, hanem az engedélyezési kódfolyamat használatát.

Webalkalmazások

A böngészőn keresztül elérhető webalkalmazások (.NET, PHP, Java, Ruby, Python, Node) esetében használhatja az OpenID Connectet a felhasználói bejelentkezéshez. Az OpenID Connectben a webalkalmazás egy azonosító jogkivonatot kap. Az azonosító jogkivonat egy biztonsági jogkivonat, amely ellenőrzi a felhasználó identitását, és jogcímek formájában nyújt információkat a felhasználóról:

// Partial raw ID token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cd...

// Partial content of a decoded ID token
{
    "name": "John Smith",
    "email": "john.smith@gmail.com",
    "oid": "d9674823-dffc-4e3f-a6eb-62fe4bd48a58"
    ...
}

A Microsoft identitásplatformjában használt különböző jogkivonatok további részletei a hozzáférési jogkivonatok referenciájában és id_token referenciaanyagában találhatók

A webkiszolgáló-alkalmazásokban a bejelentkezési hitelesítési folyamat az alábbi magas szintű lépéseket végzi el:

Shows the web app authentication flow

A felhasználó identitásának ellenőrzéséhez ellenőrizze az azonosító jogkivonatot a Microsoft identitásplatformjáról kapott nyilvános aláíró kulccsal. Be van állítva egy munkamenet-cookie, amellyel azonosíthatja a felhasználót a későbbi oldalkérések során.

A forgatókönyv működés közbeni megtekintéséhez próbálja ki a felhasználói forgatókönyvet bejelentkező kódmintákat a webalkalmazásban.

Az egyszerű bejelentkezés mellett előfordulhat, hogy egy webkiszolgáló alkalmazásnak egy másik webszolgáltatáshoz, például egy REST API-hoz kell hozzáférnie. Ebben az esetben a webkiszolgáló-alkalmazás az OAuth 2.0 engedélyezési kódfolyamat használatával egy egyesített OpenID Connect- és OAuth 2.0-folyamatot használ. A forgatókönyvvel kapcsolatos további információkért olvassa el a webalkalmazások és a webes API-k használatának első lépéseit.

Webes API-k

A Microsoft identitásplatformjának használatával biztonságossá teheti a webszolgáltatásokat, például az alkalmazás RESTful webes API-ját. A webes API-k számos platformon és nyelven implementálhatók. Http-eseményindítókkal is implementálhatók az Azure Functionsben. Az azonosító jogkivonatok és munkamenet-cookie-k helyett a webes API OAuth 2.0 hozzáférési jogkivonatot használ az adatok védelméhez és a bejövő kérések hitelesítéséhez. A webes API hívója hozzáfűz egy hozzáférési jogkivonatot egy HTTP-kérés engedélyezési fejlécéhez, az alábbi módon:

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...
Accept: application/json
...

A webes API a hozzáférési jogkivonatot használja az API-hívó identitásának ellenőrzésére és a hívó adatainak kinyerésére a hozzáférési jogkivonatban kódolt jogcímekből. A Microsoft identitásplatformon használt különböző jogkivonatok további részletei a hozzáférési jogkivonatok referenciájában és id_token referenciaanyagában találhatók.

A webes API-k lehetővé tehetik a felhasználóknak, hogy engedélyek, más néven hatókörök felfedésével engedélyezhessenek vagy leiratkozhatnak bizonyos funkciókról vagy adatokról. Ahhoz, hogy egy hívó alkalmazás engedélyt szerezzen egy hatókörhöz, a felhasználónak hozzá kell adnia a hatókört egy folyamat során. A Microsoft identitásplatform engedélyt kér a felhasználótól, majd rögzíti az engedélyeket a webes API által kapott összes hozzáférési jogkivonatban. A webes API ellenőrzi az egyes hívásokhoz kapott hozzáférési jogkivonatokat, és engedélyezési ellenőrzéseket végez.

A webes API-k bármilyen típusú alkalmazásból fogadhatnak hozzáférési jogkivonatokat, beleértve a webkiszolgáló-alkalmazásokat, az asztali és mobilalkalmazásokat, az egyoldalas alkalmazásokat, a kiszolgálóoldali démonokat és még más webes API-kat is. A webes API magas szintű folyamata a következőképpen néz ki:

Shows the web API authentication flow

Ha meg szeretné tudni, hogyan védheti meg a webes API-t OAuth2 hozzáférési jogkivonatokkal, tekintse meg a webes API-kódmintákat a védett webes API-forgatókönyvben.

A webes API-knak sok esetben kimenő kéréseket is kell küldenie a Microsoft identitásplatform által biztosított egyéb lefelé irányuló webes API-k felé. Ehhez a webes API-k kihasználhatják az on-behalf-of folyamatot, amely lehetővé teszi a webes API számára, hogy egy bejövő hozzáférési jogkivonatot cseréljen egy másik hozzáférési jogkivonatra, amelyet a kimenő kérésekben használhat. További információ: Microsoft Identity platform és OAuth 2.0 On-Behalf-Of flow.

Mobil- és natív alkalmazások

Az eszközre telepített alkalmazásoknak, például a mobil- és asztali alkalmazásoknak gyakran olyan háttérszolgáltatásokhoz vagy webes API-khoz kell hozzáférnie, amelyek adatokat tárolnak, és egy felhasználó nevében hajtanak végre funkciókat. Ezek az alkalmazások az OAuth 2.0 engedélyezési kódfolyamatával adhatnak hozzá bejelentkezést és engedélyezést a háttérszolgáltatásokhoz.

Ebben a folyamatban az alkalmazás egy engedélyezési kódot kap a Microsoft identitásplatformjától, amikor a felhasználó bejelentkezik. Az engedélyezési kód azt jelzi, hogy az alkalmazás jogosult-e a háttérszolgáltatások meghívására a bejelentkezett felhasználó nevében. Az alkalmazás a háttérben kicserélheti az engedélyezési kódot egy OAuth 2.0 hozzáférési jogkivonatra és egy frissítési jogkivonatra. Az alkalmazás a hozzáférési jogkivonat használatával hitelesítheti magát a webes API-kban a HTTP-kérésekben, és a frissítési jogkivonattal új hozzáférési jogkivonatokat szerezhet be a régebbi hozzáférési jogkivonatok lejáratakor.

Shows the native app authentication flow

Megjegyzés

Ha az alkalmazás az alapértelmezett rendszernézetet használja, ellenőrizze a "Bejelentkezés megerősítése" funkcióval és az AADSTS50199 hibakóddal kapcsolatos információkat az Azure AD hitelesítési és engedélyezési hibakódjaiban.

Démonok és kiszolgálóoldali alkalmazások

A hosszú ideig futó folyamatokkal rendelkező vagy a felhasználóval interakció nélkül működő alkalmazásoknak is szükségük van a biztonságos erőforrások, például webes API-k elérésére. Ezek az alkalmazások az OAuth 2.0 ügyfél hitelesítő adatainak folyamatával hitelesíthetik és lekérhetik a jogkivonatokat az alkalmazás identitásával, nem pedig a felhasználó delegált identitásával. Az alkalmazás identitását ügyfélkód vagy tanúsítvány használatával igazolhatja. További információ: .NET Core démonkonzol-alkalmazás a Microsoft identitásplatformjával.

Ebben a folyamatban az alkalmazás közvetlenül a végponttal lép kapcsolatba a /token hozzáférés megszerzéséhez:

Shows the daemon app authentication flow

Démonalkalmazás létrehozásához tekintse meg az ügyfél hitelesítő adatainak dokumentációját, vagy próbáljon ki egy .NET-mintaalkalmazást.

Következő lépések

Most, hogy már ismeri a Microsoft identitásplatform által támogatott alkalmazástípusokat, tudjon meg többet az OAuth 2.0-ról és az OpenID Connectről , hogy megismerje a különböző forgatókönyvek által használt protokollösszetevőket.