cas-5.3.x接入REST登錄認證,移動端登錄解決方案


一、部署cas-server及cas-sample-java-webapp

1、克隆cas-overlay-template項目並切換到5.3分支

git clone git@github.com:apereo/cas-overlay-template.git

或直接下載zip包 https://github.com/apereo/cas-overlay-template/archive/5.3.zip

2、編輯pom.xml添加cas-server-support-rest依賴,即新增如下XML片段:

<dependencies>
    <dependency>
        <groupId>org.apereo.cas</groupId>
        <artifactId>cas-server-support-rest</artifactId>
        <version>${cas.version}</version>
    </dependency>
</dependencies>

3、執行maven打包命令 mvn clean package 構建war包

mvn clean package

4、解壓cas.war修改配置文件,完成cas-server部署

- 修改 \WEB-INF\classes\services\HTTPSandIMAPS-10000001.json,將"serviceId"修改為"^(https|http|imaps)://.*",修改后的內容如下:

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|http|imaps)://.*",
  "name" : "HTTPS and IMAPS",
  "id" : 10000001,
  "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
  "evaluationOrder" : 10000
}

- 修改 \WEB-INF\classes\application.properties,新增cas.tgc.secure和cas.serviceRegistry.initFromJson配置

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

- 修改 \WEB-INF\classes\application.properties,cas.authn.accept.users配置,修改默認賬戶為admin/123456

cas.authn.accept.users=admin::123456

啟動tomcat

5、部署cas-sample-java-webapp,這里我們部署上下文為demo,訪問http://192.168.36.158:8080/demo發現跳至CAS登錄頁面

CAS官方java客戶端demo項目地址:https://github.com/cas-projects/cas-sample-java-webapp

網絡不佳的同學請使用這個備份地址下載:https://files.cnblogs.com/files/nihaorz/cas-sample-java-webapp-master.zip

執行mvn clean package打成war包,解壓war包修改web.xml中cas服務端以及demo程序自身訪問地址,部署至tomcat,此處應用上下文修改為demo,訪問/demo

常規情況是輸入賬戶密碼完成登錄,下面我們使用REST完成登錄

二、使用REST獲取ST完成客戶端登錄

1、發送POST請求一,獲取TGT,請求地址/cas/v1/tickets,請求響應頭中的Location即包含CAS服務器返回的TGT

curl -i -X POST \
  http://cas.gfstack.geo:8080/cas/v1/tickets \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'username=admin&password=123456'

返回如下:

HTTP/1.1 201
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Location: http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-24-92zYMWlqhJLKwdrZlzo3lVYGNP2J5ZpRYy1Zvg8ePO-qUvotV1qy-uUmm22-njz1QkAtes-cas-server
Content-Type: text/html;charset=UTF-8
Content-Length: 396
Date: Wed, 27 Feb 2019 09:50:15 GMT

<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><html><head><title>201 Created</title></head><body><h1>TGT Created</h1><form action="http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-24-92zYMWlqhJLKwdrZlzo3lVYGNP2J5ZpRYy1Zvg8ePO-qUvotV1qy-uUmm22-njz1QkAtes-cas-server" method="POST">Service:<input type="text" name="service" value=""><br><input type="submit" value="Submit"></form></body></html>

或者直接使用postman獲取到返回頭中的Location

 

2、發送POST請求二,獲取ST,直接使用請求一中返回的Location作為請求地址,service參數為客戶端地址

curl -X POST \
  http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-31-hDZZ7-FyHALeny6rV4WgI9rdiSUf5FIFs91oHOf4PO2-nPJB2ndRb6BLLlaqDNvt6Zotes-cas-server \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'service=http%3A%2F%2F192.168.36.158%3A8080%2Fdemo%2F'

返回如下:

ST-23-CKL6FVwjJevI3gG61rW5QD9iKZItes-cas-server

注意,此處的service是經過URLEncoder編碼之后的客戶端地址,客戶端地址必須以“/”結尾,這里的service原值為“http://192.168.36.158:8080/demo/”

如果是postman則會自動完成編碼,如下圖所示

3、校驗ST,訪問http://192.168.36.158:8080/demo?ticket={ST}完成登錄

4、退出,發送DELETE請求,請求地址還是第六步中的Location

curl -X DELETE \
  http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-32-RzWUHSRvvQIWpsYn3YdRYcyf40Aa1qCf2Y-RFIqsAVkv-PGAJjd0LLyLVLa5TuaoBx0tes-cas-server

5、刷新瀏覽器,發現頁面跳至cas登錄頁面則表示cas客戶端退出成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM