Django Oauth Toolkit文档在注册您的应用程序时不会描述重定向uris,授权授权类型或客户端类型字段。
教程说将客户端类型设置为机密,将类型授予密码,并将uris留空。
其他选项有何作用?
e.g。什么是客户类型公共与机密?授权类型密码,凭据,授权,隐式做什么?什么是重定向uris?
我发现了关于它们的稀疏信息,但没有关于django rest framework和django oauth工具包的实际解释。
答案 0 :(得分:14)
从here了解Oauth2协议后,您将获得所有问题的答案
但我会简单地回答你的问题:
我经常使用client
和Resource Server
这两个词。在Oauth2
协议中,client
表示访问资源,数据或服务的系统。 (可能是您的移动应用程序或javascript应用程序正在使用您的API后端(或Resource Server
)的REST API。如果您已经在移动/ JS应用程序中实现了Facebook登录,那么您的API后端请求可能是Facebook提供用户信息。在这种情况下,您的API后端是client
,Facebook是Resource Server
)
客户类型:
客户端类型为confidential
或public
,具体取决于该客户端是否可以保密client_secret
AngularJS
。 (例如,client_secret
应用无法隐藏它client
,因为任何人都可以在浏览器中执行"检查元素"并搜索它,所以这样{ {1}}必须注册为public
。)
授权授权类型:
Authorization Grant Types
协议中有Oauth2
种。
授权码:
在此授权类型中,client
首先请求authorization code
,然后authorization code
与access token
进行交换。这是一个两步程序。如果client
是局外人(Resource-owner password based
中有更多内容),请使用此选项。
<强>隐式:强>
通常与public
client_type
一起使用。 client
一次性获得access token
,而不是上面的两步程序。
基于资源所有者密码:
在client
和Resource Server
之间存在高度信任时使用此选项。您的API后端和移动应用之间就是这种情况。 (您的API后端和Javascript
应用之间也存在高度信任,但由于无法保密client_secret
,您必须使用Implicit
授权类型它)。 Facebook
或Google
等永远不会向您提供此类Authorization Grant
,因为对您来说,您的API后端是局外人。
客户端凭据:
最不常用。请在上述文件中阅读。
重定向URI
现在,就Redirect URI's
而言,仅在Authorization Code
或Implicit
授权类型中需要它们(不确定Client Credentials
一个,有人请赐教我这在评论中)。
提供重定向URI,以便Resource Server
知道将access token
发送到何处。想象一下,如果您正在实施Facebook登录。在这种情况下,您将转到developers.facebook.com
并注册您的应用程序(就像您使用django-oauth-toolkit
所做的那样),在注册您的应用程序时,您将指定Redirect URI
。
指定Redirect URI
是一种说法。 &#34;嘿Facebook,在此URI&#34;上发送访问令牌。因此,如果您将Redirect URI
设置为https://your_domain_name.com/token/facebook/,Facebook
会在Oauth2流程结束时重定向到指定的Redirect URI
,并以Access Token
的形式提供GET
{1}}参数,如https://your_domain_name.com/token/facebook/?token=some_long_string&some=other_parameters。