OAuth 1与OAuth 2
本文旨在作为OAuth版本最适合您需求的快速指南。目标受众是考虑为客户提供哪些工作流的提供商,但对使用哪个工作流感兴趣的客户也应该能够获得一些帮助。
在选择之前,重要的是要了解客户端-服务器安全性的一个基本问题。 It is technically impossible to store secrets on machines out of your control, such as a users desktop or phone. 如果没有保护秘密的能力,身份验证的能力就会丧失。因此,提供商无法知道来自这样的客户端的请求是合法的还是来自恶意方的。应非常小心地适当限制未经身份验证的客户端对资源的访问。
When to offer which OAuth workflow
您的客户端驻留在安全环境中(即能够保密),能够使用SSL/TLS,并且您愿意冒着在不知情的情况下将对您的用户资源的访问权限授予恶意第三方的风险,该第三方从您的某个客户端窃取了令牌(但不是身份验证机密)。
(Provider) 报盘 授权码授予 。不提供刷新令牌可以限制影响。默认为 WebApplicationServer 。
(Client) 使用 Web Application Client 。
与上面类似,但您不愿意仅基于被盗令牌来冒险进行恶意访问。
(Provider) 报盘 OAuth 1 。
(Client) 使用 OAuth 1 Client 。
您的客户端驻留在用户控制的设备中,能够通过基于Web的工作流程进行授权。此工作流本质上不安全,请相应地限制与令牌关联的权限。
(Provider) 报盘 隐含赠与 。默认为 MobileApplicationServer 。
(Client) 使用 Mobile Application Client 。
与上面类似,但不能使用网络授权。这些客户端必须与用户建立牢固的信任关系,尽管它们不提供额外的安全性。
(Provider) 未经身份验证的优惠 资源所有者密码凭据授予 。默认为 LegacyApplicationServer 。
(Client) 使用 Legacy Application Client 。
您的客户正在从使用用户名/密码与您的API交互过渡到使用OAuth令牌,但出于各种原因,不希望使用基于Web的授权工作流。客户端驻留在安全环境中,并与其用户建立了牢固的信任关系。
(Provider) 报价已通过身份验证 资源所有者密码凭据授予 。默认为 LegacyApplicationServer 。
(Client) 使用 Legacy Application Client 。
您希望运行一个高度受信任的内部作业,该作业对受保护的资源起作用,但不与用户交互。
(Provider) 报盘 客户端凭据授予 。默认为 BackendApplicationServer 。
(Client) 使用 Backend Application Client 。