OpenShift 4 之增加 HTPasswd 方式的身份认证
OpenShift的认证机制
OpenShift是通过OAuth实现用户身份认证的。通过以下Identity Provider,OpenShift 4支持多种用户身份认证方式:
- HTPasswd(HTPasswd是一种最简单的用户身份存储认证机制,它直接将用户名和经过加密的密码直接放在文本文件中)。
- Keystone
- LDAP
- Basic authentication
- Request header
- GitHub or GitHub Enterprise
- GitLab
- OpenID Connect
增加HTPasswd Identity Provider
在安装好OpenShift 4后我们可以用“管理员”用户登录,然后进入控制台。
如果OpenShift已经有还没有配置HTPasswd方式的Identity Provider,可以使用以下方式添加。
- 创建一个定义HTPasswd Identity Provider的Custom Resource文件。其中HTPasswd Identity Provider的名称为“my_htpasswd_provider”,OAuth用名为“htpass-secret”的Secret验证用户名和密码(在后面章节中将创建“users.htpasswd”文件,然后再加载到htpass-secret中)。
$ cat htpassed-cr.yaml
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: my_htpasswd_provider
challenge: true
login: true
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret
- 根据htpassed-cr.yaml文件创建名为my_htpasswd_provider的HTPasswd Identity Provider。
oc apply -f htpassed-cr.yaml
在HTPasswd机制文件中创建用户
- 安装httpd-tools
$ yum install httpd-tools
- 将用户admin/密码admin写入“users.htpasswd”文件。
$ htpasswd -c -B -b users.htpasswd admin admin
- 可以查看users.htpasswd内容,admin的密码已经被加密。
$ cat users.htpasswd
加载users.htpasswd数据到Secret对象
OpenShift是使用Secret对象保存加密数据的,因此我们需要把users.htpasswd文件中的用户和密码加载到Secret对象中,这样my_htpasswd_provider就可以使用它们进行身份认证了。
- 将users.htpasswd加载到名为htpass-secret的secret对象。
$ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd -n openshift-config
- 还可登录到OpenShift Console,进入openshift-config项目,然后找到htpass-secret,可以查看其加载的用户信息。
验证
最后用admin/admin登录验证即可。
oc login -u admin -p admin
其他参考
如果OpenShift已经有HTPasswd Identity Provider和Secret了,可以参考《OpenShift 4 之增加用户》追加新用户。