Keystone 用户认证

Keystone 用户认证

 

1、keystone简介

 

 

keystone的认证,因为版本原因,同样也分为version 2与version 3,并且version2与3分属不同模块(下述所指模块均基于keystone),version2的代码集中于keystone.token模块,version3的代码集中于keystone.auth模块。

keystone各部件的代码组成主要包括routers、controllers、core、backends(包括sql、kvs等),其中routers主要负责url与action映射,core负责manager api的操作,通俗来讲就是为controller提供api接口,为backends各种后端驱动封装接口,是一种适配器的功能,backends主要提供各种后端存储等操作。

认证的路径URL分别如下:

version2:/tokens对应操作:authenticate

/tokens/revoked对应操作:revocation_list

/tokens/{token_id} 对应validation_token,validate_token_head,delete_token

/tokens/{token_id}/endpoints 对应操作:token_controller

/certificates/ca对应操作ca_cert

/certificates/signing对应操作signing_cert

version3: /auth/tokens

对应操作:validate_token,checl_token,authenticate_for_token,revoke_token

/auth/tokens/OS-PKI/revoked

对应操作:revocation_list

/auth/catalog

对应操作:get_auth_catalog

/auth/domains

对应操作:get_auth_domains

 

上述URL定义以及对应操作的映射分别在keystone.auth.routers和Keystone.token.routers,所映射的操作分别在keystone.auth.controllers和keystone.token.controllers.

其中,auth部件,主要负责各种认证,token部件负责是token的认证,持久化等操作,所以才有了auth与token功能交叉的部分,也就是V2与V3在token认证上的差异.

 

2、keystone认证

 

keystone默认配置的认证方法主要有external、password、token、oauth1.

而auth.plugins中目前支持的增加了saml2,也就是liberty版本中的WEBSSO.

下面我们讨论的主要包括password、token、以及external,在对单个认证方式分析时,会同时分析v2与v3的差异。

V3中涉及的概念:project,domain,group,user,trust等,其中domain管理project,group,group管理user,因此,在检测group是否enabled的时候,需要首先检测其所归属集合是否enabled,这个编程涉及思路贯彻始终。

接下来,我们首先介绍version 3的认证流程。

 

2.1 keystone v3认证

 

处理函数:authenticate_for_token

def anthenticate_for_token(self, context, auth=None):

# context就是上下环境,auth是输入的字典

# auth的类型有如下几种,这些都是来至官网,对照代码理解无误,请放心!

第一种是username 配合password,因为username不是主键,所以要搭domain,domain可以id或者name方式

{    "auth":

{        "identity": {            "methods": [                "password"            ],            "password": {                "user": {                    "domain": {                        "name": "example.com"                    },                    "name": "Joe",                    "password": "secretsecret"                }            }        }    }}

第二种是username 配合password domain id

{    "auth": {        "identity": {            "methods": [                "password"            ],            "password": {                "user": {                    "domain": {                        "id": "1789d1"                    },           

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值