keystone v3接口下,域管理员、项目管理员简单的判断方式

来源:互联网 发布:wifi信号与网络延时 编辑:程序博客网 时间:2024/06/08 13:22

简单介绍

    keystone提供了v3接口,包含了域(domain),项目的概念,域、项目都有角色的划分。

假设具有"admin"角色的用户是管理员,则本文提供了简单的用户管理员判断的方式

项目下申请token的方式

# 项目管理申请token方式
curl -X 'POST' -H "Content-type: application/json" http://localhost:35357/v3/auth/tokens   -d  '{  
    "auth": {  
        "identity": {  
            "methods": [  
                "password"  
            ],  
            "password": {  
                "user": {  
                        "domain":{  
                                "name":"default"  
                        },  
                        "name": "admin",  
                        "password": "admin-pwd"  
                }  
            }  
        },  
        "scope": {  
            "project": {  
                "domain":{  
                        "name":"default"  
                },  
                "name": "admin"  
            }  
        }  
    }  
 } '

域申请token方式

# 域申请token方式
curl -X 'POST' -H "Content-type: application/json" http://localhost:35357/v3/auth/tokens   -d  '{  
    "auth": {  
        "identity": {  
            "methods": [  
                "password"  
            ],  
            "password": {  
                "user": {  
                        "domain":{  
                                "name":"default"  
                        },  
                        "name": "admin",  
                        "password": "admin-pwd"  
                }  
            }  
        },  
        "scope": {  
            "domain": {"name":"default"}  
        }  
    }  
 } '

token消息返回体

其返回body体带有角色信息, 包含一个role信息,示例如下:

{
    "token": {
        "is_domain": false,
        "methods": ["password"],
        "roles": [{
            "id": "5be5497493fb4945bed88b251b45d229",
            "name": "heat_stack_owner"
        },
        {
            "id": "9fe2ff9ee4384b1894a90878d3e92bab",
            "name": "_member_"
        },
        {
            "id": "a80b25283631487e854d64780750655e",
            "name": "admin"
        }],
        "expires_at": "2017-08-24T13:32:22.000000Z",
        "project": {
            "domain": {
                "id": "default",
                "name": "Default"
            },
            "id": "9c5b936c873b498c8d7f912a4018fcbb",
            "name": "admin"
        },
        "catalog": [],
        "user": {
            "password_expires_at": null,
            "domain": {
                "id": "default",
                "name": "Default"
            },
            "id": "ee2b93d6cd7040049e4509fa0265494e",
            "name": "admin"
        },
        "audit_ids": ["JxqNxl-8QeeVLP9jOXnlVg"],
        "issued_at": "2017-08-24T05:32:22.000000Z"
    }
}

角色判断依据

通过role可以判断该用户的角色

1、通过"项目管理申请token方式"获取到的role

     如果是"admin",则是项目管理员

 2、通过"域申请token方式"获取到的role

    如果 域是"default",role 是"admin",则是 "系统管理员"

    如果 域不是"default",role 是"admin",则是 "域管理员"

   如果返回401错误,则该用户在该域下没有任何角色,没有任何操作权限


原创粉丝点击