一、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 组织单元

Alt Image Text

输入OU名称(jenkins)

Alt Image Text

提交信息

Alt Image Text

1.2.2 创建人员

  • 选择OU->选择新建子条目

Alt Image Text

选择默认模板

Alt Image Text

选择inetorgperson

Alt Image Text

填写并提交信息

Alt Image Text

  • user: test01
  • password: 12345

Alt Image Text

用户创建完成

Alt Image Text

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/

Alt Image Text

选择账号测试,出现一下信息集成完毕

  • user: test01
  • password: 12345

Alt Image Text

重新登录

Alt Image Text

role-strategy/assign-roles

Assign 新的 Roles 例如 admin

Alt Image Text

二、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

Alt Image Text

  • 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

Alt Image Text

2.3.2 configuration

Jenkins Location

Alt Image Text

2.3.3 重新登录

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

Alt Image Text

Alt Image Text 2chap6_gitlab.md

三、Jenkins集成Github SSO单点登录

3.1 Github配置

  • 安装插件GitHub Authentication plugin
  • Settings -> devloper settings -> OAuth Apps -> Register a new OAuth application

Alt Image Text

  • http://192.168.33.11:8080/securityRealm/finishLogin
  • http://192.168.33.11:8080/

Alt Image Text

3.2 Jenkins配置

3.2.1 Configure Global Security

Alt Image Text

3.2.2 重新登录

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

Alt Image Text

Alt Image Text

Alt Image Text