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

Stateless .NET JWT based oauth2 authentication server

首先请原谅我的英语不好

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

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

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

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

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

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

非常感谢。

我使用 JWT 令牌也解决了刷新令牌的问题。 这样认证服务器就好像是完全无状态的。