<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于CAS實現(xiàn)SSO單點登錄

          共 4017字,需瀏覽 9分鐘

           ·

          2021-08-18 11:24

          1. 概述

          1.1. 什么是SSO?

          單點登錄( Single Sign-On , 簡稱 SSO )是目前比較流行的服務(wù)于企業(yè)業(yè)務(wù)整合的解決方案之一, SSO 使得在多個應(yīng)用系統(tǒng)中,用戶只需要 登錄一次 就可以訪問所有相互信任的應(yīng)用系統(tǒng)。

          1.2. 什么是CAS?

          隨著SSO技術(shù)的流行,相關(guān)產(chǎn)品也比較多,其中CAS就是一套解決方案,CAS(Central Authentication Service)中文翻譯為統(tǒng)一身份認(rèn)證服務(wù)或中央身份服務(wù),它由服務(wù)端和客戶端組成,實現(xiàn)SSO,并且容易進行企業(yè)應(yīng)用的集成。

          CAS是Yale大學(xué)(耶魯)發(fā)起的一個開源項目,旨在為web應(yīng)用系統(tǒng)提供一種可靠的單點登錄方法,CAS在2004年12月正式成為JA-SIG的一個項目。

          官網(wǎng):https://www.apereo.org/projects/cas

          CAS具有以下的特點:

          • 開源的企業(yè)級單點登錄解決方案
          • CAS Server為需要獨立部署的web應(yīng)用
          • CAS Client支持非常多的客戶端(這里指單點登錄系統(tǒng)中的各個web應(yīng)用),包括 Java、.Net 、ISAPI、Php、Perl、uPortal、Acegi、Ruby、VBScript等客戶端

          有了CAS,我們的系統(tǒng)架構(gòu)就演變成下面這樣的:

          從架構(gòu)上可以看出,CAS包含兩個部分:CAS Server和CAS Client.

          • CAS Server需要獨立部署,主要負(fù)責(zé)對用戶的認(rèn)證工作,CAS Client負(fù)責(zé)處理
          • 對客戶端受保護資源的訪問請求,需要登錄,重定向到CAS Server。

          下面,我們一步步搭建CAS實現(xiàn)SSO.

          1.3. 開發(fā)環(huán)境要求

          Jdk1.8+ maven3.6 idea tomcat9.0+ windows10

          2. CAS Server服務(wù)器端

          2.1. CAS服務(wù)器端軟件包下載

          • 下載版本為5.3

          下載服務(wù)器的overlay地址: https://github.com/apereo/cas-overlay-template/tree/5.3

          壓縮包:cas-overlay-template-5.3.zip

          解壓好后用命令:build.cmd package

          然后用編譯的目錄查看war包:

          2.2. 服務(wù)器端的基本部署和測試

          將war包放到tomcat的webapp中,然后啟動tomcat

          訪問地址:http://localhost:8080/cas 或者 http://localhost:8080/cas/login

          默認(rèn)用戶名和密碼在\webapps\cas\WEB-INF\classes\application.properties里面 用戶名:casuser 密碼:Mellon

          CAS服務(wù)端啟動成功

          2.3. CAS Server服務(wù)器配置

          2.3.1 去除https認(rèn)證

          CAS默認(rèn)使用的是HTTPS協(xié)議,如果使用HTTPS協(xié)議需要SSL安全證書(需向特定的機構(gòu)申請和購買)。如果對安全要求不高或是在開發(fā)測試階段,可使用HTTP協(xié)議。我們這里講解通過修改配置,讓CAS使用HTTP協(xié)議。

          修改CAS服務(wù)端配置文件:

          \cas\WEB-INF\classes\application.properties里添加如下內(nèi)容:

          cas.tgc.secure=false
          cas.serviceRegistry.initFromJson=true

          \cas\WEB-INF\classes\services目錄下的HTTPSandIMAPS-10000001.json修改內(nèi)容如下:

          "serviceId" : "^(https|http|imaps)://.*"

          3. CAS Client客戶端配置(自己項目)

          Pom文件的依賴即pom.xml

          <dependency>
          <groupId>net.unicon.cas</groupId>
          <artifactId>cas-client-autoconfig-support</artifactId>
          <version>2.1.0-GA</version>
          </dependency>

          application.yml配置文件

          客戶端1

          server:
            port: 9010
          cas:
            server-url-prefix: http://localhost:8080/cas
            server-login-url: http://localhost:8080/cas/login
            client-host-url: http://localhost:9010
            validation-type: cas3

          注:啟動類追加開啟CAS的注解@EnableCasClient

          項目中新建一個測試類

          iimport io.swagger.annotations.Api;
          import org.springframework.web.bind.annotation.GetMapping;
          import org.springframework.web.bind.annotation.RestController;

          @RestController
          @Api(description = "SSO-CAS的測試")
          public class TestController {

              @GetMapping("/test1")
              public String test1(){
                  return "test1....";
              }
          }

          客戶端2

          server:
            port: 9011
          cas:
            server-url-prefix: http://localhost:8080/cas
            server-login-url: http://localhost:8080/cas/login
            client-host-url: http://localhost:9011
            validation-type: cas3

          注:啟動類追加開啟CAS的注解@EnableCasClient

          項目中新建一個測試類

          import io.swagger.annotations.Api;
          import org.springframework.web.bind.annotation.GetMapping;
          import org.springframework.web.bind.annotation.RestController;

          @RestController
          @Api(description = "SSO-CAS的測試")
          public class TestController {

              @GetMapping("/test2")
              public String test1(){
                  return "test2....";
              }
          }

          客戶端1,客戶端2和cas服務(wù)器搭建好之后,接下來我們進行測試:

          1.首先啟動tomcat服務(wù)器中的CAS Server。

          2.分別啟動客戶端1和客戶端2,然后在瀏覽器地址欄輸入客戶端1的地址http://localhost:9010/test1

          在不登錄的狀態(tài),在瀏覽器的地址欄繼續(xù)輸入客戶端2的地址:http://localhost:9011/test2

          當(dāng)我們在其中一個登錄界面登錄賬號后(假設(shè)登錄客戶端2)就會跳轉(zhuǎn)到登陸后的界面,如下圖:

          我們再次在瀏覽器窗口重新輸入客戶端1,http://localhost:9010/test1,或者在剛剛輸入客戶端頁面重新刷新,不用登錄即可進入頁面,如下圖:

          以上就是單點登錄的測試。


          4 款 MySQL 調(diào)優(yōu)工具,公司大神都在用!

          面試官問:數(shù)據(jù)庫 delete 表數(shù)據(jù),磁盤空間還是被一直占用,為什么?

          面試官:Redis用過是吧?那你講講Redis都有哪些監(jiān)控指標(biāo)?

          免費的XShell替代品,又來一款國產(chǎn)良心工具....

          代碼總是被嫌棄寫的太爛?裝上這個IDEA插件再試試!

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點“在看”,關(guān)注公眾號并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^_

          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色片在线观看网站 | 99热国产免费 | 午夜成人精品视频在线 | 天天综合永久入口 | 日本大香蕉视频 |