此项目包装现有的keystone中间件,以在api中提供礼貌用户功能。

flask-keystone的Python项目详细描述


烧瓶基石[构建状态](https://travis-ci.org/rackspace-dot/flask_keystone.svg?branch=master)(https://travis ci.org/rackspace dot/flask_keystone)[![覆盖状态](https://coveralls.io/repos/github/rackspace-dot/flask_keystone/badge.svg?branch=master)](https://coveralls.io/github/rackspace-dot/flask_keystone?branch=master)

flask keystone是一个flask扩展,它包装了[keystonemiddleware]项目(https://github.com/openstack/keystonemiddleware"keystonemiddleware的github页面"),并以熟悉的flask-y方式提供对keystone
用户、项目和角色的访问。在开发过程中,您会发现大多数构造看起来与flask登录非常相似。

克隆此回购协议
2。``` python setup.py install```

一旦安装、初始化和配置了扩展,它就会公开一些相当标准的flask结构,以便与密钥存储用户和特定于应用程序的角色进行交互。

配置扩展
--------

slo-config`配置文件,如下:

``ini
[keystone-authttoken]
debug=true
log-level=debug
identity-uri=https://identity.api.rackspacecloud.com
auth-uri=https://identity.api.rackspacecloud.com
admin-tenant-name=123456
admin-user=your-admin-user
管理员密码=您的管理员用户
身份验证版本=2.0
身份验证协议=https
延迟身份验证决策=true

[rax\u访问]
角色=您的密钥库角色:您的密钥库角色实例化期间t:
`` python
从烧瓶导入烧瓶

n(host="0.0.0.0",port=5000
```

这些令牌应该在*x-auth-token*头中传递,这与openstack一致。

ri='https://identity.api.rackspacecloud.com'
服务器:werkzeug/0.11.11 python/3.5.2
日期:2016年12月15日星期四21:56:53 GMT

{
"代码":401,
"消息":"您的请求需要身份验证。",
"标题":"未经授权"
}

~[curl-i localhost:5000/-h"x-auth-token:$a_valid_token"
http/1.0 200 ok
内容类型:application/json
内容长度:63
服务器:werkzeug/0.11.11 python/3.5.2
日期:2016年12月15日星期四21:56:43 GMT

{
"消息":"看起来访问被成功授予。"
}
````

---------

配置角色后,我们可以开始限制具有特定配置角色的用户只能访问端点。在下面的示例中,假设已按照本指南的"配置扩展"部分所示配置了"管理员"角色。

``python
from flask import blueprint


blueprint=blueprint('blueprint',\u name\uu)

@blueprint.route("/test")
@key.requires\role("admin")
def test_endpoint():
返回jsonify(message="看起来访问被成功授予")
````

>现在,您将看到,即使是一个好的令牌,当它没有所需的角色时,也将收到403响应:

``json
{
"代码":403,
"消息":"提供的凭据已被接受,但不足以访问此资源。",
"标题":"禁止"
}
````
初始化应用程序工厂应用程序中的扩展ask extension s,它也可以在应用程序工厂设置中访问,方法是:通过初始化与实例化分开的扩展:
``python
from flask import flask


from flask\u keystone import keystone

key=keystone()

def create_app(app_name)
app=flask(app_name)
key.init_app(app)


>returnapp





>如果\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\东北
============

[![构建状态](https://travis-ci.org/rackspace-dot/flask_keystone.svg?branch=master)(https://travis ci.org/rackspace dot/flask_keystone)[![覆盖状态](https://coveralls.io/repos/github/rackspace-dot/flask_keystone/badge.svg?branch=master)](https://coveralls.io/github/rackspace-dot/flask_keystone?branch=master)

flask keystone是一个flask扩展,它包装了[keystonemiddleware]项目(https://github.com/openstack/keystonemiddleware"keystonemiddleware的github页面"),并以熟悉的flask-y方式提供对keystone
用户、项目和角色的访问。在开发过程中,您会发现大多数构造看起来与flask登录非常相似。

克隆此回购协议
2。``` python setup.py install```

一旦安装、初始化和配置了扩展,它就会公开一些相当标准的flask结构,以便与密钥存储用户和特定于应用程序的角色进行交互。

配置扩展
--------

slo-config`配置文件,如下:

``ini
[keystone-authttoken]
debug=true
log-level=debug
identity-uri=https://identity.api.rackspacecloud.com
auth-uri=https://identity.api.rackspacecloud.com
admin-tenant-name=123456
admin-user=your-admin-user
管理员密码=您的管理员用户
身份验证版本=2.0
身份验证协议=https
延迟身份验证决策=true

[rax\u访问]
角色=您的密钥库角色:您的密钥库角色实例化期间t:
`` python
从烧瓶导入烧瓶

n(host="0.0.0.0",port=5000
```

这些令牌应该在*x-auth-token*头中传递,这与openstack一致。

-类型:application/json
内容长度:114
www authenticate:keystone uri='https://identity.api.rackspacecloud.com'
服务器:werkzeug/0.11.11 python/3.5.2
日期:2016年12月15日星期四21:56:53 GMT

{
"代码":401,
"消息":"您提出的请求需要身份验证。",
"标题":"未经授权"
}

~[curl-i localhost:5000/-h"x-auth-auth-token:$a_valid\u token"
http/1.0 200 ok
content type:application/json
content len长:63
server:werkzeug/0.11.11 python/3.5.2
date:thu,2016年12月15日,2016年12月15日21:56:43 gmt

{
"消息":"看起来访问被成功授予。"



`
`
`



/>/>-——————————————————————————————————————————————————————————————————————————————————————在下面的示例中,假设已按照本指南的"配置扩展"部分中所示配置了"admin"角色。

``python
from flask import blueprint


@blueprint.route("/test")
@key.requires\role("admin")
def test\u endpoint():
return jsonify(message="似乎已成功授予访问权限。")
```

现在,您将看到,即使是一个好的令牌,当它没有所需的角色时,也将收到403响应:

``json
{
"代码":403,
"消息":"提供的凭据已被接受,但不足以访问此资源。",
"title":"forbidden"
}
```
在应用程序工厂应用程序中初始化扩展程序
——/>从烧瓶进口烧瓶





>key=keystone()



>def create_app(app_-name):
>app=烧瓶(app_-name)
>key.init_app(app)app(app)app(app)







>从烧瓶进口烧瓶进口烧瓶:nocover

应用程序运行(host="0.0.0.0",port=5000)
````



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

推荐PyPI第三方库


热门话题
java如何将长字符串转换为短得多的字符串   java类型ArrayList<Boolean>中的toArray(T[])方法不适用于参数(Boolean[])   java xfire webservice客户端获取空响应   java软件框架和软件平台有什么区别?   java构建了一个监听数据库更改并调用其他方法的软件。我做得对吗?   安卓 studio(java)中的Paypal:与服务器通信的问题   我们如何在运行时更改java提供的内置注释的消息   java成批进行http调用   序列化   当我使用Tomcat运行我的应用程序时,我得到了java。网MalformedURLException:本地主机名未知:java。网未知后异常   操作系统Java内存映射文件和刷新   java无法用v6构建JXBrowser jar。18+   java有没有办法从运行在同一台服务器上的代码中获取服务器指纹?   使用“代理”用户的java Spring Active Directory身份验证   在Android(Kotlin/Java)活动之间发送图像   java显示ArrayList对象?