.net core Пользовательский oauth2 логин и гугл api вместе получают ошибку - PullRequest
0 голосов
/ 04 сентября 2018

Я использую .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"];
            });

Есть ли проблемы с моим кодом или какое-либо решение этой проблемы?

1 Ответ

0 голосов
/ 05 сентября 2018

в моем случае проблема была в CallbackPath и схеме и я проверяю AuthorizationEndpoint, TokenEndpoint, UserInformationEndpoint с почтальоном и найдите некоторые проблемы, исправьте их и все в порядке.

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