调试资源服务器和授权服务器之间的接口(oauth 2.0.验证访问令牌)
Debugging The interface between Resource Server and Authorization Server (oauth 2.0. validation access token)
有两个 spring-boot
个应用程序。
client
resource-sever
有一个 dev okta 帐户用作 auth server
(这 2 个应用程序是标准的 Spring Boot
客户端 -> resource-server,几乎是开箱即用的 okta 设置,应该没有问题)
client
- 安全地将消息发送到--> secure-sever
(在 header 中传递访问令牌以证明它有权调用它并取回数据)
(按预期工作)
但我想弄清楚他们之间发生了什么,交通方面
我试图找出 resource-server
检查从 client
获得的 token
和从 auth server
获得的 token
的那一刻。
这是标准的序列图oauth 2.0 flow
和我要调试的部分(箭头)
auth server
client
、resource-sever
:
之间有通信
我似乎无法确认资源服务器(从右边)使用 auth-server
(okta) 进行任何 令牌验证 ..?
问题:是为什么?根据我的理解,它应该(以某种方式)验证它。
我期待看到从 resource-server 到 auth-server (otka) 的 token-validation-request 调用(2015 年 10 月的 ETF RFC 7662),如下所示:
How to validate an OAuth 2.0 access token for a resource server?
我原以为,对于每个客户端调用,资源服务器都会检查客户端传递的令牌是否有效。然而,我没有看到任何从资源服务到 okta 的调用会在其对 okta 的请求中使用令牌。
这归结为 JWT 和不透明令牌之间的区别。
根据我看到的对 /keys
的调用,您的应用程序似乎正在使用 JWT。
当使用 JWT 身份验证时,资源服务器将在启动时查询 jwks_url
(在本例中为 /keys
)以检索可用于验证的一组 public 密钥JWT-encoded 不记名令牌。
然后,当资源服务器在来自客户端的请求中收到承载令牌时,它将根据从 jwks_url
端点获得的 public 密钥验证其签名。
这意味着资源服务器不必在每次请求时都查询授权服务器。
您可以在 Spring 安全参考文档的 OAuth 2.0 Resource Server JWT 部分阅读有关此过程的更多信息。
您链接到的问题涉及不透明标记。
在此设置中,资源服务器每次都必须调用授权服务器 introspection 端点来验证令牌。
您可以在 Spring 安全参考文档的 OAuth 2.0 Resource Server Opaque Token 部分阅读有关此过程的更多信息。
有两个 spring-boot
个应用程序。
client
resource-sever
有一个 dev okta 帐户用作auth server
(这 2 个应用程序是标准的 Spring Boot
客户端 -> resource-server,几乎是开箱即用的 okta 设置,应该没有问题)
client
- 安全地将消息发送到--> secure-sever
(在 header 中传递访问令牌以证明它有权调用它并取回数据)
(按预期工作)
但我想弄清楚他们之间发生了什么,交通方面
我试图找出 resource-server
检查从 client
获得的 token
和从 auth server
获得的 token
的那一刻。
这是标准的序列图oauth 2.0 flow
和我要调试的部分(箭头)
auth server
client
、resource-sever
:
我似乎无法确认资源服务器(从右边)使用 auth-server
(okta) 进行任何 令牌验证 ..?
问题:是为什么?根据我的理解,它应该(以某种方式)验证它。
我期待看到从 resource-server 到 auth-server (otka) 的 token-validation-request 调用(2015 年 10 月的 ETF RFC 7662),如下所示:
How to validate an OAuth 2.0 access token for a resource server?
我原以为,对于每个客户端调用,资源服务器都会检查客户端传递的令牌是否有效。然而,我没有看到任何从资源服务到 okta 的调用会在其对 okta 的请求中使用令牌。
这归结为 JWT 和不透明令牌之间的区别。
根据我看到的对 /keys
的调用,您的应用程序似乎正在使用 JWT。
当使用 JWT 身份验证时,资源服务器将在启动时查询 jwks_url
(在本例中为 /keys
)以检索可用于验证的一组 public 密钥JWT-encoded 不记名令牌。
然后,当资源服务器在来自客户端的请求中收到承载令牌时,它将根据从 jwks_url
端点获得的 public 密钥验证其签名。
这意味着资源服务器不必在每次请求时都查询授权服务器。
您可以在 Spring 安全参考文档的 OAuth 2.0 Resource Server JWT 部分阅读有关此过程的更多信息。
您链接到的问题涉及不透明标记。
在此设置中,资源服务器每次都必须调用授权服务器 introspection 端点来验证令牌。
您可以在 Spring 安全参考文档的 OAuth 2.0 Resource Server Opaque Token 部分阅读有关此过程的更多信息。