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

          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)容
          }

          四、編寫測(cè)試方法

          @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";
          ????}
          }

          五、測(cè)試登錄與退出

          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ù)注冊(cè))
          #?開啟識(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)載請(qǐng)附上原文出處鏈接和本聲明。

          本文鏈接:

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





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

          ???

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


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

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲日韩三级 | 最新草比视频网站 | 久久久久久久久久久本色 | AV大全免费看 | 亚洲综合短片中文字幕 |