安全地将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使用唯一的按钮标签单击按钮   代码生成如何使用Java codeModel为数组的特定索引赋值   java如何批量执行Camel SQL插入   java iText 7将ltv添加到现有签名   内存管理Java应用程序突然停止几天后(810)   带MySQL的java注册表单JavaFX在intellij中失败   如何使用eclipse为windows azure java项目启用远程调试   一种通用的java输入输出设计模式   java Android XML(RSS)忽略引号(“”)   java帮助:安卓中的8 X 10 2维按钮数组   java启动Android项目   JWrapper构建java应用程序   java如何在Android应用程序中设置基于日期/时间的默认页面加载?   java循环程序在完成后返回到起点   java Hibernate:更好的整体类还是多类映射?   回溯数独解算器的递归问题[Java]   java查找类用法   java如何在SpringWebFlow中将多个模型绑定到一个视图?