成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

CAS 5.2.x 單點(diǎn)登錄 - 搭建服務(wù)端和客戶(hù)端

Lin_YT / 2908人閱讀

摘要:一簡(jiǎn)介單點(diǎn)登錄,簡(jiǎn)稱(chēng)為,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一??蛻?hù)端攔截未認(rèn)證的用戶(hù)請(qǐng)求,并重定向至服務(wù)端,由服務(wù)端對(duì)用戶(hù)身份進(jìn)行統(tǒng)一認(rèn)證。三搭建客戶(hù)端在官方文檔中提供了客戶(hù)端樣例,即。

一、簡(jiǎn)介
單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱(chēng)為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪(fǎng)問(wèn)所有相互信任的應(yīng)用系統(tǒng)。

CAS 是一個(gè)開(kāi)源的企業(yè)級(jí)單點(diǎn)登錄系統(tǒng),目前最新版本為 5.2.x。
CAS 包含兩個(gè)部分:CAS Server 和 CAS Client,它們之間獨(dú)立部署。CAS 客戶(hù)端攔截未認(rèn)證的用戶(hù)請(qǐng)求,并重定向至 CAS 服務(wù)端,由 CAS 服務(wù)端對(duì)用戶(hù)身份進(jìn)行統(tǒng)一認(rèn)證。

二、搭建服務(wù)端

對(duì)于本地搭建 CAS 服務(wù)端,官方提供了基于 Maven 和 Gradle 的 Overlay 構(gòu)建方式,本文用的是 CAS Maven WAR Overlay。

2.1 什么是 WAR Overlay?
Overlay 技術(shù)可以把多個(gè)項(xiàng)目 war 合并成為一個(gè)項(xiàng)目,如果項(xiàng)目存在同名文件,那么主項(xiàng)目中的文件將覆蓋掉其他項(xiàng)目的同名文件。

使用 Overlay 無(wú)需對(duì) CAS 源碼進(jìn)行編譯,也避免了對(duì) CAS 源碼進(jìn)行侵入性改造。

2.2 環(huán)境清單

JDK 1.8

Tomcat 8.0+

IntelliJ IDEA 2017.2

2.3 Overlay 構(gòu)建

下載 CAS Maven WAR Overlay,修改 pom.xml ,設(shè)置 CAS 版本為 5.2.2。建議去除掉 pom.xml 文件中的 wrapper-maven-plugin 和無(wú)用的 profile 配置。


    5.2.2

首次導(dǎo)入 IDEA,可以看到后臺(tái)正在下載官方 cas.war。

