OAuth 2 access_token vs OpenId Connect id_token

aja*_*ybc 25 openid api oauth-2.0

虽然我以前曾使用过OAuth 2,但我是Open ID Connect的新手.

阅读教程和文档我遇到了access_tokenid_token,其中access_token是根据OAuth 2生成的随机唯一字符串,id_token是JSON Web Token,其中包含用户ID,算法,发行者和各种其他信息等信息.用于验证它.我也见过提供access_token和id_token的API提供程序,据我所知它是为了向后兼容.

我的问题是,是否可以使用access_token和id_token来访问受保护的资源?或者id_token仅用于验证目的,access_token用于访问受保护资源?

Zól*_*ván 41

最初,OAuth和OpenId是为不同目的而设计的:OpenId用于身份验证,OAuth用于授权.OpenId Connect是两者的统一,适用于两者,但不会改变其原始功能.记住这一点,你应该能够找到自己.;-)

id_token用于标识经过身份验证的用户,例如用于SSO.access_token必须用于证明受保护资源的访问权限,例如OpenId Connect中的userinfo端点.


big*_*ann 7

换一个角度来回答:

id_token

  • id_token 是 JWT - 请记下这一点!
  • 它包含有关用户/资源所有者身份的声明
  • 拥有有效的 id_token 意味着用户已通过身份验证

访问令牌

  • access_token 是不记名令牌
  • 持有者令牌意味着持有者无需进一步身份验证即可访问资源
  • access_token 可以是 JWT(请参阅附录点 1)或不透明的

如果您想了解更多信息:oidc 和 oauth 中的令牌类型