Megosztás a következőn keresztül:


Webes API-kat hívó webalkalmazás: Jogkivonat beszerzése az alkalmazáshoz

Elkészítette az ügyfélalkalmazás-objektumot. Most egy jogkivonat beszerzésére használva meghívhat egy webes API-t. A ASP.NET vagy ASP.NET Core-ban a webes API meghívása a vezérlőben történik:

  • Jogkivonat beszerzése a webes API-hoz a tokengyorsítótár használatával. A jogkivonat beszerzéséhez hívja meg a Microsoft Authentication Library (MSAL) AcquireTokenSilent metódust (vagy ennek megfelelőt a Microsoft.Identity.Web-ben).
  • Hívja meg a védett API-t, és adja át a hozzáférési jogkivonatot paraméterként.

A Microsoft.Identity.Web bővítménymetelyeket ad hozzá, amelyek kényelmi szolgáltatásokat nyújtanak a Microsoft Graph vagy egy alsóbb rétegbeli webes API meghívásához. Ezeket a módszereket részletesen ismertetjük a webes API-kat hívó webalkalmazásban : API meghívása. Ezekkel a segítő módszerekkel nem kell manuálisan beszereznie egy jogkivonatot.

Ha azonban manuálisan szeretne beszerezni egy jogkivonatot, az alábbi kód a Microsoft.Identity.Web otthoni vezérlőben való használatára mutat példát. Meghívja a Microsoft Graphot a REST API használatával (a Microsoft Graph SDK helyett). Általában nem kell jogkivonatot lekérnie, létre kell készítenie egy engedélyezési fejlécet, amelyet hozzáad a kéréshez. Az engedélyezési fejléc lekéréséhez függőséginjektálással injektálja a IAuthorizationHeaderProvider szolgáltatást a vezérlő konstruktorában (vagy az oldalkonstruktorban, ha Blazort használ), és a vezérlőműveletekben használja. Ez az interfész olyan metódusokkal rendelkezik, amelyek a protokollt (Bearer, Pop, ...) és egy jogkivonatot tartalmazó sztringet hoznak létre. Ha le szeretne kapni egy engedélyezési fejlécet, amely meghív egy API-t a felhasználó nevében, használja a (CreateAuthorizationHeaderForUserAsync) parancsot. Ha egy engedélyezési fejlécet szeretne lekérni egy alsóbb rétegbeli API-nak az alkalmazás nevében történő meghívásához, használjon (CreateAuthorizationHeaderForAppAsync) egy démonforgatókönyvet.

A vezérlő metódusait egy [Authorize] attribútum védi, amely biztosítja, hogy csak hitelesített felhasználók használják a webalkalmazást.

[Authorize]
public class HomeController : Controller
{
 readonly IAuthorizationHeaderProvider authorizationHeaderProvider;

 public HomeController(IAuthorizationHeaderProvider authorizationHeaderProvider)
 {
  this.authorizationHeaderProvider = authorizationHeaderProvider;
 }

 // Code for the controller actions (see code below)

}

ASP.NET Core függőséginjektálással teszi IAuthorizationHeaderProvider elérhetővé.

Az alábbi egyszerűsített kód a HomeControllerMicrosoft Graph meghívására szolgáló jogkivonatot kap:

[AuthorizeForScopes(Scopes = new[] { "user.read" })]
public async Task<IActionResult> Profile()
{
 // Acquire the access token.
 string[] scopes = new string[]{"user.read"};
 string accessToken = await authorizationHeaderProvider.CreateAuthorizationHeaderForUserAsync(scopes);

 // Use the access token to call a protected web API.
 HttpClient client = new HttpClient();
 client.DefaultRequestHeaders.Add("Authorization", accessToken);
 string json = await client.GetStringAsync(url);
}

Az ehhez a forgatókönyvhöz szükséges kód jobb megértéséhez tekintse meg az ms-identity-aspnetcore-webapp-tutorial oktatóanyag 2. fázisának (2-1-Web app Calls Microsoft Graph) lépését.

A AuthorizeForScopes vezérlőművelet (vagy Razor-sablon használata esetén a Razor-oldal) tetején található attribútumot a Microsoft.Identity.Web biztosítja. Biztosítja, hogy a felhasználót szükség esetén és fokozatosan hozzájárulást kérnek.

Más összetett változatok is léteznek, például:

  • Több API meghívása.
  • Növekményes hozzájárulás és feltételes hozzáférés feldolgozása.

Ezeket a speciális lépéseket a 3-WebApp-multi-API-k oktatóanyagának 3. fejezete ismerteti.

Következő lépések

Lépjen tovább a következő cikkre ebben a forgatókönyvben: Webes API meghívása.