Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Munkaerő-bérlők (további információ)
Miután rendelkezik egy jogkivonattal, meghívhat egy védett webes API-t. Általában a webes API vezérlőjétől vagy lapjaitól hívhatja meg az alsóbb rétegbeli API-kat.
Vezérlőkód
A Microsoft.Identity.Web használata esetén három használati forgatókönyve van:
- 1. lehetőség: A Microsoft Graph meghívása az SDK-val
- 2. lehetőség: Alsóbb rétegbeli webes API meghívása a segédosztálysal
- 3. lehetőség: Alsóbb rétegbeli webes API meghívása segédosztály nélkül
1. lehetőség: A Microsoft Graph meghívása az SDK-val
Ebben a forgatókönyvben hozzáadta a Microsoft.Identity.Web.GraphServiceClient NuGet-csomagot, és a .AddMicrosoftGraph() elemet belehelyezte a Startup.cs fájlba úgy, ahogyan azt a Kód konfigurációja megadta. Ezután közvetlenül beillesztheti a GraphServiceClient elemet a vezérlőbe vagy az oldal konstruktorába, hogy azt a műveletekhez használhassa. Az alábbi Razor-példalap a bejelentkezett felhasználó fényképét jeleníti meg.
[Authorize]
[AuthorizeForScopes(Scopes = new[] { "user.read" })]
public class IndexModel : PageModel
{
private readonly GraphServiceClient _graphServiceClient;
public IndexModel(GraphServiceClient graphServiceClient)
{
_graphServiceClient = graphServiceClient;
}
public async Task OnGet()
{
var user = await _graphServiceClient.Me.GetAsync();
try
{
using (var photoStream = await _graphServiceClient.Me.Photo.Content.GetAsync())
{
byte[] photoByte = ((MemoryStream)photoStream).ToArray();
ViewData["photo"] = Convert.ToBase64String(photoByte);
}
ViewData["name"] = user.DisplayName;
}
catch (Exception)
{
ViewData["photo"] = null;
}
}
}
2. lehetőség: Alsóbb rétegbeli webes API meghívása a segédosztálysal
Ebben a forgatókönyvben hozzáadta a(z) .AddDownstreamApi() elemet a Startup.cs-hez, ahogyan a Kód konfigurációja megadta, és közvetlenül injektálhat egy IDownstreamWebApi szolgáltatást a vezérlő vagy a lap konstruktorába, és használhatja azt a műveletek során.
[Authorize]
[AuthorizeForScopes(ScopeKeySection = "TodoList:Scopes")]
public class TodoListController : Controller
{
private IDownstreamWebApi _downstreamWebApi;
private const string ServiceName = "TodoList";
public TodoListController(IDownstreamWebApi downstreamWebApi)
{
_downstreamWebApi = downstreamWebApi;
}
public async Task<ActionResult> Details(int id)
{
var value = await _downstreamWebApi.CallApiForUserAsync(
ServiceName,
options =>
{
options.RelativePath = $"me";
});
return View(value);
}
A CallApiForUserAsync metódus olyan erősen gépelt általános felülbírálásokkal is rendelkezik, amelyek lehetővé teszik az objektumok közvetlen fogadását. A következő metódus például kapott egy példányt Todo , amely a webes API által visszaadott JSON erősen gépelt ábrázolása.
// GET: TodoList/Details/5
public async Task<ActionResult> Details(int id)
{
var value = await _downstreamWebApi.CallApiForUserAsync<object, Todo>(
ServiceName,
null,
options =>
{
options.HttpMethod = HttpMethod.Get;
options.RelativePath = $"api/todolist/{id}";
});
return View(value);
}
3. lehetőség: Alsóbb rétegbeli webes API meghívása segédosztály nélkül
Ha úgy döntött, hogy lekér egy engedélyezési fejlécet az IAuthorizationHeaderProvider interfész használatával, a következő kód folytatja a webes API-kat hívó webes API-kban látható példakódot: Jogkivonat beszerzése az alkalmazáshoz. A kód meghívása az API-vezérlők műveleteiben történik. Egy todolist nevű alsóbb rétegbeli API-t hív meg.
A jogkivonat beszerzése után használja tulajdonosi jogkivonatként az alsóbb rétegbeli API meghívásához.
private async Task CallTodoListService(string accessToken)
{
// After the token has been returned by Microsoft.Identity.Web, add it to the HTTP authorization header before making the call to access the todolist service.
authorizationHeader = await authorizationHeaderProvider.GetAuthorizationHeaderForUserAsync(scopes);
_httpClient.DefaultRequestHeaders["Authorization"] = authorizationHeader;
// Call the todolist service.
HttpResponseMessage response = await _httpClient.GetAsync(TodoListBaseAddress + "/api/todolist");
// ...
}
Következő lépések
Ismerjen meg többet egy ASP.NET Core webalkalmazás létrehozásával, amely bejelentkezteti a felhasználókat az alábbi többrészes oktatóanyag-sorozatban.
A Microsoft Identitásplatform webes API-mintáinak felfedezése