oauth隐式授权与授权代码授予?

时间:2018-06-12 10:56:26

标签: authentication oauth oauth-2.0

我想更好地理解隐式授权流和授权代码授权流之间的差异,因为我不确定我当前的理解是否正确。

  1. 前端应用程序主要使用隐式授权流程来验证用户身份吗?
  2. 隐式授予流量是否只需要client_id,username&要验证的密码,换句话说,永远不会发送client_secret吗?
  3. 授权码只是一个短暂的令牌吗?
  4. 在交换访问令牌的授权代码后,客户端可以访问用户帐户多长时间?具体来说,如果客户端是长时间运行的脚本,那么每次脚本运行时用户是否需要进行身份验证?或者,我们可以假设在用户授权后,客户端有权在需要时访问用户(除非用户撤销访问权限),因此只需要使用客户端凭据进行身份验证吗?
  5. 在隐式流程上使用授权代码流有什么好处?
  6. 资源服务器本身是否需要客户端ID?
  7. 由于

2 个答案:

答案 0 :(得分:2)

The OAuth 2.0 Authorization Framework (RFC 6749)意味着:

隐式流仅适用于基于浏览器的OAuth客户端应用程序或JavaScript NOT 移动设备或可以使用授权代码授权的其他应用程序

隐式授权类型用于获取访问令牌(事实并非如此)    支持刷新令牌的发布)并针对公众进行了优化    已知运营特定重定向URI的客户端。

有关使用隐式授权的背景信息,请参阅第1.3.2节和第9节。    有关重要的安全性考虑,请参见第10.3节和第10.16节    使用隐式授权时。

使用隐式授权类型时,访问令牌将在URI片段中传输,这可能会将其暴露给未授权方。

-Jim

答案 1 :(得分:1)

虽然jwilleke回答了你提出的大多数问题,但我会回答你的具体问题,

  1. 隐式流程专为无法执行令牌请求的客户而设计。来自OAuth 2.0规范 - 4.2 section
  2.   

    隐式授权类型用于获取访问令牌(事实并非如此)      支持刷新令牌的发布)并针对公众进行了优化      已知操作特定重定向URI的客户端。这些客户      通常使用脚本语言在浏览器中实现      比如JavaScript。

    1. 它被公共客户使用。他们没有客户的秘密。这是因为他们无法保护这些秘密,因为它们在浏览器上运行。

    2. 授权码的生命周期可以为几秒(30秒)到几分钟(2分钟)。与其他令牌相比,它们是短暂的。

    3. 这取决于访问令牌的生命周期。如果长时间运行的任务和令牌过期,您将必须获取新的访问令牌以进行授权。但是,如果您的特定后端建立会话,则它可能比访问令牌具有更长的生命周期。

    4. 刷新令牌的一个优点。它可用于在没有最终用户交互的情况下刷新访问令牌(全新登录)。此外,根据OAuth服务器的实现,您可能会获得具有不同生命周期的访问令牌。例如,授权服务器可能会因为公共客户端使用它而为隐式流发出短期访问令牌。

    5. 这取决于。如果资源服务器需要从另一个授权使用访问令牌的资源服务器使用受保护资源,那么您的资源服务器也需要客户端ID并遵循特定流程来获取令牌。但如果它没有在外面进行通信,那么您就不必为其获取客户端ID。