Я использую .net core 2 и добавляю AddAuthentication () от Google и пользовательский oauth 2 логин api
но обе эти аутентификации получили ошибку
Google говорит:
Исключение: состояние oauth отсутствует или недействительно.
Пользовательский логин скажет:
Несоответствующий URI перенаправления.
Когда я отключаю (комментирую) пользовательский интерфейс входа в систему из файла запуска
и использовать только API для входа в Google
все ок
services.AddAuthentication()
.AddOAuth("test", options =>
{
options.ClientId = "..Id...";
options.ClientSecret ="..Secret..";
options.CallbackPath = new PathString("/Account/ExternalLoginCallback");
options.AuthorizationEndpoint = "https://example.com/oauth/authorize";
options.TokenEndpoint = "https://example.com/oauth/token";
options.UserInformationEndpoint = "https://example.com/oauth/api/o";
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
options.ClaimActions.MapJsonKey(ClaimTypes.Email, "EmailAddress", ClaimValueTypes.Email);
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 = JObject.Parse(await response.Content.ReadAsStringAsync());
context.RunClaimActions(user);
}
};
})
.AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
Есть ли проблемы с моим кодом или какое-либо решение этой проблемы?