微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在.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 举报,一经查实,本站将立刻删除。