1. 程式人生 > >cas系列(五)--CAS+OpenLDAP實現SSO

cas系列(五)--CAS+OpenLDAP實現SSO

一、概述

本來主要詳細是介紹CAS和LDAP整合實現單點登入的步驟。

二、詳細步驟

安裝配置,新增部分測試資料如下:


3.CAS整合LDAP的配置

如果是Mave構建專案的,新增LDAP的相關依賴:

<dependency>
     <groupId>org.jasig.cas</groupId>
     <artifactId>cas-server-support-ldap</artifactId>
     <version>${cas.version}</version>
</dependency>

<!--
   僅僅在使用到連線池時新增該依賴
  <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>${apache.commons.pool.version}</version>
  </dependency>
-->
ps:也可以在官網下載的釋出包的目錄 modules/ 下找到類似cas-server-support-ldap-3.4.11.jar 的包。

LDAP認證配置有兩種

第一種:FastBindLdapAuthenticationHandler

這種認證處理器一般用於DN是由使用者名稱直接組成的,比如:uid=%u,ou=dev,dc=micmiu.com,dc=com ,其中 %u 就是CAS登入的使用者名稱。

修改web的配置檔案 WEB-INF\deployerConfigContext.xml:

首先在<beans>跟節點下增加bean:ContextSource 的配置:

  <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
     <property name="pooled" value="false"/>
     <property name="url" value="ldap://localhost" />
     <property name="userDn" value="cn=Manager"/>
     <property name="password" value="secret"/>
     <property name="baseEnvironmentProperties">
	<map>
	   <entry key="com.sun.jndi.ldap.connect.timeout" value="3000" />
	   <entry key="com.sun.jndi.ldap.read.timeout" value="3000" />
	   <entry key="java.naming.security.authentication" value="simple" />
	</map>
     </property>
  </bean>	

ContextSource 的配置說明:

1.如果有多個LDAP伺服器,可以通過引數urls 配置多個
2.FastBindLdapAuthenticationHandler配置時,這裡的userDn 可以配置成 “cn=Manager,ou=dev,dc=micmiu,dc=com” 或 “cn=Manager,ou=dev” 或 “cn=Manager” 或 “Manager” 這四個都可以
3.如果LDAP伺服器有SSL,注意url配置的字首是ldaps:”ldaps://192.168.8.150:636″

在<bean id=”authenticationManager” />下找到SimpleTestUsernamePasswordAuthenticationHandler的配置,修改成如下:

<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler">
	<property name="filter" value="uid=%u,ou=dev,dc=micmiu,dc=com" />
	<property name="contextSource" ref="contextSource" />
</bean>

配置好後分別啟動三個應用:tomcat-cas、tomcat-app1、tomcat-app2,進行認證測試:這時開啟cas服務端地址https://demo.server.com:8443/cas/login會提示404錯誤,這時需要下載兩個jar包並複製到tomcat-cas\webapps\cas\WEB-INF\lib目錄下,點選下載:


輸入Michael/111111 或者 dev001/111111 可以成功登入,

輸入Michael/test4me 或者test001/test001 則登入失敗。

第二種:BindLdapAuthenticationHandler

這種認證處理器一般用於需要驗證的使用者名稱是DN的其他的屬性比如email,而不是上面第一種處理器中的uid(當然uid屬性同樣適用,下面我們配置的示例就還是用uid)。

修改web的配置檔案 WEB-INF\deployerConfigContext.xml:

同樣在<beans>跟節點下增加bean:ContextSource 的配置:

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
	<property name="anonymousReadOnly" value="false" />
	<property name="password" value="michael" />
	<property name="pooled" value="true" />
	<property name="urls">
		<list>
			<value>ldap://192.168.8.150:389</value>
		</list>
	</property>
	<property name="userDn" value="cn=Manager,dc=micmiu,dc=com" />
	<property name="baseEnvironmentProperties">
		<map>
			<!-- LDAP SSL訪問配置
			<entry key="java.naming.security.protocol" value="ssl" />
				-->
			<entry key="java.naming.security.authentication" value="simple" />
		</map>
	</property>
