支持无状态令牌的OAuth 2.0 Python提供程序

oauth2-stateless的Python项目详细描述


#OAuth2 stateless

OAuth2 stateless是一个框架,其目的是使在应用程序堆栈中通过[OAuth 2.0]提供身份验证变得容易。
这个库的主要区别在于它的简单性和在没有任何数据库中只有"无状态"的标记,基于**jwt**[json web标记](https://en.wikipedia.org/wiki/json-web-u标记)。

[文档](http://oauth2 stateless.readthedocs.org/en/latest/index.html)


[特拉维斯建造状态][建造徽章][建造]
[![许可证](http://img.shields.io/badge/license mit brightgreen.svg)](许可证)




server

`` python
来自wsgiref.simple_server import make_server
import oauth2
import oauth2.grant
import oauth2.error
来自oauth2.store.memory import clientstore
来自oauth2.store.stateless import token store
importoauth2.tokengenerator
导入oauth2.web.wsgi


\oauth2.web.implicitgrantsiteadapter):
模板=''
<;html>;
<;正文>;
<;p>;
<;a href="{url}&;确认=确认">;确认<;/a>;
<;/p>;
<;p>;
<;p>;
<;a href="{url}&;deny=deny">;拒绝<;/a>;
<;/p>;
<;/body>;
<;/html>;'''


def身份验证(自我、请求、环境、作用域,客户端:
检查用户是否已授予访问权限
如果请求。post_param("confirm")="confirm":
返回{}

raise oauth2.error.usernotauthenticated

def render_auth页面(self、request、response、environ、scopes,客户端:
url=request.path+"?"+request.query_string
response.body=self.template.format(url=url)
return response

def user_has_denied_access(self,request):
return true
return false

创建内存存储以存储客户端应用程序。
client存储=client store()
重定向"uri=["http://localhost/callback"])


站点适配器=示例站点适配器()

=oauth2.tokengenerator.statelesttokengenerator(secret庘key='xxx')
token庘store=tokenstore(stateless)


provider=oauth2.provider(
access庘token庘store=token庘store,
auth庘code庘store=token store,
客户商店=客户商店,
令牌生成器=无状态令牌


刷新令牌功能并将访问令牌的过期时间设置为30天
provider.add_grant(oauth2.grant.refreshttoken(expires_))

app)
httpd.serve_Forever()
```

此示例仅显示如何实例化服务器。
由于缺少客户端应用程序,它不是一个有效的示例。
查看[示例](docs/examples/)目录。

或运行此示例:

``bash
pythondocs/examples/stateless_client_server.py
```

这已经是一个可行的示例。它们可以在没有数据库的情况下工作,因为OAuth令牌已经包含了所有必要的信息,如用户ID、授权类型、数据、作用域和客户端ID。
如果您想检查用户状态,如禁止、禁用等。
您可以从数据库的服务器站点上检查此参数。通过将此检查添加到
/api/me或重新定义oauth2.tokengenerator并添加特定逻辑。



这些存储后端是现成的:

-mongodb
-mysql
-redis
-memcached
-dynamodb


您可以轻松地添加后端实现。
还可以混合不同的后端,例如从MongoDB读取客户端的数据,同时将所有令牌保存在Memcached中以便快速访问。

查看项目。



OAuth2 stateless不定义如何识别用户或显示确认对话框。
相反,您的应用程序应该使用由"oauth2.web.siteadapter"定义的API。




[<;img alt="darkanthey" src="https://avatars2.githubusercontent.com/u/200977?v=3&s=117"width="117">;](https://github.com/darkanthey)
:——:
[darkanthey](https://github.com/darkanthey)

[build badge]:https://travis-ci.org/darkanthey/oauth2-stateless.svg?branch=master
[构建]:https://travis-ci.org/darkanthey/oauth2-stateless.svg?branch=master
[许可证徽章]:https://img.shields.io/badge/license-mit-blue.svg?style=flat
[许可证]:https://github.com/darkanthey/oauth2 stateless/blob/master/license



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

推荐PyPI第三方库


热门话题
Docker&SeleniumJava:无法在Docker容器上运行的chrome浏览器中上载图像/文件   在python中运行java命令   Java垃圾收集器异常行为   java java是否根据底层操作系统执行字节码级优化?   java是否可以休眠自定义查询返回映射而不是列表?   java Spring引导RabbitMQ接收器Jackson反序列化到POJO   apache flex在ActionScript3中创建对象相等“HashMap”作为java HashMap   java如何在Eclipse集成中切换JProfiler启动器   缓存JSP页面结果的java最佳实践?   java集成jaxb绑定文件,使用CXF生成基于WSDL的客户端   java为什么在上传操作结束之前,客户端没有检测到HttpServletResponse的PrintWriter内容?   java在接口内创建类和在类内创建接口有什么用   java向文件写入错误Android Studio   java合并多个RealmList并对结果列表排序?   谷歌API视觉java。lang.NoSuchMethodError   java如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?