【问题标题】:oauth2 - how was user identified before OIDC?oauth2 - 在 OIDC 之前如何识别用户?
【发布时间】:2018-10-08 17:53:19
【问题描述】:

我对 oauth2 和 OIDC 有点困惑。

因此,假设使用 OIDC,我们现在获得了 id_token,它在同一 oauth2 流中唯一标识用户。 但我的理解是 - oauth 2 比 OIDC 更早出现,即使在这一点上,OIDC 支持也不是普遍的。

那么当前使用 oauth2(没有 OIDC)的 API 是如何工作的呢?
假设有一个移动应用程序需要使用一些 API。
移动应用程序获得 oauth2 访问令牌后的想法是 -> 他们总是必须使用该访问令牌访问某个端点,例如/me,然后该访问令牌将提供用户 ID 信息?因此 api 必须跟踪哪些访问令牌已分配给每个特定用户?

对不起,这个问题就像要求提供一些琐事信息一样 - 但我对 oauth2 和 OIDC 真的很陌生,只是想了解并确保我没有遗漏任何东西......

【问题讨论】:

    标签: oauth-2.0 single-sign-on openid-connect


    【解决方案1】:

    OAuth 2.0 NOT an Authentication protocol. OAuth 2.0 更像是一种委托协议,其中资源所有者将某些权限委托给 OAuth 客户端。

    OIDC 是建立在 OAuth 2.0 之上的身份验证协议。

    当用户(资源所有者)将权限委派给应用程序(OAuth 客户端)以执行某些操作时,应使用 OAuth 2.0。

    OIDC 应该用于应用程序(OAuth 客户端)需要某种“保证级别”以确保用户(资源所有者)就是他所说的那个人。

    身份验证由第三方(授权服务器)完成。 id_token 允许客户端访问授权服务器知道的有关用户的信息(并希望已经执行了一些验证)。

    【讨论】:

      【解决方案2】:

      正如 jwilleke 回答的那样,OAuth 2.0 用于授权。 OpenID Connect (OIDC) 建立在 OAuth 2.0 之上,增加了身份验证层。

      基本上,OAuth 2.0 会委托客户端应用程序代表资源所有者访问受保护的端点。简而言之,最终用户授权应用程序访问资源/服务。在此过程中,应用程序不会收到有关最终用户的任何详细信息,因此它无法验证/检测(在 OIDC 中,应用程序会收到 id 令牌,该令牌足以自给自足地对最终用户进行身份验证)最终用户。

      问: 移动应用程序获得 oauth2 访问令牌后的想法是 -> 他们总是必须使用该访问令牌访问像 /me 这样的端点,然后该访问令牌将提供用户 ID 信息?因此 api 必须跟踪已为每个特定用户提供了哪些访问令牌?

      从 OAuth 2.0 的角度来看,没有最终用户信息共享。但是令牌发行身份提供者了解它发行的令牌。在内部,它可以映射最终用户的详细信息、权限以及处理它所需的任何内容。这样,当 API(资源服务器)收到访问令牌时,它可以验证令牌。请注意,资源服务器和授权可以相同或不同。这些是特定于实现的细节。或者,可以使用rfc7662 中定义的令牌自省来检测问题访问令牌的有效性。

      示例场景

      您有移动应用 A。它能够使用服务提供商 G 公开的服务 B(受访问令牌保护)。假设有一个用户 Alex 已经在 SP G 注册,因此可以访问服务 B 并使用应用 A。SP G 实施了 OAuth 2.0,因此服务 B 接受 SP G 颁发的访问令牌。

      用户 Alex 使用 App A,并且 App A 中有一个功能需要使用服务 B。App A 需要获得 Alex 的授权才能代表他/她使用服务 B。在这样做时,会有一个用户登录过程,最后 SP G 向 App A 发出访问令牌。它是否传达了 Alex 的身份?不,不是的。但是应用 A 现在可以使用它收到的访问令牌来使用服务 B。服务 B 完全理解并可以验证 SP G 的访问令牌问题。IMO 简而言之,这就是 OAuth 2.0。

      p.s - 替代已知服务,如 Google 日历、Google 身份和您的 Android 应用程序,使其更有意义。

      【讨论】:

        猜你喜欢
        • 2012-01-08
        • 2020-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 2022-12-22
        • 1970-01-01
        相关资源
        最近更新 更多