API-k hozzáférésének engedélyezése a Microsoft Authentication Library használatával

Befejeződött

Most már bejelentkezhet a cég felhasználóival a webalkalmazásba. A következő lépésben olyan információkat szeretne megjeleníteni, mint a beosztásuk, a munkahelyi e-mail-címük és így tovább az alkalmazottak profiljából az oldalon. Úgy találja, hogy a Microsoft Graph API hozzáférést biztosít a felhasználóval kapcsolatos adatokhoz.

Ebben a leckében megtudhatja, hogyan segíthet az MSAL a Microsoft-szolgáltatások, például a Microsoft Graph API-hoz való hozzáférés engedélyezésében.

API-engedélyek és hatókörök

A Microsoft Entra ID által védett webszolgáltatások olyan engedélyeket határoznak meg, amelyek hozzáférést biztosítanak a szolgáltatás által elérhető API-funkciókhoz és adatokhoz. Az alkalmazások kérhetik ezeket az engedélyeket a felhasználóktól és a rendszergazdáktól, akiknek jóvá kell hagyniuk a kérést, mielőtt az alkalmazás hozzáférhet az adatokhoz, vagy eljárhatnak egy felhasználó nevében. A Microsoft Graph például többek között az alábbi feladatok elvégzésére vonatkozó engedélyekkel rendelkezik:

  • Felhasználó naptárának olvasása
  • Írás a felhasználó naptárában
  • E-mail küldése felhasználóként

A felhasználók és a rendszergazdák szabályozhatják és megismerhetik, hogy az alkalmazás milyen adatokhoz férhet hozzá. Ahhoz, hogy az alkalmazás hozzáférhessen a Microsoft által védett API-hoz, meg kell adnia az alkalmazás engedélyeit a műveletek végrehajtásához.

A Microsoft Entra ID kétféle engedélyt támogat: delegált engedélyeket és alkalmazásengedélyeket.

  • A delegált engedélyeket olyan alkalmazások használják, amelyekben bejelentkezett felhasználó található. Ezekben az alkalmazásokban a felhasználó vagy egy rendszergazda elfogadja az alkalmazás által kért engedélyeket. Az alkalmazás delegált engedéllyel rendelkezik arra, hogy bejelentkezett felhasználóként működjön a cél API-ra irányuló hívások során. Bizonyos magas jogosultságú engedélyek rendszergazdai hozzájárulást igényelnek.

  • Az alkalmazásengedélyeket olyan alkalmazások használják, amelyek bejelentkezett felhasználó nélkül futnak, például háttérszolgáltatásként vagy démonként futó alkalmazások. Az alkalmazásengedélyekhez kizárólag a rendszergazdák adhatnak hozzájárulást.

Ezeket az API-engedélyeket az Azure Portalon rendelheti hozzá az alkalmazásregisztrációhoz.

Hatókörök

A Microsoft Entra ID implementálja az OAuth 2.0 engedélyezési protokollt, amelyen keresztül egy alkalmazás hozzáférhet a webre üzemeltetett erőforrásokhoz egy felhasználó nevében.

Az OAuth 2.0-ban az ilyen típusú engedélykészleteket hatóköröknek nevezzük. Amikor engedélyezési kérelmet küld a Microsoft Entra ID-nak, az alkalmazás a kérelem scope lekérdezési paraméterében megadott engedély megadásával kéri le a szükséges engedélyeket. A hatókör értéke https://graph.microsoft.com/Calendars.Read például arra szolgál, hogy engedélyt kérjen a felhasználók naptárainak olvasására a Microsoft Graphban.

Hozzáférési jogkivonatok beszerzése az MSAL használatával

A hozzáférési jogkivonatok lehetővé teszik az ügyfélalkalmazások számára a Microsoft Entra ID által védett webes API-k biztonságos meghívását. A hozzáférési jogkivonatot többféleképpen is beszerezheti a Microsoft Authentication Library (MSAL) használatával. A jogkivonatok beszerzéséhez használt módszer általában attól függ, hogy az alkalmazás nyilvános ügyfélalkalmazás-e, például asztali vagy mobilalkalmazás, vagy bizalmas ügyfélalkalmazás, például webalkalmazás, webes API vagy démonalkalmazás.

Az MSAL több jogkivonat-beszerzési módszeréhez paraméterre van szükség scopes , amely a kívánt engedélyeket és a kért erőforrásokat deklaráló sztringek listája.

Az MSAL gyorsítótárazza a jogkivonatot a beszerzése után. Az OpenID Connect engedélyezési kódfolyamatot használó webalkalmazások esetében a vezérlőkben javasolt minta a következő:

  • Először próbálja meg csendben lekérni a jogkivonatot a gyorsítótárból, mielőtt más módon próbálná meg beszerezni a jogkivonatot. Az alábbi kód egy részlet a metódusnak az acquireTokenSilently osztályban való AuthHelper megvalósításából.

    final SilentParameters parameters = SilentParameters
                                            .builder(Collections.singleton(Config.SCOPES), context.getAccount())
                                            .build();
    
    final ConfidentialClientApplication client = getConfidentialClientInstance();
    
    client.tokenCache().deserialize(context.getTokenCache());
    
    final IAuthenticationResult result = client.acquireTokenSilently(parameters).get();
    
  • Ha nincs jogkivonat a gyorsítótárban, és a csendes jogkivonat-kérés nem tud jogkivonatot lekérni, a jogkivonatot az engedélyezési kód folyamatával szerezheti be:

    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                        .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                        .build();
    
    final IAuthenticationResult result = app.acquireToken(authParams).get();
    

Az MSAL képes frissíteni egy jogkivonatot is, amikor közel van a lejárathoz (mivel a jogkivonat gyorsítótára is tartalmaz frissítési jogkivonatot).

Hitelesítési eredmények

Amikor az ügyfél hozzáférési jogkivonatot kér, a Microsoft Entra ID egy olyan hitelesítési eredményt is ad vissza, amely metaadatokat tartalmaz a hozzáférési jogkivonatról. Ezek az adatok lehetővé teszik az alkalmazás számára a hozzáférési jogkivonatok intelligens gyorsítótárazását anélkül, hogy magát a hozzáférési jogkivonatot kellene elemeznie. Az AuthenticationResult MSAL a következő közzétetteket adja vissza:

  • A webes API hozzáférési jogkivonata.
  • A felhasználó azonosító jogkivonata (JWT).
  • A jogkivonat lejárata, amely a jogkivonat lejárati dátumát/időpontját jelzi.
  • A bérlőazonosító tartalmazza azt a bérlőt, amelyben a felhasználó megtalálható.
  • Azok a hatókörök, amelyekhez a jogkivonatot kiadták.
  • A felhasználó egyedi azonosítója.

A Microsoft Graph bemutatása

A Microsoft Graph API egyetlen végpontot kínál, https://graph.microsoft.comamely hozzáférést biztosít a Gazdag, emberközpontú adatokhoz és elemzésekhez a Microsoft-felhőben. REST API-k vagy SDK-k használatával elérheti a végpontot, és olyan alkalmazásokat hozhat létre, amelyek támogatják a Microsoft 365-forgatókönyveket, beleértve a termelékenységet, az együttműködést, az oktatást, a személyeket és a munkahelyi intelligenciát és még sok mást. A Microsoft Graph emellett a felhasználói és eszközidentitást kezelő szolgáltatások hatékony készletét is tartalmazza.

Egy bejelentkezett felhasználó tulajdonságait például a végpont elérésével olvashatja https://graph.microsoft.com/v1.0/me el.