Sle*_*mer 3 c# jwt asp.net-core
我正在创建一个Asp.net核心REST服务.目前正在通过JWT承载令牌进行身份验证.
现在,我的代码看起来像:
DateTimeOffset dtNow = DateTime.Now;
Claim[] claims = new Claim[]
{
new Claim(JwtRegisteredClaimNames.Sub, strUsername),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.Iat, dtNow.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)
};
JwtSecurityToken jwtAccess = new JwtSecurityToken(_options.Issuer, _options.Audience, claims, dtNow.DateTime, dtNow.DateTime.Add(_options.AccessTokenExpiration),
_options.SigningCredentials);
var response = new
{
access_token = new JwtSecurityTokenHandler().WriteToken(jwtAccess),
token_type = "Bearer",
expires_in = (int)_options.AccessTokenExpiration.TotalSeconds,
refresh_token = ""
};
Run Code Online (Sandbox Code Playgroud)
问题:
这完全取决于您的应用程序的需求,但这听起来像合理的数字.
它们的创建方式不同.访问令牌通常是包含JWT的令牌.刷新令牌是必须保存在提供程序上的引用令牌,并在传入新的访问令牌时进行备份.
刷新令牌没有要验证的签名.基本上,您将传递客户端ID和秘密以及刷新令牌等信息,这将允许您获取新的访问令牌.就像长时间保存的用户名和密码一样,必要时可以列入黑名单.
不,您每次请求新的访问令牌时都可以更新刷新令牌,这将为您提供"滑动"刷新令牌.
对于每个应用程序,它们可以具有不同的令牌,但是对于每个应用程序,可以在执行新登录时覆盖其先前的刷新令牌.
是的,用户必须在大约30分钟内获得新的访问令牌,但是当您的角色提供者与您的应用程序不同时,这也会有所帮助.这为API提供了一种查看角色的方法,而无需调用授权服务器.当您在令牌中存储信息时,请求保存的数量非常大,并且每30分钟只需要重新获取该信息,而不是针对每个API调用或回发向单独的服务器发送额外的HTTP请求.
希望其中一些有用.我说的是次要的经验,但是有非常好的资源来解释Auth0中的这些东西,或者基本上来自IdentityServer3(现在4)的人
| 归档时间: |
|
| 查看次数: |
2748 次 |
| 最近记录: |