我有多个客户端应用程序连接到微服务设置中的几个不同的API服务。我使用OIDC进行用户身份验证,然后使用客户端应用程序的OAuth2访问令牌授权API服务(资源服务器)。
[许多不同的应用程序如果具有具有所需范围的访问令牌,则可以调用相同的API。 API服务器只会检查访问令牌中是否存在声明以允许调用。
我们的一项API服务(例如,机票预订应用程序)需要知道谁是呼叫者,以便进行某些应用程序特定的验证以及进行发票记录等工作。
我们如何仅通过访问令牌JWT
知道谁是呼叫者?尽管OIDC提到azp
作为告诉谁是Identity Token
的授权方的手段,但Access Token
并没有定义等效项。有人有什么想法吗?
您可以使用OAuth 2.0(OAuth 2.0 Token Introspection)定义的令牌自省端点
公开此端点是为了验证令牌的有效性以及检索某些信息,例如范围,最终用户的用户名,以及对于您而言重要的是客户端的客户端ID(Introspection Response)。
或者,检查授权服务器的访问令牌JWT配置。由于您获得了JWT,因此可以将客户端ID添加到JWT中,这将避免这种额外的自省调用。