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

时间:2020-10-27 03:51:32

标签: .net-core oauth-2.0 google-oauth jwt-auth core-api

该方案位于我的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" };
              }''''

0 个答案:

没有答案