OAuth 2 客户端访问和授权代码

OAuth 2 client access and grant code

我正在使用 Web 上的不同链接及其 rfc (RFC 6749) 阅读 oauth 2 协议。通过链接后,我有以下疑问:

  1. 授权服务器是否需要在生成并传递给客户端后在其端维护授权码?

  2. 有一种情况,其中 2 个不同的客户端尝试从授权服务器获取令牌:第一个客户端在资源所有者登录并批准访问后获取令牌。然后第二个客户端(与第一个客户端完全不同)尝试获取令牌。

    a) 是否应该重定向第二个客户端和资源所有者 应该被要求再次登录或者授权服务器应该有 以检测资源所有者具有的方式实现 较早登录并且不会从资源中询问用户名和密码
    所有者?

    b) 如果上述问题的答案是肯定的,我们如何处理上述问题 情景?

  1. 授权服务器必须保持与 code a.o 关联的状态。访问它的客户端标识符、客户端使用的重定向 URI 和发布时间戳。这通常意味着授权服务器必须维护 code 作为对存储在后端的状态的引用。避免这种情况的一种方法是将所有信息编码到 code 本身并对其进行加密。

  2. 授权服务器可以选择保持登录会话或依靠外部 SSO 服务器来执行此操作,这样用户就不需要再次进行身份验证。但它必须要求用户同意向特定客户端(第一个和第二个客户端)颁发令牌。所以:身份验证可以是隐式的(SSO),同意必须是显式的(因为它是关于不同的客户端)。