JwtSecurityTokenHandler线程是否安全

时间:2017-11-18 04:03:32

标签: c# asp.net-core asp.net-identity jwt

我使用JwtSecurityTokenHandler在aspnet核心web api app中发出令牌:

JwtSecurityToken token = BuildJwtSecurityToken(...);
public string toks = new JwtSecurityTokenHandler().WriteToken(token);

每次请求和创建令牌时,都会实例化一个新的JwtSecurityTokenHandler,我可以使用它的全局实例并将其用于每个令牌生成吗?

private JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
private GenToken(JwtSecurityToken token) => handler.WriteToken(token);

这样使用有什么问题吗?

2 个答案:

答案 0 :(得分:0)

文档说JwtSecurityTokenHandler的实例成员不保证是线程安全的。

https://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.jwtsecuritytokenhandler(v=vs.114).aspx

答案 1 :(得分:0)

我看到的大多数示例,例如this one on blog.wille-zone.de,都是为每个请求单独创建的。

我不会对此太聪明;即使当前是线程安全的,这里没有人可以让Microsoft承诺保持这种状态。

如果您确实希望他们作出承诺,则可以从https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet处提出问题开始。他们可以将其写入规范/代码/文档中。