首页 文章

OpenID Connect - 在这种情况下,是否应将id令牌发送到受保护资源?

提问于
浏览
1

假设我有一个本机应用程序需要发出请求的Web API . 此API需要通过本机应用程序验证用户是谁在发出这些请求 . OpenID Connect似乎是正确的选择,因为它是关于身份验证而不是OAuth的授权 .

本机应用程序将用户凭据发送到IDP并获取访问令牌(用于授权)和id令牌(用于身份验证) . 根据我对OIDC的理解,访问令牌将被发送到API,但id令牌仅用于本机客户端应用程序 . 这对我没有意义,因为它关注的是用户是谁,而不是本机应用程序 .

那么为什么id令牌也没有传递给受保护资源(又称API)?如果您没有将id令牌传递给API,那么什么保证访问令牌是安全的并且可以用于验证用户?否则,它似乎失去了使用OIDC而不是OAuth的好处 .

1 回答

  • 6

    OIDC规范的设计方式是ID令牌始终用于客户端(Native app),Access令牌用于资源(API) . ID令牌始终是JWT令牌,但是令牌令牌可以是不同类型的 .

    Access令牌的目的不是验证,而是授权(委托授权) . 如果由于某种原因,资源服务器想要了解用户,则可以调用user-info endpoints .

    令牌交换的安全性/有效性可以通过以下几种方式进行验证:

    • 使用公钥/私钥模型的加密/签名,其中授权服务器使用其私钥加密/签署访问令牌,资源服务器使用公钥解密/验证 .

    • 使用令牌内省 endpoints 来验证声明,令牌的有效性等 .

    其他属性(如AUD,AZP)有助于验证已颁发的访问令牌 .

    一些OIDC提供商使用ID_Tokens来访问API - 这与OIDC规范建议的模型不同

    这个article有关于这些场景的详细说明 .

相关问题