# 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 平级

```bash
  - 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-AD.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rDgwtrLKHvcqSk%2Fopenshift-AD.png?generation=1569343173865464\&alt=media)

参数解读:（不能完全套用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都要做

```bash
# 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 .
```

## 登入测试

登陆页面选Active\_Directory\_auth ![openshift-AD-login1.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rGm7efQltzYz7u%2Fopenshift-AD-login1.png?generation=1569343173722898\&alt=media)

输入可用的AD用户密码 test1 XXXXXX 注意用户后面不要带域名 ![openshift-AD-login2.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rKxwFGHSHQJYFV%2Fopenshift-AD-login2.png?generation=1569343173512993\&alt=media)

因为登陆是使用的这个参数 sAMAccountName 在ldaoadmin工具中可以看到，这个参数就是用户名，不带后面的域名 ![openshift-AD-login3.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rMF8ypASxrKKNC%2Fopenshift-AD-login3.png?generation=1569343173753821\&alt=media)

登陆成功，接入ad只确保了用户能够登陆openshift，权限需要在openshift中配置 ![openshift-AD-login-ok.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rOdklGXO3PeBgE%2Fopenshift-AD-login-ok.png?generation=1569343173736655\&alt=media)

登陆成功后，在后台 oc get user 能看到用户，来源于ad ![openshift-AD-user1.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rQc-0sHV0C5rTr%2Fopenshift-AD-user1.png?generation=1569343173868882\&alt=media)

问题1: 如果改了master-config里的配置信息导致登陆不了或者提示"could not create user"，后台把ad的用户删一下试试 ![openshift-AD-user2.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rShvDwF7VGoedt%2Fopenshift-AD-user2.png?generation=1569343173544000\&alt=media) oc delete user CN=caifeng11,DC=botest,DC=com

## 权限设置

通过管理员把test1 添加到 当前project 先输入用户名 test1 再选择权限admin或者view， 点add 完成后点Done Editing ![openshift-AD-user-access1.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rUwXhww3sHMhTq%2Fopenshift-AD-user-access1.png?generation=1569343173647792\&alt=media)

换成test1 登陆，可以看到赋权的project ![openshift-AD-user-access2.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rW868YQIbULRVY%2Fopenshift-AD-user-access2.png?generation=1569343173800640\&alt=media)

问题2： 如果加了权限后，登陆后看不到project 后台oc get user 看下登陆的用户名称是否正常 应该是test1 这样，不应该是CN=caifeng11,DC=botest,DC=com 这种 ![openshift-AD-user1.png](https://1058386515-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDervEOwTvx5D-716B0%2F-LpZ84vERbo2skv74DzH%2F-LpZ85rYE6gwtfJdTGzv%2Fopenshift-AD-user1.png?generation=1569343536431788\&alt=media)

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

*   sAMAccountName

    preferredUsername:
* sAMAccountName
