日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO#4

發(fā)布時間:2024/9/27 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO#4 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最早由Yale開發(fā)的CAS在目前開源SSO市場上占據(jù)了80%的份額。簡單研究了一下,感覺CAS確實比較成熟,認證流程均可通過證書保證安全,也提供了對多種App服務器和開發(fā)環(huán)境的支持。比較感興趣的是兩個:Php和Jetty,前者較為常用;后者是Hadoop平臺內置的Jetty服務器。

一、配置Php認證

這個相當簡單,有人實現(xiàn)了一個PhpCAS庫,只需將CAS.php和client.php等三個php文件放置到應用目錄下即可。然后代碼中加入4行代碼即可實現(xiàn)SSO,如下。其中需要指出的是這個例子并沒有使用服務器證書認證,而只是讓Apache/Php服務器從CAS服務器經由SSL驗證PT。這種方式的前提是服務器之間是互相信任的,否則就可以讓惡意服務器獲取用戶的一些信息。如需證書認證,會相當麻煩,參見后面的討論

// import phpCAS lib

include_once('CAS.php');

// initialize phpCAS

phpCAS::client(CAS_VERSION_2_0,'tomcat',8443,'cas-server-webapp-3.4.2');

//此處要注意版本,目前CAS協(xié)議已經到3.0,但是還兼容2.0

// no SSL validation for the CAS server

phpCAS::setNoCasServerValidation();

// force CAS authentication

phpCAS::forceAuthentication();

二、配置Jetty認證

Jetty是一個比Tomcat更為小巧的Java應用服務器,被包括Hadoop、GAE在內的系統(tǒng)使用,GAE的某人說的很有道理,一個Jetty節(jié)省1MB內存,則10000個服務器就可以節(jié)省10GB空間,能省干嗎不省呢?

Hadoop平臺中,Jetty被當做一個嵌入式服務器使用了,配置基本上和Tomcat類似,都是需要配置Filter,此類配置很多,就不詳述了。在應用中需要寫一個跳轉頁面就可以了,對于Hive稍微羅嗦一些,主要是Hive默認使用了一個war文件,因此為了配置簡單就需要使用兩個war文件,一個支持SSO,一個不支持

- 當然也可以不這么用。應用中需要寫如下2行代碼獲取用戶名稱:

Object uo =

session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

if (uo instanceof String) user =

(String)uo;

三、配置服務器證書

配置證書比寫出來代碼更為麻煩,基本的教程中都是使用keytool生成自簽名的證書,這種證書對于Tomcat來說,是可以接受的,但是處于安全性,Jetty不支持自簽名證書,這就帶來了很多的問題,這里有2種方法解決:

1. 修改CAS

Client的代碼,使用http來做服務器端驗證。(注:CAS客戶端默認是不支持這種方式的,極其不安全,其代碼中多次判斷是否驗證URL是https)

2. 配置非自簽名證書。步驟如下:

2.1

自己搭建CA,可以使用OpenSSL,生成一個root證書,用root證書為CAS服務器簽署一個服務器證書,將root證書導出為JKS格式。

2.2 將CAS服務器所在的Tomcat服務器(或者其他服務器)的JVM

Keystore中導入CAS服務器證書,同時也可以復制一份放到Tomcat中

2.3 將root證書轉換為瀏覽器認識的格式,比如pkcs12,導入瀏覽器

2.4 將root證書導入到Jetty服務器的JVM Keystore中,同時也可以復制一份到Jetty中

這樣,瀏覽器就可以接受CAS服務器的證書,Jetty服務器也可以接受CAS服務器的證書,達到互相信任的效果,實現(xiàn)SSO。這個流程還是很復雜的,我在2.4遇到問題,Jetty不認識JVM中的證書,以后閑下來再研究吧。

四、關于用戶注冊的思考

由于用戶信息在CAS服務器和應用服務器上實際上都有存放,一般來說CAS只保存最為基本的用戶名和密碼認證信息,而應用服務器需要保存授權信息。這樣就帶來了雞生蛋還是蛋生雞的問題,或者說信息如何同步的問題。我想這不是什么技術問題,而是一種管理問題。比如在企業(yè)應用中可以統(tǒng)一創(chuàng)建用戶目錄,比如LDAP,預先部署用戶的認證信息,由于服務器之間互信,只需使用統(tǒng)一的用戶名就可以實現(xiàn)SSO。

應用服務器是否保存用戶認證信息其實并不重要,但是應用服務器提供注冊用戶的功能時,需要在CAS用戶數(shù)據(jù)庫和應用中同時保存用戶信息,一旦不同步,則無法實現(xiàn)SSO。

總結

以上是生活随笔為你收集整理的cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO#4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。