</bean>
在<bean id=”authenticationManager” />修改認證bean的配置,修改成如下:
<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
	<property name="filter" value="uid=%u" />
	<property name="searchBase" value="dc=micmiu,dc=com" />
	<property name="contextSource" ref="contextSource" />
	<!-- 允許多個賬號-->
	<property name="allowMultipleAccounts" value="true" />
</bean>

配置好後分別啟動三個應用:tomcat-cas、tomcat-app1、tomcat-app2,進行認證測試:

1.輸入Michael/111111 或者 dev001/111111可以成功登入,
2.輸入Michael/test4me 或者 test001/test001 也可以成功登入。

如果把引數:searchBase的值修改為:”ou=dev,dc=micmiu,dc=com”,重新啟動測試認證的結果如下:

1.輸入Michael/111111 或者 dev001/111111 可以成功登入,

2.輸入Michael/test4me 或者test001/test001 則登入失敗。

此時的認證效果和第一種的認證效果是一樣的。

有關連線池的配置可以參見官網介紹:https://wiki.jasig.org/display/CASUM/LDAP

OK,cas實現單點登入系列到此告一段落,希望對初學者有所幫助,也是對自己知識的鞏固。


紙上得來終覺淺,絕知此事要躬行。

相關推薦

cas系列()--CAS+OpenLDAP實現SSO

一、概述 本來主要詳細是介紹CAS和LDAP整合實現單點登入的步驟。 二、詳細步驟 安裝配置,新增部分測試資料如下: 3.CAS整合LDAP的配置 如果是Mave構建專案的,新增LDAP的相關依賴: <dependency> <group

cas系列(一)--cas單點登入基本原理

(這段時間打算做單點登入,因此研究了一些cas資料並作為一個系列記錄下來,一來可能會幫助一些人,二來對我自己所學知識也是一個鞏固。) 一、為什麼要實現單點登入 隨著資訊化不斷髮展,企業的資訊化過程是一個循序漸進的過程,在企業各個業務網站逐步建設的過程中,根據各種業務資訊水

系列、springMVC實現檔案上傳和跨伺服器上傳檔案

一、實現檔案上傳 專案目錄如下所示 一、匯入依賴和配置springmvc.xml、web.xml 這個兩個jar

輕松搭建CAS系列(1)-使用cas overlay搭建SSO SERVER服務端

連接 登錄 mage pla class TP build 基礎上 解壓 概要說明 cas的服務端搭建有兩種常用的方式: 1. 基於源碼的基礎上構建出來的 2. 使用WAR overlay的方式來安裝 官方推薦使用第二種,配置管理方便,以後升級也容易。本文就是使用

CAS 實現 SSO 單點登入

環境   cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72   CAS Server 安裝   點此進入 CAS 下載列表,選擇下載 cas-4.1.

CAS實現SSO單點登入

環境cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72 CAS Server 安裝點此進入 CAS 下載列表,選擇下載 cas-4.1.8.zip。 解壓縮 cas-4.1.8.zip 並進入 cas-server-webapp 目

springboot+springsecurity+cas實現sso,並開啟註解方法級別的許可權控制

springsecurity整合cas springsecurity的springsecurityfilterchian中有一個cas的攔截器位置,因此可以通過它把cas整合進springsecurity中 cas負責認證,security通過userDetails負責載入許可權,通過認證管理器

ssm + redis 實現sso單點登入,類適於CAS

1.原理講解 由於CAS 過於重量級且時間成本較高 ,所以我決定公司採用自己的sso 單點系統來處理系統之間只要一個系統登入成功,其他子系統就不用登入。 舉例說明:  比如公司有 系統 A 系統 B 此時我們就要定義一個專門用來做登入認證的sso系統。 如果使用者登入的是

springMVC整合shiro與cas實現SSO單點登入

