。net core 3.1 Google SSO回调URL未命中

问题描述 投票:0回答:1

我点击了一个链接以实现google SSO github.com/aspnet/Security/issues/1370。但是即使成功登录后,我也要重定向认证属性中提到的uri。它不带回调URL。有人可以帮忙吗?我们的应用程序是.net core 3.1IdentityServer4.希望signinoauth2 API在Google登录后会被点击,但是那没有发生。 PFB我的代码供参考,

        [HttpGet]
        [Authorize(AuthenticationSchemes = GoogleDefaults.AuthenticationScheme)]
        [Route("/Feed")]
        public ActionResult Feed() 
        {
            return Ok();
        }
        [HttpGet]
        [Route("/signin")]
        public ActionResult SignIn()
        {
            var authProperties = new AuthenticationProperties
            {
                RedirectUri = "/"
            };
            return new ChallengeResult(GoogleDefaults.AuthenticationScheme, authProperties);
        }
        [HttpPost]
        [Route("/signinoauth2")]
        public ActionResult<LoginResponse> signinoauth2Async([FromForm]object data)
        {

            return Ok();
        }

Startup.cs

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authentication.Google;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;


services.AddAuthentication(options =>
                    {
                        options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                        options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
                    })
                      .AddCookie(o => {
                          o.LoginPath = "/signin";
                          o.LogoutPath = "/signout";
                          o.ExpireTimeSpan = TimeSpan.FromDays(7);
                      })
                      .AddGoogle(o => {
                          o.ClientId = "***";
                          o.ClientSecret = "**";
                          o.SaveTokens = true;
                          o.CallbackPath = "/signinoauth2";
                      });

services.AddMvc(config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                                .RequireAuthenticatedUser()
                                .AddAuthenticationSchemes(GoogleDefaults.AuthenticationScheme)
                                .Build();
                config.Filters.Add(new AuthorizeFilter(policy));
            }).AddNewtonsoftJson();
identityserver4 google-login .net-core-3.1
1个回答
0
投票

听起来您实际上没有得到正确的身份验证,如果您是应用程序,则该应用程序将重定向到我认为其控制器具有[Authorize]属性的登录页面。您是否可能忘记了将自己添加为身份服务器正在引用的数据库中的用户?

© www.soinside.com 2019 - 2024. All rights reserved.