安全地将OAuth响应重定向到已知客户端。

oauth_redirect的Python项目详细描述


说明

在oauth工作流期间,由redirect-uri定义的web服务器接收 最终用户授权的结果。

此重定向uri通常是白名单uri,以避免仿冒攻击。

不幸的是,这使得很难将oauth集成客户机写入 域事先未知的API。

面对这种情况,我们编写此服务器是为了移动 可以从OAuth提供程序接收OAuth握手结果的用户 给中间人。

工作原理

使用oauth_重定向oauth工作流的工作方式如下:

  1. OAuth_重定向服务器在受TLS保护的站点上运行。例如: https://oauth.seantis.ch
  2. OAuth提供程序配置为允许重定向到 https://oauth.seantis.ch/redirect
  3. 想要获得授权的客户在 OAuth_使用机密身份验证代码重定向服务器。
  4. 最终用户将看到oauth授权站点,其中 将“uri集”重定向到https://oauth.seantis.ch/redirect
  5. 结果被发送到oauth_重定向服务器,该服务器将转发/代理 向客户端发出的请求,前提是且仅当客户端已注册 在之前,来自oauth提供程序的请求包含一个 效果。

方法

POST /register/<authentication code>

客户/授权寻求者用于注册自己。客户是 要求在注册消息中包含机密身份验证代码。

post请求的主体是json,格式如下:

{
    'url': "The url that handles the forwarded OAuth response.",
    'method': "The method with which the url should be called (get, put or post).",
    'success_url': "The url the server redirects to if the handler url returns a 2XX code.",
    'error_url': "The url the server redirects to if the handler url returns a non-2XX code.",
    'ttl': "The optional time to live in seconds (defaults to 3600 seconds)",
    'secret': "A client-specific secret that should be used authenticate
    the forwarded request. If the request does not contain this secret,
    someone other than oauth_redirect has sent it.",
}

返回OAuth提供程序需要传递的令牌:

{
    'token': "..."
}

(GET|POST) /redirect

端点通过重定向uri与oauth提供程序通信。到 验证来自OAuth提供程序的请求必须包含 由/register/<authentication code>给定的令牌。

通常,oauth提供程序提供某种类型的值,这些值可以从 客户端到重定向uri。此值可用于携带令牌 返回到OAuth_重定向服务器。

如果没有这样的值,令牌也可以通过url传递,使用query 参数(即https://oauth.seantis.ch/redirect?token=…)。

任何值都可以,json主体中的值、formdata值或查询 参数。

如果重定向请求被接受,它将被代理到已注册的URL。这个 ^ {tt4}$请求的结果是代理URL的结果。

如果请求被接受,它将被删除。

展开

服务器是使用aiohttp实现的。 它至少需要Python3.5。

虽然可以在oauth_重定向上实现tls支持,但是 建议您将它放在一个合适的web代理后面,比如nginx/apache。

要运行服务器,请运行:

oauth-redirect --host localhost --port 8080 --database registered --auth <your custom auth code>

运行测试

安装tox并运行它:

pip install tox
tox

将测试限制为特定的python版本:

tox -e py27

约定

OAuth_重定向尽可能接近PEP8。要测试它,请运行:

tox -e pep8

oauth_重定向使用Semantic Versioning

生成状态

Build Status

覆盖范围

Project Coverage

最新的PYPI版本

Latest PyPI Release

许可证

OAuth_重定向在GPLv2下发布

更改日志

0.3.0(2017-05-24)

  • 添加定义成功和错误URL的功能。 [资源]

0.2.0(2017-05-24)

  • 添加定义重定向目标所使用的http方法的能力 应该被叫来。 [资源]
  • 为重定向视图处理程序添加对get和post的支持。 [资源]

0.1.0(2017-05-23)

  • 初次发布。 [资源]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java API以编程方式创建ARM模板   java是否有合适的模式或方法来遍历数据和动态构造对象?   oop((类名)InstanceName)在java中有什么用途?   接口Java类方法未初始化   Java类:静态字段在内存中的位置?   java错误:服务类没有零参数构造函数   使用JDBC模板的java参数化sql查询   安卓致命异常:主java。lang.RuntimeException:   amazon web服务使用IAM角色从java访问AWS S3   java如何在Gradle中使用ojdbc   带块的Java类实例化   java日志记录是否有很大的开销,即使它是关闭的?   java JetBrains@Contract using字段   BluetoothGattCallback中从未调用java onDescriptorWrite()   java HttpMessageConverter无效的EOF处理   java在安卓的主活动类中调用另一个类   java防止在spring hibernate中存储重复值的正确方法   java如何在JAVADOC注释中使用变量?