導航:首頁 > 編程語言 > phpsso開源框架

phpsso開源框架

發布時間:2023-05-19 07:39:24

Ⅰ 使用thinkphp框架實現單點登錄,服務端也要用tp,誰弄過

可以參考各大開源軟體的實現模式,如discuz的uc,phpcms的phpsso等

Ⅱ 好用的低代碼平台有哪些

learun .net/java 低代碼快速開發平台是一套基於智能化可擴展組件式的軟體系統項目,使用了當前主流的應用開發技術,框架內置工作流、向導式智能開發組件、即時通訊拍檔畝組件、APP開發組件、微信組件、通用許可權等一系列組件,以及可擴展的系統機制,開發人員通過一系列簡單配置就可以快速構建高質量的信息系統。

力軟開發框架有哪些優勢

*提高開發效率

已集成大量業務模板和公共組件,開發人員只需根據開發向導進行設置就可快速完成開發工作,比起傳統開發至少要節約80%工作量,能大大提升開發效率。

如果需要二次開發,可以直接修改生成的源代碼。

*保證軟體質量

擁有規范蠢磨的編碼、專業的架構、穩定高效的底層。基於力軟框架做開發,可以大幅度地提升軟體質量,提升軟體穩定性。

*降低開發成本

相較於定製開發和從基礎自主搭建,採用力軟開發方案僅需一套框架的成本,並且對框架使用人員的技術沒有硬性要求,新手也可快速上手。

*提升用戶滿意

UI作為一款產品的「臉面」,勢必影響產品的第一直觀印象。框襲森架已經為開發人員提供了多套美觀簡潔的UI,使開發人員有更多的精力在功能開發上。配合框架良好的編碼規范,開發出的產品用戶體驗友好度必定大大提升,用戶滿意度也會大大提高。

更多優勢

*採用 SOA 架構,系統核心功能均可以通過服務的方式提供給外部調用,方便系統與 ERP 系統及周邊系統、硬體設備介面交互能力,解決企業信息化孤島問題。

*系統前後台通 Ajax 交互,這樣使得前台不必依賴於後台的開發語言,日後要重構成php、JSP 後台的話,UI 層完全不用動。

*開發框架完美支持 Oracle、SQL Server、MYSQL 資料庫,並且還支持在框架中同時操作多資料庫。

*提供自定義報表功能,可通過編寫SQL等作為數據來源進行構建不同類型的圖形報表。

*提供工作流引擎組件,開發者可以直接在開發框架中使用自定義表單來承載業務數據進行流程審批;也可以編寫代碼完成復雜表單然後調用流程引擎服務進行流程審批。

*強大的許可權管理組件,基於框架開發出功能後就可以直接給被授權角色授予該功能的許可權。

*提供 SSO(單點登陸)服務,方便多系統統一登陸管理。

*框架支持 Websocket,消息實時達。

*提供微信企業號開發組件功能。

*提供 APP 開發功能。

*框架支持 redis 緩存集群。

*原班開發人員售後支持。

如需了解更多詳情,可以前往力軟官網體驗

Ⅲ java開源的其它

