Я пытаюсь заставить приложение 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 / страницу обратного вызова и оставил ее безрезультатно. Любая помощь будет признательна!