从 Oauth2 中的另一个资源获取资源
Getting resource from another resource in Oauth2
所以这是一个案例:
我有身份服务器、客户端应用程序和资源 (API)。身份服务器在端点 http://identityserver:8080/connect/userinfo 上提供用户信息。如果您发送带有有效访问令牌的请求,您将获得有关用户的其他信息。 如果我需要有关资源的此信息,我将如何获得它。我有两个想法:
- 通过客户端获取用户信息。 (客户端向userinfo端点发送请求并获取信息,然后通过请求调用API发送。)
- 资源 API 使用访问令牌在 userinfo 端点本身上创建请求。这里的问题是,如果我想从令牌存储中获取令牌值,它是不支持的信息(Java Spring),所以基本上我在资源服务器上没有访问令牌。
我知道 userinfo 端点基本上是资源,所以我的问题是如果我想从另一个资源获取资源并保持围绕 OAuth2 和 OpenID 连接的所有最佳实践,该如何继续。
访问令牌(我假设)可供您的 API 使用,因此您可以简单地将其传递给其他 API(例如 userinfo 端点),假设该令牌包含正确的范围。
我建议创建您自己的抽象,使获取当前请求中使用的原始环境令牌成为可能,这样您就可以使用它来调用其他 API。
解决方案是使用不同的授权类型。最合适的是客户端凭证。需要一个身份服务器来注册一个新的客户端 ID 和密码,它可以用来为 API.
交换访问令牌
所以这是一个案例: 我有身份服务器、客户端应用程序和资源 (API)。身份服务器在端点 http://identityserver:8080/connect/userinfo 上提供用户信息。如果您发送带有有效访问令牌的请求,您将获得有关用户的其他信息。 如果我需要有关资源的此信息,我将如何获得它。我有两个想法:
- 通过客户端获取用户信息。 (客户端向userinfo端点发送请求并获取信息,然后通过请求调用API发送。)
- 资源 API 使用访问令牌在 userinfo 端点本身上创建请求。这里的问题是,如果我想从令牌存储中获取令牌值,它是不支持的信息(Java Spring),所以基本上我在资源服务器上没有访问令牌。
我知道 userinfo 端点基本上是资源,所以我的问题是如果我想从另一个资源获取资源并保持围绕 OAuth2 和 OpenID 连接的所有最佳实践,该如何继续。
访问令牌(我假设)可供您的 API 使用,因此您可以简单地将其传递给其他 API(例如 userinfo 端点),假设该令牌包含正确的范围。
我建议创建您自己的抽象,使获取当前请求中使用的原始环境令牌成为可能,这样您就可以使用它来调用其他 API。
解决方案是使用不同的授权类型。最合适的是客户端凭证。需要一个身份服务器来注册一个新的客户端 ID 和密码,它可以用来为 API.
交换访问令牌