一、Ldap用户认证集成¶
1.1 安装Ldap服务 & 安装Ldap控制台¶
1.1.1 通过docker安装¶
1.1.2 Quick start¶
start.sh
#!/bin/bash -e
docker run -p 389:389 -p 636:636 --name ldap-service --hostname ldap-service --detach osixia/openldap:1.4.0
docker run --name phpldapadmin-service --hostname phpldapadmin-service -p 6443:443 --link ldap-service:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:0.9.0
PHPLDAP_IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" phpldapadmin-service)
echo "Go to: https://$PHPLDAP_IP"
echo "Login DN: cn=admin,dc=example,dc=org"
source start.sh
Go to: https://172.17.0.5
Login DN: cn=admin,dc=example,dc=org
Password: admin
- https://192.168.33.11:6443/
$ curl --insecure -I https://172.17.0.5
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 17:09:45 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Cache-control: private
Set-Cookie: 5d89dac18813e15aa2f75788275e3588=lnfqfhbuvl0lqsgfmee2mqvhho; path=/
Strict-Transport-Security: max-age=15768000
Upgrade: h2,h2c
Connection: Upgrade
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: User-Agent
Content-Type: text/html; charset="UTF-8"
$ curl ldap://192.168.33.11:389
DN:
objectClass: top
objectClass: OpenLDAProotDSE
1.2 创建OU组织用户数据¶
1.2.1 创建OU¶
选择Organisational unit 组织单元

输入OU名称(jenkins)

提交信息

1.2.2 创建人员¶
- 选择
OU->选择新建子条目

选择默认模板

选择inetorgperson

填写并提交信息

- user: test01
- password: 12345

用户创建完成

1.2.3 Jenkins集成Ldap¶
1.2.4 先决条件¶
1、备一个adminDN账号用于查询用户。 cn=admin,dc=example,dc=org
2、将访问Jenkins的用户放到一个OU中。 ou=jenkins,dc=example,dc=org
3、提供ldap服务器地址。 ldap://192.168.33.11:389
1.2.5 Jenkins配置¶
- 安装ldap插件
- 全局安全配置
http://192.168.33.11:8080/configureSecurity/

选择账号测试,出现一下信息集成完毕
- user: test01
- password: 12345

重新登录

role-strategy/assign-roles
Assign 新的 Roles 例如 admin

二、Jenkins集成Gitlab SSO单点登录¶
2.1 Gitlab安装¶
2.1.1 安装Gitlab¶
1、在 Kubernetes 上安装 Gitlab (New)
2.1.2 改变gitlab service from ClusterIP to nodePort¶
...
---
apiVersion: v1
kind: Service
metadata:
name: gitlab
namespace: kube-ops
labels:
name: gitlab
spec:
ports:
- name: http
port: 80
targetPort: http
nodePort: 30088
- name: ssh
port: 22
targetPort: ssh
nodePort: 30022
type: NodePort
selector:
name: gitlab
curl from vm machine
$ curl http://192.168.33.1:30088
<html><body>You are being <a href="http://192.168.33.1:30088/users/sign_in">redirected</a>.</body></html>
登录
- root
- admin321
2.2 Gitlab配置¶
- 安装
Jenkins Gitlab Authentication插件 - 应用管理->创建应用->配置重定向url
- Application

- Callback URL: http://192.168.33.11:8080/securityRealm/finishLogin
- Application ID: 33895718cb9554a8525d06b357ad54dfaa7f5de1ec6867bad98a6fa77e7fd506
- secret: cb06c366988e88a0c0328d5a9c0f8add3b803032b5c93943b8e2cfa61963cbc2
- http://192.168.33.11:8080/securityRealm/finishLogin
2.3 Jenkins配置¶
2.3.1 Configure Global Security¶

2.3.2 configuration¶
Jenkins Location

2.3.3 重新登录¶
最后实现的效果是用户在gitlab登录之后,输入jenkins域名会直接进入jenkins。

2chap6_gitlab.md
三、Jenkins集成Github SSO单点登录¶
3.1 Github配置¶
- 安装插件
GitHub Authentication plugin Settings -> devloper settings -> OAuth Apps -> Register a new OAuth application

http://192.168.33.11:8080/securityRealm/finishLoginhttp://192.168.33.11:8080/

3.2 Jenkins配置¶
3.2.1 Configure Global Security¶

3.2.2 重新登录¶
最后实现的效果是用户在github登录之后,输入jenkins域名会直接进入jenkins。