一、前言 Apache Shiro與Spring Security一樣是Java的一個安全框架。那為什麼與Spring整合卻用Shiro?其實我個人是認為Spring Security太過於笨重,要寫太多的過濾器,Shiro的配置簡單這就是我選擇的理由,何況Spring官方

CAS實現SSO單點登入原理

1.      CAS簡介 CAS(Central Authentication Service) 是 Yale大學發起的一個企業級的、開源的專案,旨在為 Web 應用系統提供一種可靠的單點登入解決方法(屬於Web SSO)。 CAS開始於2001年, 並在 2004年

Nginx+Springboot+Security+CAS 整合方案-XML 實現SSO客戶端

javaconfig版本: https://www.cnblogs.com/question-sky/p/7068511.html 以下使用的是SpringBoot 2.1.1進行測試 0 Maven引用 <dependency>

CAS實現SSO單點登入-CAS Server搭建

        最近公司連續接了三四個單點登入整合的專案,由我們公司提供CAS Server端的,也有需要我們把Client與其他公司提供的Server端對接的,我負責把我們公司的一個Client與另外一個公司提供的Server端對接,由於我們需要.Net2.0

java使用CAS實現SSO單點登入

CAS-SERVER的預設驗證規則:只要使用者名稱和密碼相同就認證通過(僅僅用於測試,生成環境需要根據實際情況修改), 輸入admin/admin 點選登入,就可以看到登入成功的頁面Tomcat配置HTTPS 建立證書       這裡使用JDK生成的證書,正式環境需購買專業提供商的證書        用J

spring + shiro + cas 實現sso單點登入

sso-shiro-cas spring下使用shiro+cas配置單點登入,多個系統之間的訪問,每次只需要登入一次,專案原始碼 系統模組說明 cas: 單點登入模組,這裡直接拿的是cas的專案改了點樣式而已 doc: 文件目錄,裡面有資料庫生成語句,採用的是MySQL5.0,資料庫名為db_test s

《權限系列shiro+cas》---封裝公共驗證模塊

t對象 mode 轉換 關於 設計 下一步 lock 倒置 做的   操作系統:Windows8.1    顯卡:Nivida GTX965M    開發工具:Visual Studio 2017    Introduction    我們現在可以將任意屬性傳遞給每個頂點的

SpringCloud系列:Ribbon 負載均衡(Ribbon 基本使用、Ribbon 負載均衡、自定義 Ribbon 配置、禁用 Eureka 實現 Ribbon 調用)

control context .mm 別名 void 用戶 size ali ram 1、概念:Ribbon 負載均衡 2、具體內容 現在所有的服務已經通過了 Eureka 進行了註冊,那麽使用 Eureka 註冊的目的是希望所有的服務都統一歸屬到 Eureka 之中進

cas系列-cas REST協議(三)

cas的rest協議 cas還支援rest協議方式進行訪問,格式和引數如下: 1. 獲取TGT     請求方式,路徑,http協議及請求引數:      POST /cas/v1/tickets HTTP/1.0       username=battags&password=pas

併發系列(四)-----CAS

一 簡介  保證Java中的原子操做方式有兩種方式   1 加鎖(可以理解悲觀鎖機制)   2 CAS(可以理解為樂觀鎖機制)   CAS全稱是Compare and Swap 即比較並替換。在JDK中許多地方都可以看到它的身影,比如AQS同步元件,A

DEVOPS 運維開發系列:基於Django過濾器實現自動化運維平臺功能模組的動態授權管理與展示

1、關於Django過濾器 Django中提供了很多內建的過濾器和標籤,我們常用的例如下面這些: block(模板繼承) extends(模板繼承) filter(過濾器) for(迴圈) if(判斷) include(載入模板) 還有很多詳見官網

gitlab cicd ()系列之CD功能實現

本編是繼gitlab cicd (四)系列之安裝git-runner kubernetes安裝方式之後關於解決gitlab CD的問題 大概流程圖是這樣子的 設定kubernetes的deployment的規則(需要自己實現), 執行器是docker,編譯目錄(執行目錄都是在/