Получение ошибки grant_type с помощью oauth2 и blazor - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь заставить приложение Blazor аутентифицироваться против azure DevOps (я мог бы сделать это более прямым способом, но я хочу сделать это с помощью встроенной аутентификации.) Следующий код работает до тех пор, пока я не приму разрешения. Когда он пытается перезвонить в мое приложение, я получаю следующую ошибку:

Исключение:

Ошибка конечной точки маркера OAuth: Статус: BadRequest; Заголовки: Кэш -Control: no-cache, no-store, must-revalidate «Ошибка»: «unsupported_grant_type», «ErrorDescription»: «grant_type должен быть типом ietf jwt-bearer, refresh_token или client_credentials»}

Используется. Net Core 3.1 и серверная часть Blazor. Вот код в моих ConfigureServices :

        services.AddAuthenticationCore();
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = "OAuth";
        })
         .AddCookie()
         .AddOAuth("DevOps", options =>
         {
             options.ClientId = Configuration["ClientAppId"];
             options.ClientSecret = Configuration["ClientSecret"];
             options.CallbackPath = new PathString("/oauth/Callback");


             options.AuthorizationEndpoint = Configuration["AuthUrl"];
             options.TokenEndpoint = Configuration["TokenUrl"];
             options.UserInformationEndpoint = Configuration["ProfileUrl"];
             options.Scope.Add(Configuration["Scope"]);

             options.SaveTokens = true;



             options.Events = new OAuthEvents
             {
                 OnCreatingTicket = async context =>
                 {
                     var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
                     request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                     request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);

                     var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
                     response.EnsureSuccessStatusCode();

                     var user = JsonDocument.Parse(await response.Content.ReadAsStringAsync());

                     context.RunClaimActions(user.RootElement);
                 }


             };
         });'''

Я создал обе базы c oauth / страницу обратного вызова и оставил ее безрезультатно. Любая помощь будет признательна!

...