我有一个运行Django 1.7的后端和一个使用Bootstrap单独开发的前端。前端通过REST API与后端进行通信,我想用OAuth2保护它。
问题是:我应该使用哪种授权类型?我相信在前端工作的人,但这并不意味着我相信Javascript :-)我无法决定是否应该选择隐式授权或资源所有者密码。
有经验的建议吗?
答案 0 :(得分:1)
特别是在使用与前端不在同一域或服务器上的API时,通常最好使用类似OAuth 2的Web应用程序流程。这通常称为implicit grant ,并使用grant_type
的{{1}}。
通过这种方式,您无需担心通过线路发送凭据,就像您需要resource owner password credentials grant一样。同样,您也不必处理隐藏authorization code grant的私钥。
使用隐式授权,只有OAuth令牌必须存储在本地计算机上。这应该更好,因为在令牌变为公共或其他强制使其无效的情况下,令牌应该能够快速撤销。在发出授权请求时,用户应该在API服务器上登录,但大多数OAuth提供程序都支持可以使用的自定义登录页面。
使用密码凭据grant,用户名和密码都必须存储在本地计算机上,这需要您额外保护它们。如果需要,它们也很难撤销。