如何在.net核心API中同时实现JwtBearer和Google身份验证

问题描述

该方案位于我的Angular(客户端)应用程序中,我希望拥有自己的登录用户和密码表格以及Google身份验证。因此,用户可以选择使用我们的系统创建新的登录名或使用Google进行注册。对于我们自己的登录,我正在使用jwtBearer在后续请求中对用户进行验证/身份验证,但是如果用户已经使用google登录,则无法获得如何对其他请求进行身份验证/身份验证。在客户端(角度应用程序),我确实获得了google auth令牌和id令牌,但是在其他请求的标头中发送这些令牌(使用[Authorize]属性向控制器发送GET请求)未通过身份验证,因为它不是jwtbearer令牌,因为我已经在启动时设置了它。那么,如何使jwtbearer和google令牌验证都可以工作(两个令牌都可以接受)?

'''' services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.RequireHttpsMetadata = false;
            x.Savetoken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])),ValidateIssuer = false,ValidateAudience = false
            };
        });''''

如果我在标头中传递了JWT令牌但未使用Google令牌进行身份验证,则以下控制器方法进行身份验证

 ''''[HttpGet]
        [Authorize]
            public IEnumerable<string> Get()
            {
                return new string[] { "value1","value2" };
              }''''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)