NoPermissionsInAccessToken при доступе к GraphAPI в ASP. NET Core 3 - PullRequest
0 голосов
/ 24 марта 2020

Я использую ASP. NET Core Web API 3, поток кода авторизации для AzureAD v2 + PKCE.

Когда я получаю acess_token в моем контроллере и затем пытаюсь получить фотографию пользователя через DelegateAuthenticationProvider , Я получаю сообщение NoPermissionsInAccessToken: токен не содержит разрешений, или разрешения не могут быть поняты.

Кто-нибудь знает, как можно исправить?

Когда я декодирую access_token - существуют области действия .

Вот мой код.

var token = await HttpContext.GetTokenAsync("access_token");

var delegateAuthProvider = new DelegateAuthenticationProvider(
(requestMessage) => {
 requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer",token);
return Task.FromResult(0);});

var graphClient = new GraphServiceClient(graphAPIEndpoint, delegateAuthProvider);

var content = await graphClient .Me.Photo.Content.Request().GetAsync();

Редактировать - Код авторизации:

services.Configure<CookiePolicyOptions>(options =>
{
         options.CheckConsentNeeded = context => true;
         options.MinimumSameSitePolicy = SameSiteMode.None;
});

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => configuration.Bind("AzureAd", options));

services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
         options.Authority = options.Authority + "/v2.0/";
         options.ResponseType = OpenIdConnectResponseType.Code;
         options.ClientSecret = "secret";

         options.UsePkce = true;
         options.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost;

         options.Scope.Add("offline_access");
         options.Scope.Add("openid");
         options.Scope.Add("email");
         options.Scope.Add("profile");
         options.Scope.Add("user.read");

         var graphAPIScopeAll = "https://graph.microsoft.com/User.Read";
         options.Scope.Add(graphAPIScopeAll);

         options.SaveTokens = true;      
});

Заранее благодарим за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...