手动验证 OAuth2 令牌

Manual validation of OAuth2 token

我有一个 Spring Boot 2 应用程序,它使用 OAuth2,并将其承载令牌中继到它调用的所有 REST 服务。在这些服务中,有一个不使用 Spring 的遗留 Java 6 webapp。我想知道是否可以在这个遗留应用程序中验证不记名令牌,知道 OAuth2 服务器的 public 密钥。

OAuth 2 是一个标准,它不是 Spring 引导特定的实现,所以我不明白为什么你不能验证令牌。如果它是 JWT,您可以只使用普通的 Java 库来处理 JWT,并在您的遗留应用程序中使用它。例如。看看这个过滤器实现:https://github.com/curityio/oauth-filter-for-java 它没有使用 Spring 并且它验证了 JWT。

您可能 运行 遇到的一个问题是旧版应用程序是否支持您的 OAuth 服务器可能使用的所有签名验证算法。例如,我不确定 Java 6 是否支持用于签名验证的椭圆曲线算法,但这是您需要调查的内容。

如果 Java 版本无法正确验证 JWT,或者如果您的授权服务器发出不透明令牌,那么您可能必须调用授权服务器的 introspection endpoint,为了验证令牌并获得声明。这甚至可能更简单,因为它只需要从遗留应用程序到授权服务器的 http 调用。