2019-09-24-openshift 对接AD域作为用户系统

配置openshift使用AD域控作为用户登入。AD使用的也是ldap协议,在配置上稍有差异,本文主要对配置及使用中遇到的问题做了一些记录。

准备工作

  1. openshift集群,测试过3.9和3.11

  2. AD域的地址,端口,bindDN,bindPassword

openshift 修改配置文件

修改每个master节点下/etc/origin/master/master-config.yaml (修改前先备份) 添加Active_Directory_auth 与原来htpasswd_auth 平级

  - name: "Active_Directory_auth"
    challenge: true
    login: true
    mappingMethod: claim
    provider:
      apiVersion: v1
      kind: LDAPPasswordIdentityProvider
      attributes:
        id:
        - sAMAccountName
        email:
        - mail
        name:
        - cn
        preferredUsername:
        - sAMAccountName
      bindDN: "caifeng@botest.com"
      bindPassword: "XXXXX#cai111"
      insecure: true
      url: "ldap://botest.com:389/dc=botest,dc=com?sAMAccountName?one?(&(objectClass=user))"

参数解读:(不能完全套用openshift对接ldap的参数,有几处不一样) name: "Active_Directory_auth" 这个是在登陆页面展示的名字,可自定义 kind: LDAPPasswordIdentityProvider ad也是用的ldap协议 id: preferredUsername: 此处和ldap不一样,不能写uid,写uid会导致无法在openshift页面添加用户 bindDN: caifeng@botest.com 这是申请的ad用户密码,普通用户应该就可以 bindPassword: "xxxxx#cai111" url: "ldap://botest.com:389/dc=botest,dc=com?sAMAccountName?one?(&(objectClass=user))" botest.com 是ad域的地址,389是端口 dc=botest,dc=com 域控制器的地址,如果要精准到组下面,前面还可以加ou= sAMAccountName 这个是ad中的用户名属性,如果是ldap此处就是uid objectClass=user 是检索条件,只查找用户

重启api服务,每个master都要做

# openshift 3.9
systemctl daemon-reload
systemctl restart atomic-openshift-master-api

# openshift 3.11, 因为3.11的api服务使用容器启动
cd /etc/origin/node/pods/
mv apiserver.yaml /tmp/
mv /tmp/apiserver.yaml .

登入测试

权限设置

如果是CN=caifeng11,DC=botest,DC=com 修改master-config ,修改 id:

  • sAMAccountName

    preferredUsername:

  • sAMAccountName

Last updated