基于无状态.NET JWT的oauth2身份验证服务器

时间:2017-03-23 09:40:36

标签: c# .net oauth-2.0 owin jwt

首先请原谅我糟糕的英语。

我是oauth2的新手,我正在尝试使用JWT令牌设置授权服务器。

服务器在Owin自托管环境中运行。

此时我已经设置了令牌生成,它似乎正常工作,我还设置了刷新令牌提供程序,它似乎工作(但它只是一个最小的实现);我没有更改OAuthAuthorizationServerOptions中的RefreshTokenFormat,使其保持默认状态(我不知道默认格式是什么),因此访问令牌显然是一个JWT令牌,刷新令牌是其他东西。

所有这些似乎都能正常工作,但我需要在微服务环境中运行此授权服务器,因此授权服务器服务可能随时从一台机器移动到另一台机器,因此需要无状态或在至少要在共享存储(DB)或复制的本地存储(我在Service Fabric上)或某种分布式缓存上保存所需的信息。

测试我注意到如果我在一台机器上生成一个刷新令牌,然后我尝试在授权服务器的另一个实例(在另一台机器上)上使用这个刷新令牌来获取一个新的访问令牌,它就会失败一般的invalid_grant错误。我的猜测是auth服务器只是将一些与令牌相关的信息保存在内存中,但我不确切知道它是什么以及如何。

我也希望有人指出我正确的方向来解决这个问题。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我也使用JWT令牌解决了这种情况,也用于刷新令牌。 这样,身份验证服务器似乎完全无状态。