1.概述
OpenShift Origin主站包含一个内置的OAuth服务器。开发人员和管理员可以获取OAuth访问令牌来向API进行身份验证。
当用户需要请求OAuth令牌时,OAuth服务器会使用配置的用户信息管理系统来确认用户的身份,然后确定该用户(用户信息管理系统用户)具体映射到那个用户(OpenShift Origin用户),并为该用户创建一个访问令牌,然后返回该令牌以供使用。
OpenShift Origin提供了不同的适配器连接不同的用户信息管理系统。这些后端的用户信息管理系统在OpenShift中称为Identify Provider。通过配置,OpenShift Origin可以连接到企业常用的用户信息管理系统。如LDAP系统、微软活动目录(Active Directory)等。同时也支持AllowALL、DenyAll、HTPasswd文件,GitHub、Google、Keystone等众多后端。
默认使用AllowALL身份认证,即允许所有用户和密码访问,当通过某个用户登录时,OpenShift会创建一个对应的用户与之映射。这对于测试是很有用。若要使用其他<meta content="text/html; charset=utf-8" http-equiv="Content-Type">用户信息管理系统,可以在安装时提供,或者修改主配置文件,并从主配置文件启动服务器。
2.用户信息管理系统
通过修改主配置文件,使用需要的用户信息管理系统来进行身份验证。以下分别介绍OpenShift Origin支持的身份认证提供者(用户信息管理系统)。
所有身份提供者共有的4个参数:
1)name
提供者名称以提供者用户名作为前缀以形成标识名称。
2)challenge
如果为true,则来自非Web客户端(如CLI)的未经身份验证的令牌请求将被发送一个WWW-Authenticate质询头。不受所有身份提供商的支持。防止针对浏览器客户端的跨站点请求伪造(CSRF)攻击,仅当X-CSRF-Token请求中存在标头时才会发送基本身份验证问题。希望接受基本WWW-Authenticate挑战的客户应将此标题设置为非空值。
3)login
如果为true,则来自Web客户端(如Web控制台)的未经身份验证的令牌请求会重定向到由此提供者支持的登录页面。不受所有身份提供商的支持。如果您希望用户在重定向到身份提供商的登录之前被发送到品牌页面,请在oauthConfig → alwaysShowProviderSelection: true主配置文件中进行设置。该提供者选择页面可以定制。
4)mappingMethod
定义在登录时如何将新身份映射到用户。详细见下一节:将身份映射到用户。
2.1.将身份映射到用户
mappingMethod在主配置文件中设置参数可确定身份如何映射到用户:
...
identityProviders:
- challenge: true
login: true
mappingMethod: claim
name: anypassword
...
设置为默认claim值时,如果身份映射到先前存在的用户名,则OAuth将失败。下面列出了可用mappingMethod参数值的用例:
1)claim
默认值。为用户提供身份的首选用户名。如果具有该用户名的用户已经映射到另一个身份,则失败。
2)lookup
查找现有身份,用户身份映射和用户,但不会自动提供用户或身份。这允许群集管理员手动设置身份和用户,或使用外部进程。使用此方法需要您手动配置用户。使用查找映射方法时,请参阅手动设置用户。
3)generate
为用户提供身份的首选用户名。如果具有首选用户名的用户已经映射到现有标识,则会生成唯一的用户名。例如,myuser2。此方法不应与需要OpenShift Origin用户名和身份提供者用户名(如LDAP组同步)之间的完全匹配的外部进程结合使用。
4)add
为用户提供身份的首选用户名。如果具有该用户名的用户已经存在,则将该身份映射到现有用户,并添加到该用户的任何现有身份映射中。当配置多个身份认证系统来识别同一组用户并映射到相同的用户名时需要。
2.2.Keystone
设置KeystonePasswordIdentityProvider,identityProviders以针对OpenStack Keystone v3服务器验证用户名和密码。这样可以与配置为将用户存储在内部Keystone数据库中的OpenStack服务器进行共享身份验证。
示例:
oauthConfig:
...
identityProviders:
- name: swift_keystone_provider
challenge: true
login: true
mappingMethod: claim
provider:
apiVersion: v1
kind: KeystonePasswordIdentityProvider
domainName: default
url: http://swift.xxxx.org:5000
kind:适配器方式;
domainName:Keystone域,在Keystone中,用户名是基于域的,且只支持一个域;
url:Keystone地址;
2.3.LDAP
待续......
网友评论