仅当使用需要用户交互的身份验证代码流时,您才能获取用户信息。
我注意到您正在使用v1.0端点,您可以将api uri放在resource参数中。 v1.0端点不需要范围参数。登录后,您可以静默获取访问令牌。
这是代码段供您参考。
// Because we signed-in already in the WebApp,the userObjectId is know
string userObjectID = (User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier"))?.Value;
// Using ADAL.Net,get a bearer token to access the TodoListService
AuthenticationContext authContext = new AuthenticationContext(AzureAdOptions.Settings.Authority,new NaiveSessionCache(userObjectID,HttpContext.Session));
ClientCredential credential = new ClientCredential(AzureAdOptions.Settings.ClientId,AzureAdOptions.Settings.ClientSecret);
result = await authContext.AcquireTokenSilentAsync(AzureAdOptions.Settings.TodoListResourceId,credential,new UserIdentifier(userObjectID,UserIdentifierType.UniqueId));
// Retrieve the user's To Do List.
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get,AzureAdOptions.Settings.TodoListBaseAddress + "/api/todolist");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer",result.AccessToken);
HttpResponseMessage response = await client.SendAsync(request);
参考:
active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore
本文链接:https://www.f2er.com/3160951.html