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