BearerOption.SaveToken属性用于什么?

HLS*_*HLS 3 c# asp.net-core-2.0

在ASPNET核心2中的JwtAuthentication的配置中使用了哪些bearerOption.SaveToken属性?

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                    .AddJwtBearer(bearer =>
                    {
                        bearer.TokenValidationParameters.IssuerSigningKey = signingKey as SecurityKey;
                        bearer.TokenValidationParameters.ValidIssuer = Configuration["Jwt:Issuer"];
                        bearer.TokenValidationParameters.ValidAudience = Configuration["Jwt:Audience"];
                        bearer.TokenValidationParameters.ClockSkew = TimeSpan.Zero;
                        bearer.TokenValidationParameters.ValidateLifetime = true;
                        bearer.TokenValidationParameters.ValidateAudience = true;
                        bearer.TokenValidationParameters.ValidateIssuer = true;
                        bearer.TokenValidationParameters.ValidateIssuerSigningKey = true;
                        bearer.TokenValidationParameters.RequireExpirationTime = true;
                        bearer.TokenValidationParameters.RequireSignedTokens = true;
                        // ******
                        bearer.SaveToken = true;
                        // ******
                    });
Run Code Online (Sandbox Code Playgroud)

小智 6

它是一个属性,定义成功授权后是否应将承载令牌存储在 AuthenticationProperties 中

  • 如果 `SaveTokens = false` 那么令牌保存在哪里?MVC客户端如何获取access_token? (6认同)
  • 我在文档中看到了这一点,但我不明白为什么? (3认同)

HLS*_*HLS 6

bearer.SaveToken用于指示服务器是否必须保存令牌服务器端才能对其进行验证。因此,即使用户进行了正确的签名和加密,如果它不是由服务器生成的,它也不会通过令牌验证。这样可以增强安全性,即使签名密钥遭到破坏,您的应用程序也不会受到影响。

缺点:

  • 如果您的应用程序重新启动,则回收的令牌将不再有效。
  • 如果有分布式应用程序,那么它将对您不起作用。