Quartz 【Java開源 Job調度】
Quartz是OpenSymphony開源組織在Job scheling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。Jobs可以做成標準的Java組件或 EJBs。Quartz的最新版本為Quartz 1.5.0。
Velocity 【Java開源 模板引擎】
Velocity是一個基於java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用於web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立工具來產生源代碼和報告,或者作為其他系統的集成組件使用。Velocity也可以為Turbine web開發架構提供模板服務(template service)。Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。 【VeloEclipse :Velocity在Eclipse平台下的一個輔助開發插件】
Roller Weblogger 【Java開源 Blog博客】
這個weblogging 設計得比較精巧,源代碼是很好的學習資料。它支持weblogging應有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模板,RSS syndication,blogroll管理和提供一個XML-RPC 介面。
XPlanner 【Java開源 項目管理】
XPlanner 一個基於Web的XP團隊計劃和跟蹤工具。XP獨特的開發概念如iteration、user stories等,XPlanner都提供了相對應的的管理工具,XPlanner支持XP開發流程,並解決利用XP思想來開發項目所碰到的問題。XPlanner特點包括:簡單的模型規劃,虛擬筆記卡(Virtual note cards),iterations、user stories與工作記錄的追蹤,未完成stories將自動迭代,工作時間追蹤,生成團隊效率,個人工時報表,SOAP界面支持。
JOnAS 【Java開源 J2EE伺服器】
JOnAS是一個開放源代碼的J2EE實現,在ObjectWeb協會中開發。整合了Tomcat或Jetty成為它的Web容器,以確保符合Servlet 2.3和JSP 1.2規范。JOnAS伺服器依賴或實現以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。
FreeMarker 【Java開源 模板引擎】
FreeMarker允許Java servlet保持圖形設計同應用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用servlet提供的數據動態地生成 HTML。模板語言是強大的直觀的,編譯器速度快,輸出接近靜態HTML頁面的速度。
【FreeMarker Eclipse Plugin與FreeMarker IDE:Eclipse平台下的輔助開發工具】
Lucene 【Java開源 全文檢索】
Apache Lucene是一個開放源程序的搜尋器引擎,利用它可以輕易地為Java軟體加入全文搜尋功能。Lucene的最主要工作是替文件的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強大之處除了高效和簡單外,是最重要的是使使用者可以隨時應自己需要自訂其功能。
Beanshell 【Java開源 動態語言】
Beanshell是用Java寫成的,一個小型的、免費的、可以下載的、嵌入式的Java源代碼解釋器,具有對象腳本語言特性。BeanShell執行標准Java語句和表達式,另外包括一些腳本命令和語法。它將腳本化對象看作簡單閉包方法(simple method closure)來支持,就如同在Perl和JavaScript中的一樣。它具有以下的一些特點:使用Java反射API以提供Java語句和表達式的實時解釋執行;可以透明地訪問任何Java對象和API;可以在命令行模式、控制台模式、小程序模式和遠程線程伺服器模式等四種模式下面運行;與在應用程序中一樣,可以在小程序中(Applet)正常運行(無需編譯器或者類裝載器);非常精簡的解釋器jar文件大小為175k
Big Two 【Java開源 Java游戲】
採用Java開發的中國式紙牌升級游戲。源碼下載
JBoss SSO Framework 【Java開源 身份認證管理】
JBoss SSO Framework是一個組件集能夠很容易集成到現有的web應用中提供單一登錄功能.該框架已經能夠支持一些重要的SSO標准如SAML。整個系統包括以下組件:
1.聯合伺服器(Federation Server)– 一個聯合伺服器用於為放置在不同安全域(security domain)中的web應用程序安全地傳播Federation Token。
2.Token編排框架(Token Marshalling Framework)– 這是一組靈活的/可插件的Java API用來marshal/unmarshal一個Federation Token。該系統默認提供一個SAML兼容的編排器(Marshaller) 。
3.身份管管理框架(Identity Management Framework)–這是一組靈活的/可插件的Java API用來連接中中央身份存儲庫(Identity Store)。該系統默認提供一個Provider來連接基於LDAP的身份存儲庫。
JawFlow 【Java開源 開源工作流】
JawFlow是一個部分遵循WfMC規范,採用JMX技術開發的工作流引擎。它能夠解析XPDL,並能夠用Java或BSF支持的腳本語言來自定義行為。
rails-asyncweb 【Java開源 Web伺服器】
用於JRuby on Rails的一個快速Http伺服器。
jBatchEngine 【Java開源 Job調度】
jBatchEngine是一個採用Java開發的批任務spooler。jBatchEngine與其它以時間為驅動的Job調度引擎不同之處在於它是以事件以驅動,可用於啟動任何批處理程序。jBatchEngine可以安裝成一個Windows Service或一個Unix Daemon。
Gant 【Java開源 項目構建】
Gant是一個基於Ant的構建工具,它採用Groovy腳本代替XML來編寫構建邏輯。 Gant完全依賴於Ant task來做真正的事情,所以你如果用Ant實現構建,但不喜歡用XML構建文件,Gant是一個不錯的選擇。
Jaxmao 【Java開源 Web伺服器】
Tomcat是開源的JSP/Servlet伺服器。多年的開發使Tomcat已越來越完善,被越來越多的網站採用。Jaxmao(中文版Tomcat)項目的任務是為Tomcat提供一個友好的中文界面,推廣Tomcat在中文JSP/Serlet 開發者中的使用。
Metanotion BlockFile 【Java開源 DBMS資料庫】
BlockFile一個100%純Java,輕量級,單個文件嵌入式資料庫。它的功能介於SQLite與BerkeleyDB之間。專門為PDA和Mobile應用程序而開發。
JRuleEngine 【Java開源 規則引擎】
JRuleEngine基於JSR94規范的java規則引擎。
JBasic 【Java開源 動態語言】
JBasic是一個完全採用Java開發的BASIC語言解釋器。JBasic可運行在大部分Unix系統(包括Mac OS X),Windows command shell,或VMS DCL command line。
jSoapServer 【Java開源 Web Service】
jSoapServer這個Java類包可以集成到Java應用程序中為外部程序提供一個SOAP介面。jSoapServer是一個獨立的SOAP伺服器,因此不需要讓Java程序運行在像Tomcat這樣的容器中。
Artistic Style 【Java開源 代碼優化】
Artistic Style是一個C,C++,C#和Java源代碼縮排/格式化/美化工具。
JLoom 【Java開源 模板引擎】
JLoom是一個採用類似於JSP語法的模板引擎。參數可以是任何Java類型,甚至是泛型(generic)。JLoom還提供一個Eclipse插件來輔助開發。
Liquid look&feel 【Java開源 Swing外觀】
基於Mosfet Liquid KDE 3.x主題的Swing外觀。
MicroNova YUZU 【Java開源 JSP標簽】
MicroNova YUZU開源基於EL的JSP標簽庫。這是一個增強的JSTL(兼容JSP1.2與JSP 2.0)。

