單點登陸支援cs呼叫

2021-06-23 01:21:14 字數 3399 閱讀 7349

cas單點登入伺服器很多時候都是被b/s的應用使用,那麼對已有些系統是cs的那麼怎麼去呼叫呢,這個時候就需要使用webservice來給cs的系統呼叫了,我們先來說說先決條件吧:

1)整合需要的jar包,這個是必不可少的

com.noelios.restlet.ext.servlet-1.1.1.jar

com.noelios.restlet.ext.spring-1.1.1.jar

com.noelios.restlet-1.1.1.jar

org.restlet.ext.spring-1.1.1.jar

org.restlet-1.1.1.jar

cglib-2.2.jar

cas-server-integration-restlet-3.4.7.jar

2)配置,在web.xml中增加乙個servlet配置

restlet

com.noelios.restlet.ext.spring.restletframeworkservlet

1restlet

/v1/*

那麼我們的cs客戶端怎麼去處理呢,以及怎麼去拿到使用者資料呢?需要有三次互動才能取得使用者資料

1)cs客戶端提供使用者名稱和密碼,請求http://localhost:8080/tfp-s/v1/tickets,如果使用者合法則得到tgt資料。

2)根據tgt和service取得st票據,請求的路徑是:http://localhost:8080/tfp-s/v1/tickets/tgt_編號

3)驗證st票據,得到使用者資訊的xml格式資訊。

樣例**如下:

view plain

copy to clipboard

public

class

client   

/*** 取得st

* @param server

* @param ticketgrantingticket

* @param service

*/private

static

string getserviceticket(

final

string server, 

final

string ticketgrantingticket, 

final

string service) );  

try  

}  catch

(final

ioexception e)   

finally

return

null

;  }  

/*** @param server

* @param username

* @param password

*/private

static

string getticketgrantingticket(

final

string server, 

final

string username, 

final

string password) );  

try  

default

:  warning(

"invalid response code ("

+ post.getstatuscode() + 

") from cas server!"

);  

info(

"response (1k): "

+ response.substring(

0, math.min(

1024

, response.length())));  

break

;  }  

}  catch

(final

ioexception e)   

finally

return

null

;  }  

private

static

void

ticketvalidate(string servervalidate, string serviceticket, string service)   

default

:   

}  } 

catch

(exception e)  

finally

}  private

static

void

notnull(

final

object object, 

final

string message)   

public

static

void

main(

final

string args) 

throws

exception   

private

static

void

warning(string msg)   

private

static

void

info(string msg)   

}  

如果對返回來的使用者資訊是什麼格式不清楚,那麼下面是乙個xml格式。

view plain

copy to clipboard

<

cas:serviceresponse

>

<

cas:authenticationsuccess

>

<

cas:user

>

xufcas:user

>

<

cas:attributes

>

<

cas:securitylevel

>

2cas:securitylevel

>

<

cas:usertype

>

個人使用者

cas:usertype

>

<

cas:age

>

32cas:age

>

cas:attributes

>

cas:authenticationsuccess

>

cas:serviceresponse

>

這個格式怎麼修改?在透露一點吧,就是在cas伺服器那邊是不是有casservicevalidationfailure.jsp檔案,對了,就是它決定返回的xml格式的。如果使用filter,其實也是傳遞回來這個xml,只是驗證票據的過濾器,將這個xml轉換成assertion物件了。明白了吧。

單點登陸 單點登陸設計

1單點登入基本流程場景1 使用者未登入情況下訪問受限資源 例如 使用者在站點a 登入成功了,這時候使用者再去訪問站點 下的受限資源。private a.do 由於使用者在站點a登入了,那麼在 x.com 域下一定存在authid的cookie,並且redis中一定儲存了使用者的登入資訊。當使用者訪問...

SSO 單點登陸

1.單點登陸概述 單點登入 single sign on 簡稱為 sso,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。很早期的公司,一家公司可能只有乙個server,慢慢的server開始變多了。每個server都...

單點登陸問題

單點登入 單點登入 sso,single sign on 是一種方便使用者訪問多個系統的技術,使用者只需在登入時進行一次註冊,就可以在多個系統間自由穿梭,不必重複輸入使用者名稱和密碼來確定身份。單點登入的實質就是安全上下文 security context 或憑證 credential 在多個應用系...