如何将JWT的Refresh/Access Token均设为HTTP-Only并解决授权问题
关于JWT Refresh/Access Token机制的实现疑问与指导需求
我正在基于JWT实现Refresh/Access Token机制,遇到了几个具体问题:
- 使用
[Authorize]属性时,系统似乎默认采用Refresh Token进行授权,但Refresh Token本身仅包含ID和用户名,无法满足部分需要更多用户信息的端点需求。 - 此前是将Access Token作为Bearer Token发送,但现在要求把Access Token和Refresh Token都设置为HTTP-Only Cookie,需要调整原有处理逻辑。
当前我的授权配置代码如下:
public static void AddAuthenticationConfig(this IServiceCollection services, IConfiguration config) { services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateAudience = false, ValidateIssuer = true, ValidateLifetime = true, ValidIssuer = config["JWT:Issuer"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["JWT:Key"]!)), }; }); }
这个配置比较基础,之前能满足Bearer Token的使用需求。
此前我通过一个refresh-access-token端点,从HttpContext中获取Refresh Token来完成令牌刷新,但现在不确定在双令牌都设为HTTP-Only Cookie的场景下,是否还能沿用这种方式。另外,我也不清楚是否需要为Refresh Token过期的情况专门实现验证逻辑,对该场景的具体实现细节有很多疑问,希望能得到相关指导、资源或建议。
内容的提问来源于stack exchange,提问作者yzkael
相关产品推荐
相关产品推荐

