OAuth 2.0授权实施原则

授权是获取访问令牌的一种方法。决定要实现哪些授权取决于最终用户将使用的客户端类型和你希望为用户提供的体验。


第一方客户端还是第三方客户端?

第一方客户端是你足够信任的客户端,可以处理最终用户的授权凭据。例如,Spotify的iPhone应用程序是由Spotify拥有和开发的,因此他们暗中信任它。

第三方客户端是你不信任。

访问令牌的持有者?

访问令牌表示授予客户端访问某些受保护资源的权限。

如果你正在授权一台机器访问资源,并且你不需要用户的权限来访问这些资源,那么你应该实现客户端凭据授权

 如果需要用户的权限来访问资源,则需要确定客户机类型。

客户端类型?

取决于客户端是否有能力保守秘密,将决定客户端应该使用哪种授权。 

 如果客户端是具有服务器端组件的Web应用程序,则应该实现授权代码授权

 如果客户端是完全在前端运行的Web应用程序(例如,单个页面的Web应用程序),则应该实现隐式授权

 如果客户端是本地应用程序,例如移动应用程序,则应该实现密码授权。 

 第三方本机应用程序应该使用授权代码授予(通过本机浏览器,而不是嵌入式浏览器——例如,对于iOS推送用户到Safari或使用SFSafariViewController,不要使用嵌入式WKWebView)。