Ⅳ GitHub上面有哪些經典的java框架源碼

Ⅳ CAS單點登錄原理分析(一)

一,業務分析

在分布式系統架構中,假設把上述的三個子系統部署在三個不同的伺服器上。前提是用戶登錄之後才能訪問這些子系統。那麼使用傳統方式,可能會存在這樣的問題:

1.當訪問用戶中心,需要用戶登錄帳號

2.當訪問購物車,還需要用戶登錄帳號

3.當訪問商品結算,又一次需要用戶登錄帳號

訪問每一個子系統都需要用戶登錄帳號,這樣的體驗對於用戶來說是極差。而使用單點登錄就可以很好地解決上述的問題。

二,單點登錄

單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO 的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。

我們目前的系統存在諸多子系統,而這些子系統是分別部署在不同的伺服器中,那麼使用傳統方式的 session 是無法解決的,我們需要使用相關的單點登錄技術來解決。

第一步 :用戶訪問應用系統1。過濾器判斷用戶是否登錄,沒有登錄,則重定向(302)到認證系統去進行認證操作。

第二步 :重定向到認證系統,顯示登錄界面,用戶輸入用戶名密碼。認證系統將用戶登錄的信息記錄到伺服器的session中。

第三步 :認證系統給瀏覽器發送一個特殊的憑證ticket,瀏覽器將憑證交給應用系統1,應用系統1則拿著瀏覽器交給他的憑證ticket去認證系統驗證憑證ticket是否有效。憑證ticket若是有效,將用戶信息保存到應用系統1的session中一份,並告知應用系統1,用戶通過認證。

第四步 :用戶通過認證,瀏覽器與網站之間進行正常的訪問。

第五步 :當用戶再次訪問應用系統1,由於應用系統1的session中有用戶信息,所以就不用經過認證系統認證,就可以直接訪問應用系統1了。

