跳转到主要内容

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

项目描述

Flask Keystone
==============

[![构建状态](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风格的方式提供了对Keystone用户、项目和角色的访问。
在开发过程中,您会发现大多数结构都与flask-login非常相似。

文档
-------------

即将推出

安装
------------
此包可以像安装其他Python包一样安装
1. 克隆此仓库
2. ```python setup.py install```

开始使用Flask Rax Keystone
=======================================

Flask Keystone是一个Flask扩展,以类似`Flask`的方式添加了控制用户和基于角色的访问控制的特性。一旦扩展被安装、初始化和配置,它就暴露了一些标准的Flask结构,以与Keystone用户和应用特定的角色交互。

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

只需在您的`oslo_config`配置文件中添加一些基本配置项,例如

```ini
[keystone_authtoken]
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
admin_password = your_admin_user
auth_version = 2.0
auth_protocol = https
delay_auth_decision = True

[rax_access]
roles = your_keystone_role:your_flask_role
```

初始化扩展
--------------------------

在实例化过程中简单包装应用程序对象
```python
from flask import Flask

from flask_rax_keystone import RaxKeystone

app = RaxKeystone(Flask(__name__))

if __name__ == "__main__": # pragma: nocover
app = create_app(app_name=__name__)
app.run(host="0.0.0.0", port=5000
```

访问应用程序
-------------------------

一旦应用程序实例化,您将自动需要有效的令牌来对所有应用程序请求进行验证。这些令牌应通过 *X-Auth-Token* 头部传递,这与 Openstack 保持一致。

您可以在这里看到这种行为
```bash
~ [ curl -i localhost:5000/
HTTP/1.0 401 UNAUTHORIZED
Content-Type: application/json
Content-Length: 114
WWW-Authenticate: Keystone uri='https://identity.api.rackspacecloud.com'
Server: Werkzeug/0.11.11 Python/3.5.2
Date: Thu, 15 Dec 2016 21:56:53 GMT

{
"code": 401,
"message": "The request you have made requires authentication.",
"title": "Unauthorized"
}

~ [ curl -i localhost:5000/ -H "X-Auth-Token: $A_VALID_TOKEN"
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 63
Server: Werkzeug/0.11.11 Python/3.5.2
Date: Thu, 15 Dec 2016 21:56:43 GMT

{
"message": "Looks like access was successfully granted."
}
```

限制端点
---------------------

一旦我们配置了我们的角色,我们就可以开始限制端点,仅允许具有特定配置角色的用户访问。在下面的示例中,假设已按照本指南“配置扩展”部分中的说明配置了一个“admin”角色。

```python
from flask import Blueprint

blueprint = Blueprint('blueprint', __name__)

@blueprint.route("/test")
@key.requires_role("admin")
def test_endpoint()
return jsonify(message="Looks like access was successfully granted.")
```

现在,您会看到,即使是一个好的令牌,如果没有所需的角色,也会收到一个403响应

```json
{
"code": 403,
"message": "The provided credentials were accepted, but were not sufficient to access this resource.",
"title": "Forbidden"
}
```
在应用程序工厂应用中初始化扩展
--------------------------------------------------------

与所有 flask 扩展一样,它也可以在应用程序工厂设置中通过从其实例化中单独初始化扩展来访问
```python
from flask import Flask

from flask_keystone import Keystone

key = Keystone()

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

return app


if __name__ == "__main__": # pragma: nocover
app = create_app(app_name=__name__)
app.run(host="0.0.0.0", port=5000)
```

Flask Keystone
==============

[![构建状态](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风格的方式提供了对Keystone用户、项目和角色的访问。
在开发过程中,您会发现大多数结构都与flask-login非常相似。

文档
-------------

即将推出

安装
------------
此包可以像安装其他Python包一样安装
1. 克隆此仓库
2. ```python setup.py install```

开始使用Flask Rax Keystone
=======================================

Flask Keystone是一个Flask扩展,以类似`Flask`的方式添加了控制用户和基于角色的访问控制的特性。一旦扩展被安装、初始化和配置,它就暴露了一些标准的Flask结构,以与Keystone用户和应用特定的角色交互。

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

只需在您的`oslo_config`配置文件中添加一些基本配置项,例如

```ini
[keystone_authtoken]
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
admin_password = your_admin_user
auth_version = 2.0
auth_protocol = https
delay_auth_decision = True

[rax_access]
roles = your_keystone_role:your_flask_role
```

初始化扩展
--------------------------

在实例化过程中简单包装应用程序对象
```python
from flask import Flask

from flask_rax_keystone import RaxKeystone

app = RaxKeystone(Flask(__name__))

if __name__ == "__main__": # pragma: nocover
app = create_app(app_name=__name__)
app.run(host="0.0.0.0", port=5000
```

访问应用程序
-------------------------

一旦应用程序实例化,您将自动需要有效的令牌来对所有应用程序请求进行验证。这些令牌应通过 *X-Auth-Token* 头部传递,这与 Openstack 保持一致。

您可以在这里看到这种行为
```bash
~ [ curl -i localhost:5000/
HTTP/1.0 401 UNAUTHORIZED
Content-Type: application/json
Content-Length: 114
WWW-Authenticate: Keystone uri='https://identity.api.rackspacecloud.com'
Server: Werkzeug/0.11.11 Python/3.5.2
Date: Thu, 15 Dec 2016 21:56:53 GMT

{
"code": 401,
"message": "The request you have made requires authentication.",
"title": "Unauthorized"
}

~ [ curl -i localhost:5000/ -H "X-Auth-Token: $A_VALID_TOKEN"
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 63
Server: Werkzeug/0.11.11 Python/3.5.2
Date: Thu, 15 Dec 2016 21:56:43 GMT

{
"message": "Looks like access was successfully granted."
}
```

限制端点
---------------------

一旦我们配置了我们的角色,我们就可以开始限制端点,仅允许具有特定配置角色的用户访问。在下面的示例中,假设已按照本指南“配置扩展”部分中的说明配置了一个“admin”角色。

```python
from flask import Blueprint

blueprint = Blueprint('blueprint', __name__)

@blueprint.route("/test")
@key.requires_role("admin")
def test_endpoint()
return jsonify(message="Looks like access was successfully granted.")
```

现在,您会看到,即使是一个好的令牌,如果没有所需的角色,也会收到一个403响应

```json
{
"code": 403,
"message": "The provided credentials were accepted, but were not sufficient to access this resource.",
"title": "Forbidden"
}
```
在应用程序工厂应用中初始化扩展
--------------------------------------------------------

与所有 flask 扩展一样,它也可以在应用程序工厂设置中通过从其实例化中单独初始化扩展来访问
```python
from flask import Flask

from flask_keystone import Keystone

key = Keystone()

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

return app


if __name__ == "__main__": # pragma: nocover
app = create_app(app_name=__name__)
app.run(host="0.0.0.0", port=5000)
```


项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源分发

flask_keystone-0.2.tar.gz (13.2 kB 查看散列)

上传时间

构建分发

flask_keystone-0.2-py3-none-any.whl (18.6 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面