OAuth 2 access_token vs OpenId Connect id_token

前端 未结 4 2009
栀梦
栀梦 2020-12-05 09:46

Although I have worked with OAuth 2 before, I am a newbie to Open ID Connect.

Reading the tutorials and documentations I have come across both access_token<

相关标签:
4条回答
  • 2020-12-05 10:19

    Another angle to provide an answer:

    id_token

    • An id_token is a JWT - make note of that!
    • It contains claims about the identity of the user/resource owner
    • Having a valid id_token means that the user is authenticated

    access_token

    • An access_token is a bearer token
    • A bearer token means that the bearer can access the resource without further identification
    • An access_token can be a JWT (see Appendix point 1.) or opaque

    If you want to read more: Types of tokens in oidc and oauth

    0 讨论(0)
  • 2020-12-05 10:21

    access_token is useful to call certain APIs in Auth0 (e.g. /userinfo) or an API you define in Auth0.

    id_token is a JWT and represents the logged in user. It is often used by your app.

    is it possible to use both the access_token and the id_token for accessing the protected resources ?

    Not completely, first, you need to use id_token to log in,
    second, you will get a accessToken,
    last, use accessToken to access data.

    0 讨论(0)
  • 2020-12-05 10:35

    Here is an article that describes why the id_token was introduced and what was it's initial purpose: Why we need a id_token in OpenID Connect & Facebook Connect. In short they tried to standardize the Hybrid Flow that was used by the Facebook.

    We considered was using the id_token as the access_token. We rejected that option because:

    • Many providers have existing OAuth token formats for there endpoints that wo uld be difficult to change.
    • We don't want long term access tokens being stored in the browser as cookies.
    • There are clearly separate recipients of the two tokens overloading the semantics of the two tokens would reduce flexibility and increase complexity in the long term.
    0 讨论(0)
  • 2020-12-05 10:40

    Originally, OAuth and OpenId are designed for different purpose: OpenId for authentication and OAuth for authorization. OpenId Connect is a unification of the two and serves for both, but does not change their original functionalities. Keeping that in mind, you should be able to find out yourself. ;-)

    The id_token is used to identify the authenticated user, e.g. for SSO. The access_token must be used to prove access rights to protected resources, e.g. for the userinfo endpoint in OpenId Connect.

    0 讨论(0)
提交回复
热议问题