工程 overlays 目錄下的文件是由 maven 編譯后才產(chǎn)生的,可以在 pom.xml 中配置官方 cas.war 中的文件的那些文件可以排除,不要在 overlays 中生成:


    org.apache.maven.plugins
    maven-war-plugin
    2.6
    
        cas
        false
        false
        
            false
            ${manifestFileToUse}
        
        
            
                org.apereo.cas
                cas-server-webapp${app.server}
                
                
                    WEB-INF/classes/services/*
                    WEB-INF/classes/application.*
                
            
        
    

打開(kāi) Project Structure,可以觀(guān)察到該工程具有兩個(gè) Web Root,但是 src/main/webapp 目錄并不存在,需要進(jìn)行手動(dòng)創(chuàng)建。

拷貝 overlays 目錄下的 application.properties 配置文件至 resources 目錄,用于覆蓋 CAS WAR 中的同名文件。最終工程目錄結(jié)構(gòu)如下:

為工程配置 tomcat 8.0 并啟動(dòng),注意 CAS 5.2.x 不支持低于 tomcat 8.0 的版本。
看到控制臺(tái)打印 READY 表明啟動(dòng)成功。

訪(fǎng)問(wèn) http://localhost:8080/cas/login 進(jìn)入登錄界面。

其中Non-secure Connection提示需要配置 SSL,Static Authentication提示需要對(duì)用戶(hù)配置進(jìn)行修改,可以修改為 JDBC、REST 等方式。目前用戶(hù)配置寫(xiě)死在 application.properties 配置文件中,用戶(hù)名為 casuser,密碼為 Mellon。

##
# CAS Authentication Credentials
#
cas.authn.accept.users=casuser::Mellon
2.4 Services配置

客戶(hù)端接入 CAS 首先需要在服務(wù)端進(jìn)行注冊(cè),否則客戶(hù)端訪(fǎng)問(wèn)將提示“未認(rèn)證授權(quán)的服務(wù)”警告:

在 resources 文件夾下創(chuàng)建 services 文件夾進(jìn)行服務(wù)定義,該目錄中可包含多個(gè) JSON 文件,其命名必須滿(mǎn)足以下規(guī)則:

JSON fileName = serviceName + "-" + serviceNumericId + ".json"

創(chuàng)建 services/Localhost-10000003.json 文件,表示允許所有以 http://localhost 開(kāi)頭的認(rèn)證請(qǐng)求:

{
  "@class": "org.apereo.cas.services.RegexRegisteredService",
  "serviceId": "^(http)://localhost.*",
  "name": "本地服務(wù)",
  "id": 10000003,
  "description": "這是一個(gè)本地允許的服務(wù),通過(guò)localhost訪(fǎng)問(wèn)都允許通過(guò)",
  "evaluationOrder": 1
}

對(duì)其中屬性的說(shuō)明如下,更多詳細(xì)內(nèi)容見(jiàn)官方文檔-Service-Management。

@class:必須為org.apereo.cas.services.RegisteredService的實(shí)現(xiàn)類(lèi)

serviceId:對(duì)服務(wù)進(jìn)行描述的表達(dá)式,可用于匹配一個(gè)或多個(gè) URL 地址

name: 服務(wù)名稱(chēng)

id:全局唯一標(biāo)志

evaluationOrder:定義多個(gè)服務(wù)的執(zhí)行順序

最后,根據(jù)官方文檔-service-registry,還需修改 application.properties 文件告知 CAS 服務(wù)端從本地加載服務(wù)定義文件:

#開(kāi)啟識(shí)別json文件,默認(rèn)false
cas.serviceRegistry.initFromJson=true
#自動(dòng)掃描服務(wù)配置,默認(rèn)開(kāi)啟
#cas.serviceRegistry.watcherEnabled=true
#120秒掃描一遍
#cas.serviceRegistry.repeatInterval=120000
#延遲15秒開(kāi)啟
#cas.serviceRegistry.startDelay=15000
#資源加載路徑
#cas.serviceRegistry.config.location=classpath:/services

啟動(dòng)時(shí)打印以下日志,說(shuō)明服務(wù)注冊(cè)成功。

2018-03-18 23:36:08,660 INFO [org.apereo.cas.services.AbstractServicesManager] - 
2018-03-18 23:36:08,876 INFO [org.apereo.cas.config.CasServiceRegistryInitializationConfiguration] - 
2018-03-18 23:36:08,877 WARN [org.apereo.cas.services.ServiceRegistryInitializer] - 
2018-03-18 23:36:09,283 INFO [org.apereo.cas.services.AbstractServicesManager] - 
三、搭建客戶(hù)端

在官方文檔中提供了 CAS Java 客戶(hù)端樣例,即 cas-sample-java-webapp。
修改 pom.xml,修改 tomcat7-maven-plugin 設(shè)置訪(fǎng)問(wèn)地址為http://localhost:8181/node1



    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        8181
        UTF-8
        tomcat7
        /node1
    

CAS Client 通過(guò)攔截器將未認(rèn)證的請(qǐng)求重定向到 CAS Server,這里對(duì) cas-sample-java-webapp 的 web.xml 文件進(jìn)行修改,將服務(wù)端、客戶(hù)端地址替換為實(shí)際測(cè)試的地址:





    
    
        CAS Single Sign Out Filter
        org.jasig.cas.client.session.SingleSignOutFilter
        
            casServerUrlPrefix
            http://localhost:8080/cas
        
    

    
        org.jasig.cas.client.session.SingleSignOutHttpSessionListener
    

    
    
        CAS Authentication Filter
        
        org.jasig.cas.client.authentication.AuthenticationFilter
        
            casServerLoginUrl
            http://localhost:8080/cas/login
        
        
            serverName
            
            http://localhost:8181/node1
        
    

    
    
        CAS Validation Filter
        
        org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter
        
            casServerUrlPrefix
            http://localhost:8080/cas
        
        
            serverName
            http://localhost:8181/node1
        
        
            redirectAfterValidation
            true
        
        
            useSession
            true
        
        
            authn_method
            mfa-duo
        
    

    
    
        CAS HttpServletRequest Wrapper Filter
        org.jasig.cas.client.util.HttpServletRequestWrapperFilter
    

    
    

    
        CAS Single Sign Out Filter
        /*
    

    
        CAS Validation Filter
        /*
    

    
        CAS Authentication Filter
        /*
    

    
        CAS HttpServletRequest Wrapper Filter
        /*
    

    
        
            index.jsp
        
    

此時(shí)訪(fǎng)問(wèn)
http://localhost:8181/node1
會(huì)跳轉(zhuǎn)至
http://localhost:8080/cas/login?service=http%3A%2F%2Flocalhost%3A8181%2Fnode1%2F
輸入用戶(hù)信息,登錄成功,返回
http://localhost:8181/node1/;jsessionid=6628138DCAAA5BA3481CD4C9238FEBFF

利用相同的方法配置第二個(gè)客戶(hù)端,訪(fǎng)問(wèn)地址為http://localhost:8282/node2,可知在 node1 登錄成功的情況下,無(wú)需再次輸入用戶(hù)密碼即可訪(fǎng)問(wèn) node2 后臺(tái)頁(yè)面。

至此,開(kāi)發(fā)環(huán)境搭建完畢。由于客戶(hù)端只是對(duì) web.xml 中的過(guò)濾器進(jìn)行配置,可以很方便地集成到各個(gè)業(yè)務(wù)系統(tǒng)中。

轉(zhuǎn)載請(qǐng)注明出處。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68870.html

相關(guān)文章

  • CAS 5.2.x 單點(diǎn)登錄 - 實(shí)現(xiàn)原理及源碼淺析

    摘要:上一篇文章簡(jiǎn)單介紹了在本地開(kāi)發(fā)環(huán)境中搭建服務(wù)端和客戶(hù)端,對(duì)單點(diǎn)登錄過(guò)程有了一個(gè)直觀(guān)的認(rèn)識(shí)之后,本篇將探討單點(diǎn)登錄的實(shí)現(xiàn)原理。因此引入服務(wù)端作為用戶(hù)信息鑒別和傳遞中介,達(dá)到單點(diǎn)登錄的效果。為該流程的實(shí)現(xiàn)類(lèi)。表示對(duì)返回結(jié)果的處理。 上一篇文章簡(jiǎn)單介紹了 CAS 5.2.2 在本地開(kāi)發(fā)環(huán)境中搭建服務(wù)端和客戶(hù)端,對(duì)單點(diǎn)登錄過(guò)程有了一個(gè)直觀(guān)的認(rèn)識(shí)之后,本篇將探討 CAS 單點(diǎn)登錄的實(shí)現(xiàn)原理。 一...

    elisa.yang 評(píng)論0 收藏0
  • 從http驗(yàn)證流程解析CAS單點(diǎn)登錄

    JAVA單點(diǎn)登錄有好多種方式,譬如用cookie的domain做,用中間代理做等等,但都需要自行做許多開(kāi)發(fā)工作。而其中耶魯大學(xué)的開(kāi)源項(xiàng)目CAS提供了一個(gè)一站式解決方案,只需很少的擴(kuò)展即可輕松實(shí)現(xiàn)企業(yè)級(jí)單點(diǎn)登錄?;A(chǔ)知識(shí)網(wǎng)上其他挺多的,這里我就不詳述了。本文通過(guò)分析http請(qǐng)求過(guò)程中httpheader,cookie等數(shù)據(jù)剖析了cas(非代理模式,默認(rèn)驗(yàn)證邏輯。其他如restletAPI等可擴(kuò)展邏輯...

    honhon 評(píng)論0 收藏0
  • 號(hào)外:友戶(hù)通支持企業(yè)自有用戶(hù)中心啦

    摘要:針對(duì)這種情況,友戶(hù)通特定開(kāi)發(fā)了聯(lián)邦用戶(hù)中心來(lái)支持企業(yè)的自有用戶(hù)中心。友戶(hù)通支持通過(guò)協(xié)議使用企業(yè)內(nèi)部的支持協(xié)議的用戶(hù)中心賬號(hào)進(jìn)行登錄。友戶(hù)通目前支持標(biāo)準(zhǔn)協(xié)議以及友戶(hù)通自定義協(xié)議可供企業(yè)集成。 友戶(hù)通做用友云的用戶(hù)系統(tǒng)也一年多了,經(jīng)常聽(tīng)實(shí)施、售前等說(shuō)要私有化部署友戶(hù)通,原因無(wú)非是企業(yè)的考慮到用戶(hù)安全性和單一用戶(hù)賬號(hào)的需求。但由于用戶(hù)管理的復(fù)雜性,友戶(hù)通部署與維護(hù)并不容易,因此經(jīng)常糾結(jié)在用戶(hù)...

    妤鋒シ 評(píng)論0 收藏0
  • Python Flask單點(diǎn)登錄問(wèn)題

    摘要:如果一旦加密算法泄露了,攻擊者可以在本地建立一個(gè)實(shí)現(xiàn)了登錄接口的假冒父應(yīng)用,通過(guò)綁定來(lái)把子應(yīng)用發(fā)起的請(qǐng)求指向本地的假冒父應(yīng)用,并作出回應(yīng)。 1.什么是單點(diǎn)登錄? 單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱(chēng)為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪(fǎng)問(wèn)所有相互信任的應(yīng)用系統(tǒng)??蛻?hù)端持有ID,服務(wù)端持有session...

    tuomao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<