1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SpringBoot+CAS Client 實(shí)現(xiàn)單點(diǎn)登錄

        共 3079字,需瀏覽 7分鐘

         ·

        2020-12-28 03:29

        點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

        優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

        66套java從入門到精通實(shí)戰(zhàn)課程分享

        本文主要介紹在使用SpringBoot的開發(fā)過程中如何整合CAS Client實(shí)現(xiàn)單點(diǎn)登錄的功能。

        準(zhǔn)備工作

        (1)搭建好CAS服務(wù)端(參考:https://blog.csdn.net/u014553029/article/details/88102311)
        (2)準(zhǔn)備好一個(gè)普通的SpringBoot Web項(xiàng)目

        集成

        一、引入CAS client依賴

        在pom.xml中引入CAS Client的依賴包。代碼如下:


        ????net.unicon.cas
        ????cas-client-autoconfig-support
        ????2.1.0-GA


        二、配置

        在application.properties或者application.yml中添加相關(guān)配置,主要配置內(nèi)容包括服務(wù)器的相關(guān)地址,客戶端的相關(guān)地址等。我這里是application.yml,配置內(nèi)容如下:

        cas:
        ??#后端服務(wù)地址
        ??client-host-url:?http://127.0.0.1:8888
        ??#cas認(rèn)證中心地址
        ??server-url-prefix:?http://146.56.192.87:8080/cas
        ??#cas認(rèn)證中心登錄地址
        ??server-login-url:?http://146.56.192.87:8080/cas/login
        ??validation-type:?cas3

        三、在啟動(dòng)類中添加啟用注解

        //啟用CAS
        @EnableCasClient
        @SpringBootApplication
        public?class?SpringBootSsoApplication?{
        ????//省略部分內(nèi)容
        }

        四、編寫測試方法

        @Controller
        public?class?TestController?{

        ????@Value(value?=?"${cas.server-url-prefix}")
        ????private?String?serverUrlPrefix?=?"";

        ????@Value(value?=?"${cas.client-host-url}")
        ????private?String?clientHostUrl?=?"";

        ????@GetMapping("user")
        ????@ResponseBody
        ????public?String?user(HttpServletRequest?request)?{
        ????????Assertion?assertion?=?(Assertion)?request.getSession().getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);
        ????????String?loginName?=?null;
        ????????if?(assertion?!=?null)?{
        ????????????AttributePrincipal?principal?=?assertion.getPrincipal();
        ????????????loginName?=?principal.getName();
        ????????????System.out.println("訪問者:"?+?loginName);
        ????????}
        ????????return?"訪問者:"?+?loginName;
        ????}

        ????@RequestMapping("/logout")
        ????public?String?logout(HttpSession?session)?{
        ????????session.invalidate();
        ????????return?"redirect:"?+?serverUrlPrefix?+?"/logout?service="?+?clientHostUrl?+?"/sso-client/user";
        ????}
        }

        五、測試登錄與退出

        5.1 登錄

        (1)打開瀏覽器訪問:http://127.0.0.1:8888/sso-client/user
        (2)由于沒有登錄,重定向到:http://146.56.192.87:8080/cas/login?service=http://127.0.0.1:8888/sso-client/user
        (3)輸入用戶名密碼,點(diǎn)擊登錄,成功之后跳轉(zhuǎn)到http://127.0.0.1:8888/sso-client/user中

        5.2 退出

        (4)訪問:http://127.0.0.1:8888/sso-client/logout
        (5)cas完成退出,并跳轉(zhuǎn)到http://127.0.0.1:8888/sso-client/user,由于該地址需要登錄,仍會(huì)重定向到登錄界面

        5.3 驗(yàn)證單點(diǎn)

        (6)在啟動(dòng)一個(gè)客戶端,端口為8889,項(xiàng)目名稱為sso-client1


        (7)訪問:http://127.0.0.1:8889/sso-client1/user,直接獲取到用戶信息,不需要登錄。單點(diǎn)認(rèn)證驗(yàn)證完成。

        注意

        (1)未認(rèn)證授權(quán)的服務(wù),不允許使用CAS來認(rèn)證您訪問的目標(biāo)應(yīng)用。
        修改WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

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

        (2)WEB-INF\classes\application.properties

        #?Service?Registry(服務(wù)注冊)
        #?開啟識(shí)別Json文件,默認(rèn)false
        cas.serviceRegistry.initFromJson=true
        #?保存tgc
        cas.tgc.secure=false
        #?默認(rèn)情況下退出登錄時(shí),頁面將會(huì)跳轉(zhuǎn)到CAS服務(wù)器內(nèi)部的注銷頁面?casLogoutView.jsp?,
        #?如果我們需要在退出登錄后,跳轉(zhuǎn)到指定頁面,需要將下列參數(shù)設(shè)為true,在退出登錄的url里需要添加service參數(shù),
        #?該參數(shù)指定在注銷后需要跳轉(zhuǎn)的頁面,配置允許登出后跳轉(zhuǎn)到指定頁面
        cas.logout.followServiceRedirects=true
        #跳轉(zhuǎn)到指定頁面需要的參數(shù)名為?service(default)
        cas.logout.redirectParameter=service
        #在退出時(shí)是否需要?確認(rèn)一下??true確認(rèn)?false直接退出
        cas.logout.confirmLogout=false
        #是否移除子系統(tǒng)的票據(jù)
        cas.logout.removeDescendantTickets=true



        版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

        本文鏈接:

        https://blog.csdn.net/u014553029/article/details/111601235





        粉絲福利:Java從入門到入土學(xué)習(xí)路線圖

        ???

        ?長按上方微信二維碼?2 秒


        感謝點(diǎn)贊支持下哈?

        瀏覽 167
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            狠狠色一区| 操肥b在线观看 | 北条麻妃与黑人 | 国产妓女精品一区二区 | 小婊孑啊轻点灬太粗太长了的视频 | 插菊花综合网3 | 操大奶子 | 女人被爽到高潮的乱码网站 | 成人免费va | 欧美日本久久 |