Получение ошибки при реализации oAuth2.0 в C # Console Self Hosted web API - PullRequest
0 голосов
/ 27 сентября 2018

Я получаю localhost (номер порта): // signin-google? State = blahblahblah ... после завершения процесса входа в Google.

Ниже приведена основная точка входа, откудаAPI запускается.

static void Main(string[] args)
        {
            using (var app = WebApp.Start<Startup>("http://localhost:8090"))
            {
                Process.Start("http://localhost:8090/api");
                Console.WriteLine("Close this window to stop this server");
                Console.ReadLine();

            }
        }

Ниже приведен код моего класса startup.cs

public void Configuration(IAppBuilder app)
        {
            var cookieOpts = new CookieAuthenticationOptions
            {
                LoginPath = new PathString("/account/login"),
                CookieSecure = CookieSecureOption.SameAsRequest
            };
            app.UseCookieAuthentication(cookieOpts);

            app.SetDefaultSignInAsAuthenticationType(cookieOpts.AuthenticationType);
            var googleOpts = new GoogleOAuth2AuthenticationOptions
            {
                ClientId = "XXXXXXXXX",
                ClientSecret = "XXXXXXXXX"
            };
            app.UseGoogleAuthentication(googleOpts);

            var config = new HttpConfiguration();
            config.Services.Replace(typeof(IHttpControllerTypeResolver), new ControllerResolver());
            config.MapHttpAttributeRoutes();

            app.UseWebApi(config);
        }

Контроллер, с которого выполняется страница входа в систему Google, -

 [RoutePrefix("account"), AllowAnonymous]
    public class AccountController : ApiController
    {
        [HttpGet, Route("login")]
        public IHttpActionResult Login(string returnUrl)
        {
            var authProps = new AuthenticationProperties
            {
                RedirectUri = returnUrl
            };
            Request.GetOwinContext().Authentication.Challenge(authProps, "Google");
            return StatusCode(HttpStatusCode.Unauthorized);
        }

        [HttpGet, Route("logoff")]
        public IHttpActionResult Logout()
        {
            Request.GetOwinContext().Authentication.SignOut();
            return Ok();
        }
    }

Контроллер, для которого я использую авторизацию Google:

 [RoutePrefix("api"), Authorize]
    public class DefaultController : ApiController
    {
        [HttpGet, Route("")]
        public IHttpActionResult Get()
        {
            return Ok("Hello, world!");
        }
    }

Все отлично работает 1. Когда приложение запускается, оно проверяет логин Google 2. Если нет, оно будет перенаправлено на страницу входа в Google 3. после входа в системув Google он перенаправляет обратно на localhost (номер порта): // signin-google? state = blahblahblah ..

Я думаю, он должен перенаправить на фактический API - в моем случае он должен иметь http://localhost:portnumer:/api

Ниже приведен файл захвата трассировки для быстрого ознакомления - Trace-log-is-here

Заранее спасибо ..:)

Исходный код - https://github.com/BDChaudhari90/OAuthGoogleSelfHost

...