【发布时间】:2018-10-18 04:13:36
【问题描述】:
所以这里有一个案例: 我有身份服务器、客户端应用程序和资源(API)。身份服务器在端点http://identityserver:8080/connect/userinfo 上提供用户信息。如果您使用有效的访问令牌发送请求,您将获得有关用户的其他信息。 如果我需要有关资源的这些信息,我将如何获得它。我有两个想法:
- 通过客户端获取用户信息。 (客户端在 userinfo 端点上发送请求并获取信息,然后通过请求调用 API 发送。)
- 资源 API 使用访问令牌在 userinfo 端点本身上创建请求。这里的问题是,如果我想从令牌存储中获取令牌值,那么它是不受支持的信息(Java Spring),所以基本上我在资源服务器上没有访问令牌。
我知道 userinfo 端点基本上是资源,所以我的问题是如果我想从另一个资源中获取资源并保持围绕 OAuth2 和 OpenID 连接的所有最佳实践,该如何进行。
【问题讨论】:
-
出于好奇,您需要这些关于什么资源的信息?
-
我需要电子邮件地址。在 API 中,我生成 pdf,我想将其发送给登录的用户。
-
所以您只是想要一种让您的 API 调用 userinfo 端点的方法?
-
是的,但为此我需要访问令牌并将其添加到标头并使用resttemplate 调用它,但我无法在春季访问令牌存储中的令牌。当我在 accesstoken a 上调用 getValue 时,我会得到 org.springframework.security.oauth2.provider.token.store.jwk.JwkException: This operation is not supported
-
在这个问题上我发现也许这个stackoverflow.com/questions/19556039/… 我可以获得授权标头,但我仍然想知道哪种方法更好,这样做是否安全,或者是否会最好根据客户的要求发送电子邮件?
标签: spring-security oauth identityserver4 spring-security-oauth2 openid-connect