第六步 :當用戶再去訪問其他應用系統時,瀏覽器會帶著憑證ticket過去,其他應用系統到認證系統驗證憑證,憑證ticket若是有效,將用戶信息保存到其他應用系統的session中一份,並告知其他應用系統,用戶通過認證。

第七步 :用戶通過認證,瀏覽器與網站之間進行正常的訪問。

第八步 :當用戶再次訪問其他應用系統,由於其他應用系統的session中有用戶信息,所以就不用經過認證系統認證,就可以直接訪問其他應用系統了。

三、Yelu大學研發的CAS(Central Authentication Server)

1.什麼是CAS?

CAS 是 Yale 大學發起的一個開源項目,旨在為 Web 應用系統提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目。CAS 具有以下特點:

【1】開源的企業級單點登錄解決方案。

【2】CAS Server 為需要獨立部署的 Web 應用。這個CAS框架已經提供

【3】CAS Client 支持非常多的客戶端(這里指單點登錄系統中的各個 Web 應用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對用戶的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登錄時,重定向到 CAS Server。下圖是 CAS 最基本的協議過程:

2.CAS的詳細登錄流程

該圖主要描述

1.第一次訪問http://shopping.xiaogui.com

2.在登錄狀態下第二次訪問http://shopping.xiaogui.com

3.在登錄狀態下第一次訪問http://pay.xiaogui.com

下面對圖中序號代表的操作進行說明

當用戶第一次訪問http://shopping.xiaogui.com

序號1: 用戶請求http://shopping.xiaogui.com,會經過AuthenticationFilter認證過濾器(在cas client 的web.xml中配置)

主要作用:判斷是否登錄,如果沒有登錄則重定向到認證中心。

大概知道這個就行,CAS的具體實現會在以後的博客中寫道

序號2:  AuthenticationFilter發現用戶沒有登錄,則返回瀏覽器重定向地址。

重定向的地址就是認證伺服器CAS Server的地址,後面的參數是我們請求的客戶端地址,這個參數目的就是為了認證成功以後,根據這個參數的地址重定向回請求的客戶端

序號3:  瀏覽器根據響應回來的重定向地址,向cas.xiaogui.com認證系統發出請求

序號4:  認證系統cas.xiaogui.com接收請求,響應登陸頁面

序號5: :用戶登陸頁面輸入用戶名密碼,提交請求

序號6: :CAS Server 認證伺服器接收用戶名和密碼,就行驗證,驗證邏輯CAS Server 已經實現,並響應給瀏覽器信息

這里的用戶名,密碼不需要關心,後續會講到

圖中1,2部分表示序號5 輸入的用戶名,密碼,以及發出的請求。當認證伺服器驗證通過之後,根據請求參數service的值,進行重定向,其實就是回到了請求的客戶端,同時會攜帶一個ticket令牌參數。同時會在Cookie中設置一個TGC,該cookie是網站認證系統cas.xiaogui.com的cookie,只有訪問這個網站才會攜帶這個cookie過去。

*****注意:這個攜帶TGC的Cookie是實現CAS單點登錄的關鍵所在!

Cookie中的TGC:向cookie中添加該值的目的是當下次訪問cas.xiaogui.com認證系統時,瀏覽器將Cookie中的TGC攜帶到伺服器,伺服器根據這個TGC,查找與之對應的TGT。從而判斷用戶是否登錄過了,是否需要展示登錄頁面。TGT與TGC的關系就像SESSION與Cookie中SESSIONID的關系。

TGT:Ticket Granted Ticket(俗稱大令牌,或者說票根,他可以簽發ST)

TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根據他可以找到TGT。

ST:Service Ticket (小令牌),是TGT生成的,默認是用一次就生效了。也就是上面數字3處的ticket值。

序號7:  客戶端拿到請求中的ticket信息,也就是圖中1的位置

然後經過一個ticket過濾器,去認證系統CAS Server判斷ticket是否有效

這個過濾器的主要工作就是校驗客戶端傳過來的ticket是否有效

CAS Client 客戶端  shopping.xiaogui.com  中web.xml的配置

序號8:  向CAS Server認證系統發出驗證ticket的請求,也就是圖中2的位置,然後執行ticket驗證

序號9:  通過校驗之後,把用戶信息保存到客戶端的session中,並把客戶端的SessionID設置在Cookie中,同時告知客戶端ticket有效。當用戶再次訪問該客戶端,就可以根據Cookie 中的SessionID找到客戶端的Session,獲取用戶信息,就不用再次進行驗證了。也就是圖中響應給瀏覽器的部分。

序號10:  shopping.xiaogui.com客戶端接收到cas-server的返回,知道了用戶已經登錄,ticket有效,告知瀏覽器可以進行訪問。

至此,用戶第一次訪問流程結束。

當用戶第二次訪問http://shopping.xiaogui.com

序號11: 當用戶第二次訪問,仍然會經過AuthenticationFilter過濾器,但與第一次訪問不同的是此時客戶端session中已經存在用戶的信息,瀏覽器中的Cookie會根據SessionID找到Session,獲取用戶信息,所以不需要進行驗證,可以直接訪問。

序號12:  客戶端告知瀏覽器可以進行訪問。

當用戶第一次訪問http://pay.xiaogui.com

序號13:   用戶向pay.xiaogui.com  CAS Client客戶端發出請求

序號14:  :pay.xiaogui.com接收到請求,發現第一次訪問,於是給他一個重定向的地址,讓他去找認證中心登錄。

序號15: 瀏覽器根據上面響應的地址,發起重定向,因為之前訪問過一次了,因此這次會攜帶上次返回的Cookie:TGC到認證中心。

序號16:  認證中心收到請求,發現TGC對應了一個TGT,於是用TGT簽發一個ticket,並且返回給瀏覽器,讓他重定向到pay.xiaogui.comCAS Client客戶端。

序號17: 根據上面響應回來的地址,進行重定向到pay.xiaogui.comCAS Client客戶端

序號18:  pay.xiaogui.comCAS Client客戶端帶著ticket去認證中心驗證是否有效。

序號19:  認證成功,把用戶信息保存到客戶端的session中,並把客戶端的SessionID設置在Cookie中。當用戶下次訪問pay.xiaogui.comCAS Client客戶端,直接登錄,無需驗證。

序號20:  告知瀏覽器可以進行訪問

CAS單點登錄的原理分析大致就是上述的這些,至於CAS單點登錄的具體實現,將在下篇博客中寫道。

Ⅵ php的cms系統或者其他系統,後台配置項,是如何調用的

這些配置項一般都是寫到一個專門的配置文件當中的,例如:

phpcms是將所有的配置文件放置到了configs目錄當中,目錄當中又寫了database.php(資料庫配置項),system.php(系統配置項)等等

配置項在這些文件中直接寫成了一個數組,使用的時候寫一個獲取配置項的函數get_config('database'),這樣直接是把database.php給include進來了

更改配置項的時候是file_get_contents,然後匹配替換相關配置就好了。

/**
*設置config文件
*@param$config配屬信息
*@param$filename要配置的文件名稱
*/
functionset_config($config,$filename="system"){
$configfile=CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$filename.'.php';
if(!is_writable($configfile))showmessage('Pleasechmod'.$configfile.'to0777!');
$pattern=$replacement=array();
foreach($configas$k=>$v){
if(in_array($k,array('js_path','css_path','img_path','attachment_stat','admin_log','gzip','errorlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth_key','phpsso_version','connect_enable','upload_url','sina_akey','sina_skey','snda_enable','snda_status','snda_akey','snda_skey','qq_akey','qq_skey','qq_appid','qq_appkey','qq_callback','admin_url'))){
$v=trim($v);
$configs[$k]=$v;
$pattern[$k]="/'".$k."'s*=>s*([']?)[^']*([']?)(s*),/is";
$replacement[$k]="'".$k."'=>${1}".$v."${2}${3},";
}
}
$str=file_get_contents($configfile);
$str=preg_replace($pattern,$replacement,$str);
returnpc_base::load_config('system','lock_ex')?file_put_contents($configfile,$str,LOCK_EX):file_put_contents($configfile,$str);
}

Ⅶ Metabase-BI系列04:cookie實現單點登錄sso

​ Metabase 可以作為獨立的BI平台,本身就有用戶組和許可權組。而且Metabase支持報表的分享和iframe嵌入的方式進行報表的呈現,我們可以通過這肆激種方式進行數據的呈現。

​ 我們需要登錄Metabase系統進行報表創建和發布,如果業務平台有許可權的用戶想通過業務平台用戶進入到Metabase裡面,就需要進行單點登錄,因為用戶不可能登錄兩個平台用兩個賬戶,當然如果用戶能夠接受,那就可以用兩個賬戶了。

​ Metabase支持多種單點登錄(sso)方式:

這里介紹通過cookie實現簡單的單點登錄

首先看一下Metabase裡面的cookie, metabase.SESSION就是Metabase訪問許可權的令牌,path為「/」根目錄下面,裂鄭襪所以獲取令牌,將把令牌塞到metabase.SESSION里就可以了。

Metabase doc API說明如下:

所以,我們需要調用/api/session/,傳入用戶和密碼,獲取令牌

直接訪問Metabase的/api/session會存在跨域的問題

修改Metabase後台允許跨域,Metabase後台用的Ring框架控制跳轉,我們引入開源的 ring-cors 框架,配置允許跨域的域和請求,配置Metabase的 handler.clj

對於cookie來說,不同域下的cookie不共享,必須在同個頂級域下設置cookie,所以這也是這種cookie實現單點比較受限制的問題。

對於統一域名不同埠的情況,直接將cookie放到path根目錄「/」即可,因為域是相同的

對於不同的二級域名的情況叢鍵,放到頂級域名下即可

如:aa.test.com和bb.test.com

關於cookie的介紹,推薦文章: https://www.cnblogs.com/hujunzheng/p/5744755.html

blog連接: https://mplingbao.github.io/2019/11/29/metabase-bi-cookie/

Ⅷ SAML和OAuth2這兩種SSO協議的區別

SSO是單點登錄的簡稱,常用的SSO的協議有兩種,分別是SAML和OAuth2。本文將會介紹兩種協議的不同之處,從而讓讀者對這兩種協議有更加深入的理解。

SAML的全稱是Security Assertion Markup Language, 是由OASIS制定的一套基於XML格式的開放標准,用在身份提供者(IdP)和服務提供者 (SP)之間交換身份驗證和授權數據。

SAML的一個非常重要的應用就是基於Web的單點登錄(SSO)。

在SAML協議中定義了三個角色,分別是principal:代表主體通常表示人類用戶。identity provider (IdP)身份提供者和service provider (SP)服務提供者。

IdP的作用就是進行身份認證,並且將用戶的認證信息和授權信息傳遞給服務提供者。

SP的作用就是進行用戶認證信息的驗證,並且授權用戶訪問指定的資源信息。

接下來,我們通過一個用SAML進行SSO認證的流程圖,來分析一下SAML是怎麼工作的。

上圖中User Agent就是web瀏覽器悶睜敏,我們看一下如果用戶想請求Service Provider的資源的時候,SAML協議是怎麼處理的。

SP將會對該資源進行相應的安全檢查,如果發現已經有一個有效的安全上下文的話,SP將會跳過2-7步,直接進入第8步。

RelayState是SP維護的一個狀態信息,主要用來防止CSRF攻擊。

其中這個SAMLRequest是用Base64編碼的<samlp:AuthnRequest>,下面是一個samlp:AuthnRequest的例子:

為了安全起見,SAMLRequest還可以使用SP提供的簽名key來進行簽名。

IdP收到這個AuthnRequest請求之後,將會進行安全驗證,如果是合法的AuthnRequest,那麼將會展示登錄界面。

這個form中包含了SAMLResponse信息,SAMLResponse中包含了用戶相關的信息。

同樣的SAMLResponse也是使用Base64進行編碼過的<samlp:Response>。

我們可以看到samlp:Response中包含有saml:Assertion信息。

我們可以看到上面的所有的信息交換都是由前端瀏覽器來完成的,在SP和IdP之間早讓不存在直接的通信。

這種全部由前端來完成信息交換的方式好處就是協議流非常簡單,所有的消息都是簡單的GET或者POST請求。

如果螞枝為了提高安全性,也可以使用引用消息。也就是說IdP返回的不是直接的SAML assertion,而是一個SAML assertion的引用。SP收到這個引用之後,可以從後台再去查詢真實的SAML assertion,從而提高了安全性。

SAML協議是2005年制定的,在制定協議的時候基本上是針對於web應用程序來說的,但是那時候的web應用程序還是比較簡單的,更別提對App的支持。

SAML需要通過HTTP Redect和HTTP POST協議來傳遞用戶信息,並且通常是通過HTML FORM的格式來進行數據的提交的。如果應用程序並不是web應用,比如說是一個手機App應用。

這個手機APP應用的啟動鏈接是 my-photos://authenticate , 但是手機app可能並不能獲取到Http POST的body內容。他們只能夠通過URL來進行參數的傳遞。

這就意味著,在手機APP中不能夠使用SAML。

當然,要想工作也可以,不過需要進行一些改造。比如通過第三方應用對POST消息進行解析,然後將解析出來的SAMLRequest以URL參數的形式傳遞給APP。

另一種方法就是使用OAuth2.

因為Oauth2是在2012年才產生的。所以並沒有那麼多的使用限制。我們可以在不同的場合中使用OAuth2。

我們先來看一下OAuth2中授權的流程圖:

一般來說OAuth2中有4個角色。

resource owner: 代表的是資源的所有者,可以通過提供用戶名密碼或者其他方式來進行授權。通常來是一個人。

resource server:代表的是最終需要訪問到資源的伺服器。比如github授權之後獲取到的用戶信息。

client: 用來替代resource owner來進行交互的客戶端。

authorization server: 用來進行授權的伺服器,可以生成相應的Access Token。

整個流程是這樣的:

Client向resource owner發起一個授權請求,resource owner輸入相應的認證信息,將authorization grant返回給client。

client再將獲取到的authorization grant請求授權伺服器,並返回access token。

client然後就可以拿著這個access token去請求resource server,最後獲取到受限資源。

OAuth2並沒有指定Resource Server怎麼和Authorization Server進行交互。也沒有規定返回用戶信息的內容和格式。這些都需要實現方自己去決定。

OAuth2默認是在HTTPS環境下工作的,所以並沒有約定信息的加密方式。我們需要自己去實現。

最後,OAuth2是一個授權協議,而不是認證協議。對於這個問題,其實我們可以考慮使用OpenID Connect協議。因為OpenID Connect就是基於OAuth2實現的,並且添加了認證協議。

OpenID Connect簡稱為OIDC,已成為Internet上單點登錄和身份管理的通用標准。 它在OAuth2上構建了一個身份層,是一個基於OAuth2協議的身份認證標准協議。

OAuth2實際上只做了授權,而OpenID Connect在授權的基礎上又加上了認證。

OIDC的優點是:簡單的基於JSON的身份令牌(JWT),並且完全兼容OAuth2協議。

在SAML協議中,SAML token中已經包含了用戶身份信息,但是在OAuth2,在拿到token之後,需要額外再做一次對該token的校驗。

但是另一方面,OAuth2因為需要再做一次認證,所以可以在 Authorization Server 端對token進行無效處理。

做過SSO的應該都聽說過CAS。CAS的全稱是Central Authentication Service,是一個企業級的開源的SSO認證框架。

CAS內部集成了CAS1,2,3,SAML1,2,OAuth2,OpenID和OpenID Connect協議,非常的強大。我們會在後面的文章中介紹CAS的使用。

Ⅸ phpcms v9 前台修改頭像沒反應

用戶頭像沒存在表裡,直接存在框架里,在member表裡有個欄位伏遲「avatar」,就是有沒有頭像的標志位,根據這個散廳逗沖賣判斷用戶有沒有頭像,有的話直接去phpcms/phpsso_server/uploadfile/avatar路徑下的相應id中取頭像,這個路徑是和每個用戶的級別以及id對應的。 希望對你有所幫助!

Ⅹ 伺服器裝什麼軟體 phpcms注入漏洞

本文利用了PHPCMS V9的兩個漏洞,一個是讀取任意文件漏洞,另一個是模版運行php腳本漏洞。使用到的工具:Navicat for Mysql/IE瀏覽器(建議使用代理)/湛藍v9代碼包(包含文中使用到的所有文件、代碼和木馬)

1、放置data.txt以備在目標站點讀取並在目標站點生成PHP木馬腳本使用。

例如將data.txt放置在yun..com/j0192/data.txt

2、通過v9漏洞獲取配置信息(請參閱:phpcms V9最新讀取站點任意文件漏洞http://skyhome.cn/phpcms/176.html)。

/index.php?m=search&c=index&a=public_get_suggest_keyword&url=asdf&q=../../phpsso_server/caches/configs/database.php

3、通過v9系統漏洞獲取到的資料庫信息遠程登陸目標站點資料庫,在v9_admin和v9_sso_admin表中添加賬號

username欄位:admn
password欄位:
encrypt 欄位:bGV22e
issuper 欄位: 1

4、通過資料庫添加管理員賬號後使用以下用戶名密碼在後台登陸,然後修改當前用戶密碼。

用戶名:admn
密碼:123456

5、ctrl+a復制write.php全部內容粘貼進v9默認模版下的footer.html保存,然後點擊footer.html的可視化運行該模版中的腳本,到此時就完成在目標站點生成木馬腳本。

6、打開ifeng.com/caches/caches_template/default/wap/data.class.php

用戶名:admin
密碼:admin

7、隱藏新增加的管理員。

通過木馬腳本上傳替換/phpcms/moles/admin/admin_manage.php(默認匹配%admn%),然後登陸目標站點後台查看管理員列表是否還有用戶名為admn的超級管理員,如果沒有則表明我們完成了新加管理員的隱藏。

8、隱藏新增加的關聯鏈接

通過木馬腳本上傳替換/phpcms/moles/admin/keylink.php((默認匹配%skyhome%))

9、將目標網站的漏洞修復,以防其他黑客入侵。

通過木馬腳本上傳替換/phpcms/moles/search/index.php

防黑參考:

1、關閉資料庫遠程訪問。
2、靜態文件及附件等文件目錄禁止執行許可權。
3、腳本文件目錄禁止寫許可權。
4、系統後台等重要目錄限制IP訪問。
5、及時關注開源系統官方補丁升級和烏雲、sebug等漏洞發布平台,修復系統漏洞。

閱讀全文

與phpsso開源框架相關的資料

熱點內容
pr怎麼壓縮文件大小 瀏覽:861
查看oracle字元集命令 瀏覽:177
鋰電池增加密度 瀏覽:659
linux用戶密碼忘記 瀏覽:240
gb壓縮天然氣 瀏覽:633
圖片拼接不壓縮app 瀏覽:668
我的世界如何編程 瀏覽:84
vue反編譯代碼有問題 瀏覽:948
linuxshell字元串連接字元串 瀏覽:51
androidviewpager刷新 瀏覽:438
python編程計算平均分 瀏覽:678
加密數字貨幣市值查詢 瀏覽:692
時尚商圈app怎麼樣 瀏覽:584
stacklesspython教程 瀏覽:138
用命令行禁用135埠 瀏覽:212
linux防火牆編程 瀏覽:627
pdf閱讀器刪除 瀏覽:979
考研人如何緩解壓力 瀏覽:822
買電暖壺哪個app便宜 瀏覽:505
洛克王國忘記伺服器了怎麼辦 瀏覽:782