1. OpenLDAP的安装

只记录主要步骤,详细可参考

https://access.redhat.com/solutions/2484371

# yum install -y openldap openldap-clients openldap-servers

[root@rhel7 ~]# cd /etc/openldap/slapd.d/
[root@rhel7 slapd.d]# ls -l
drwxr-x---. ldap ldap Aug : cn=config
-rw-------. ldap ldap Aug : cn=config.ldif
[root@rhel7 slapd.d]# cd cn\=config
[root@rhel7 cn=config]# ls -l
drwxr-x---. ldap ldap Aug : cn=schema
-rw-------. ldap ldap Aug : cn=schema.ldif
-rw-------. ldap ldap Aug : olcDatabase={}config.ldif
-rw-------. ldap ldap Aug : olcDatabase={-}frontend.ldif
-rw-------. ldap ldap Aug : olcDatabase={}monitor.ldif
drwxr-x---. ldap ldap Aug : olcDatabase={}hdb.ldif [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcSuffix: dc=mydomain,dc=com [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: redhat [root@rhel7 cn=config]# vi olcDatabase\=\{\}config.ldif
olcRootDN: cn=config
olcRootPW: secret [root@rhel7 cn=config]# slaptest -u
config file testing succeeded

启动

# systemctl start slapd

插入主要的schema(/etc/openldap/schema)

[root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=cosine,cn=schema,cn=config" [root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=inetorgperson,cn=schema,cn=config"

加入用户和组的信息

$ cat base.ldif
dn: dc=mydomain,dc=com
objectClass: dcObject
objectClass: organization
o: mydomain.com dn: ou=users,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users dn: ou=groups,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f base.ldif
adding new entry "dc=mydomain,dc=com" adding new entry "ou=users,dc=mydomain,dc=com" adding new entry "ou=groups,dc=mydomain,dc=com"

加入用户信息

设置密码

slappasswd -s welcome1
[root@node2 ~]# cat users.ldif
dn: cn=admin,ou=users,dc=mydomain,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: admin
sn: admin
displayName: admin
mail: admin@mydomain.com
userPassword: {SSHA}KX9+kEHfc/ywaGlZTF3ZsqSecbARs9Yp
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f users.ldif
adding new entry "cn=admin,ou=users,dc=mydomain,dc=com"

再加一个

[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"

基于search可以全部列出

ldapsearch -x -D 'cn=Manager,dc=mydomain,dc=com' -b dc=mydomain,dc=com -w redhat

2.OpenShift和LDAP集成

  • 修改master的配置文件

/etc/origin/master/master-config.yaml


主要是oauth部分,我把完整的贴上来

oauthConfig:
assetPublicURL: https://master.example.com:8443/console/
grantConfig:
method: auto
identityProviders:
- challenge: true
login: true
mappingMethod: claim
name: my_ldap_provider
provider:
apiVersion: v1
attributes:
email:
- mail
id:
- dn
name:
- cn
preferredUsername:
- uid
bindDN: ''
bindPassword: ''
ca: ''
insecure: true
kind: LDAPPasswordIdentityProvider
url: ldap://192.168.56.105:389/ou=users,dc=mydomain,dc=com?cn
masterCA: ca-bundle.crt
masterPublicURL: https://master.example.com:8443
masterURL: https://master.example.com:8443
sessionConfig:
sessionMaxAgeSeconds:
sessionName: ssn
sessionSecretsFile: /etc/origin/master/session-secrets.yaml
tokenConfig:
accessTokenMaxAgeSeconds:
authorizeTokenMaxAgeSeconds:
  • 修改后重启master
# master-restart api
# master-restart controllers

注意点如下:

  • 只修改identityProviders部分,其他的不要修改,我不小心一个删除,然后定位了一下午才知道错误在哪里
  • 不需要bindDN和bindPassword,虽然在LDAP录入的时候需要Manager的密码,但这里完全不需要。

3.如何定位问题

  • 打开log level设置,缺省为2,最高为8,各级别如下
[root@master ~]# cat /etc/origin/master/master.env 

# Proxy configuration
# See https://docs.openshift.com/container-platform/latest/install_config/http_proxies.html#configuring-hosts-for-proxies-using-ansible DEBUG_LOGLEVEL=

  • 基于命令master-logs查看
/usr/local/bin/master-logs api api

当然也有

# /usr/local/bin/master-logs controllers controllers
# /usr/local/bin/master-logs api api
# /usr/local/bin/master-logs etcd etcd

没有错误后,发现ldap用户登录成功,可以用oc get users进行验证一下

[root@master ~]# oc get users
NAME UID FULL NAME IDENTITIES
admin c746e175-f46f-11e8-ba5a-080027dc991a htpasswd_auth:admin
alice 0b722de4-f7b9-11e8-88eb-080027dc991a alice my_ldap_provider:cn=alice,ou=users,dc=mydomain,dc=com
cn=eric,ou=users,dc=mydomain,dc=com 03ae746c-f7b9-11e8-88eb-080027dc991a eric my_ldap_provider:cn=eric,ou=users,dc=mydomain,dc=com
tom 4c9a87fd-f7b9-11e8-88eb-080027dc991a tom my_ldap_provider:cn=tom,ou=users,dc=mydomain,dc=com

显示格式有问题,看这个图

为什么NAME字段eric有一堆的后缀,查了一下ldif文件,发现eric没有定义uid, 删除重新加

[root@node2 ~]# ldapdelete  -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat "cn=eric,ou=users,dc=mydomain,dc=com"
[root@node2 ~]# vi eric.ldif
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"

同步时间太长了。

4.LDAP组的同步

现在LDAP中插入组,方法和插入用户一致

[root@node2 ~]# cat group.ldif
dn: cn=admins,ou=groups,dc=mydomain,dc=com
objectClass: groupOfNames
cn: admins
owner: cn=Manager,dc=mydomain,dc=com
member: cn=eric,ou=users,dc=mydomain,dc=com

写一个执行同步的yaml文件

kind: LDAPSyncConfig
apiVersion: v1
url: ldap://192.168.56.105:389
insecure: true
rfc2307:
groupsQuery:
baseDN: "ou=groups,dc=mydomain,dc=com"
scope: sub
derefAliases: never
filter: (objectclass=groupOfNames)
groupUIDAttribute: dn
groupNameAttributes: [ cn ]
groupMembershipAttributes: [ member ]
usersQuery:
baseDN: "ou=users,dc=mydomain,dc=com"
scope: sub
derefAliases: never
pageSize:
userUIDAttribute: dn
userNameAttributes: [ dn ]
tolerateMemberNotFoundErrors: true
tolerateMemberOutOfScopeErrors: true

运行及验证

[root@master ~]# oc adm  groups sync --sync-config=groups.yaml --confirm
group/admins
[root@master ~]# oc get groups
NAME USERS
admins cn=eric,ou=users,dc=mydomain,dc=com

授权LDAP用户 alice为集群管理员

[root@master ~]# oc adm policy add-cluster-role-to-user cluster-admin alice
cluster role "cluster-admin" added: "alice"

alice登录后也能看到admin能看到的所有的项目了。

Openshift 3.11和LDAP的集成的更多相关文章

  1. python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

    11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...

  2. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

    http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...

  3. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...

  4. openshift 3.11安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  5. openshift 3.11 安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  6. Istio在Openshift 3.11的安装

    详细安装步骤及解释参考 https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-insta ...

  7. OpenShift 3.11离线环境的jenkins演示

    离线安装完成后,一般情况下只装了个基础环境,catalog镜像没有导入,本文主要侧重在jenkins的一些环境设置和演示. 1.导入镜像 首先follow下面链接下载镜像 https://docs.o ...

  8. SonarQube配置LDAP认证集成

    1.准备工作 获取LDAP服务信息.admin账号.安装sonarldap插件. 2.LDAP配置 #LDAP settings #admin sonar.security.realm=LDAP ld ...

  9. [SharePoint2010开发入门经典]11、与Office集成

    本章概要: 1.创建office集成解决方案使用代码或非代码形式 2.使用内容类型作为能映射到文档库的文档 3.使用InfoPath管理表单 4.使用工作流管理业务流程 5.使用office2010服 ...

随机推荐

  1. java中Property类的基本用法

    1 配置.properties文件 2 获取输入流的方法 1)FileInputStream fi = new FileInputStream(properties文件路径); 2)InputStre ...

  2. 【51nod】1239 欧拉函数之和

    题解 写完上一道就开始写这个,大体上就是代码改了改而已= = 好吧,再推一下式子! \(\sum_{i = 1}^{n}i = \sum_{i = 1}^{n}\sum_{d | i}\phi(d) ...

  3. Java 中的静态嵌套类和非静态嵌套类

    Java 中的静态嵌套类和非静态嵌套类 术语:嵌套类分为两类:静态嵌套类和非静态嵌套类.声明 static 的嵌套类称为静态嵌套类,非静态嵌套类也称为内部类. class OuterClass { p ...

  4. fastadmin iframe 表单提交之后跳转

    controller 对应的那个js文件中添加: define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function($, und ...

  5. ref:Spring Integration Zip 不安全解压(CVE-2018-1261)漏洞分析

    ref:https://mp.weixin.qq.com/s/SJPXdZWNKypvWmL-roIE0Q 0x00 漏洞概览 漏洞名称:Spring Integration Zip不安全解压 漏洞编 ...

  6. 洛谷P2507 [SCOI2008]配对 [DP,贪心]

    题目传送门 配对 题目描述 你有 n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一个Bp[i].要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对.例如A={5,6 ...

  7. pycharm的安装教程及大坑

    在根据网上的教程创建新工程后,发现不能调用第三方库,网上大多给的是print('hello world'),己适python解释器用的pycharm默认的也不能发现错误.后来浏览了一篇文章才恍然大悟, ...

  8. 【我要学python】函数的系统学习

    我的短期目标:python+CTF reverse 一起加油! #1,函数介绍 1,功能性 函数目的 2,隐藏性 (封装) (避免写重复代码) 例: #round为保留小数的函数 a = 3.1415 ...

  9. JSP中常用JSTL用法

    使用标签时,需要在jsp文件头加入以下代码: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/cor ...

  10. codevs 1214 线段覆盖

    1214 线段覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold   题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段 ...