【问题标题】:Django Oauth Toolkit Application SettingsDjango Oauth 工具包应用程序设置
【发布时间】:2016-09-29 14:30:37
【问题描述】:

Django Oauth Toolkit 文档没有描述注册应用程序时的重定向 uri、授权授予类型或客户端类型字段。

教程说将客户端类型设置为机密,将类型授予密码,并将 uris 留空。

其他选项有什么作用?

例如什么是客户类型公共与机密?授权类型密码、凭据、授权、隐式有什么作用?重定向 uri 的用途是什么?

我发现关于它们的信息很少,但没有实际解释,因为它们与 django rest 框架和 django oauth 工具包有关。

【问题讨论】:

    标签: django oauth django-rest-framework


    【解决方案1】:

    here阅读有关 Oauth2 协议的内容后,您将得到所有问题的答案

    但我会尽量简短地回答你的问题:

    我会经常使用clientResource Server 这两个词。在Oauth2 协议中,client 表示访问资源、数据或服务的系统。 (可能是您的移动应用程序或 javascript 应用程序使用您的 API 后端的 REST API(或 Resource Server)。如果您在移动/JS 应用程序中实现了 Facebook 登录,那么您的 API 后端很可能会向 Facebook 请求用户信息。在在这种情况下,您的 API 后端是 client,而 Facebook 是 Resource Server)

    客户类型:

    客户端类型是 confidentialpublic,具体取决于该客户端是否可以将其 client_secret 保密。 (例如,AngularJS 应用程序不能将其 client_secret 隐藏,因为任何人都可以在浏览器中执行“检查元素”并搜索它,所以这样的 client 必须注册为 public。)

    授权授予类型:

    Oauth2协议中有四种Authorization Grant Types

    1. 授权码:

      在这种授权类型中,client 首先请求authorization code,然后将authorization code 交换为access token。这是一个两步程序。如果client局外人,请使用此选项(更多信息请参见Resource-owner password based)。

    2. 隐式:

      通常与public client_type 一起使用。 client 不是上面的两步过程,而是一次性获得 access token

    3. 基于资源所有者密码:

      这在clientResource Server 之间存在高度信任时使用。这就是您的 API 后端和您的移动应用程序之间的情况。 (您的 API 后端和 Javascript 应用程序之间也存在高度信任,但由于它无法将其 client_secret 保密,因此您必须使用 Implicit 授予类型)。 FacebookGoogle 等永远不会给你这种Authorization Grant 因为,对他们来说,你的 API 后端是一个局外人

    4. 客户凭证:

      这是最不常用的。请阅读上述文档。

    重定向 URI:

    现在,就Redirect URI's 而言,它们仅在Authorization CodeImplicit 授权类型中需要(不确定Client Credentials 之一,请在cmets 中启发我)。 给出了重定向 URI,以便Resource Server 知道将access token 发送到哪里。想象一下,如果您正在实施 Facebook 登录。在这种情况下,您将转到 developers.facebook.com 并注册您的应用程序(就像您使用 django-oauth-toolkit 所做的一样),在注册您的应用程序时,您将指定一个 Redirect URI

    指定Redirect URI 是一种说法。 “嘿 Facebook,在这个 URI 上发送访问令牌”。因此,如果您设置 Redirect URI 类似 https://your_domain_name.com/token/facebook/ 的内容,Facebook 将在 Oauth2 流程结束时重定向到您指定的 Redirect URI,并以 @987654370 的形式提供 Access Token @ 参数,例如 https://your_domain_name.com/token/facebook/?token=some_long_string&some=other_parameters。

    【讨论】:

    • 我有一个问题是关于重定向 uri 的。在 OAuth2 协议 RFC 中,对于隐式和授权授权类型,它让客户端在请求中指定重定向 uri 可选。这与您在注册​​应用程序时设置的重定向 uri 有何不同?
    • 不是 100 % 确定这一点,但我认为这是答案:注册应用程序时,可以指定多个重定向 uri,因此当客户端在请求中指定 redirect_uri 时,它必须指定一个 redirect_uri在应用程序注册期间指定的。只是为了方便客户。就个人而言,我还没有遇到过这种多重redirect_uri 的东西是有益的情况
    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 2018-08-08
    • 2020-06-26
    • 2015-01-19
    • 2016-02-12
    • 2017-04-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多