2013-03-19 77 views
2

我正在集成第三方應用程序。它將通過iframe嵌入我的網站。當實例的iframe,用戶名和唯一的ID(會話ID)發送到這種格式的第三方應用:使用coldfusion會話ID進行SSO身份驗證

http://www.thirdpartyapp.com?username=9999999&uuid=appname_11111_d3d379ab97c23930-154C9639-1CC4-6169-286F5EB34A37B3C3

一旦在網站上的用戶嘗試使用任何功能在Iframe內部,第三方應用程序將sessionid發送回服務器,以驗證會話是否已登錄。

如果用戶已登錄,則應用程序會將會話變量(例如Session.Auth.Authenticated)設置爲true。

我能夠通過使用CFID來實現這一點,CFTOKEN像這樣:

http://www.mysite.com/checkauth/index.cfm?CFID=2223344&CFTOKEN=40487e5933d11e75-F94396AF-1CC4-6169-28200888416FFC

的第三方應用程序發送的格式要求:

http://www.mysite.com/checkauth/index.cfm?uuid=appname_11111_d3d379ab97c23930-154C9639-1CC4-6169-286F5EB34A37B3C3

基本上與我的網站相同的格式發出請求。有什麼方法可以使用session.sessionid來檢查驗證過的會話嗎?

+0

所以你的iframe的源代碼是'http://www.thirdpartyapp.com?username = 9999999&uuid = appname_11111_d3d379ab97c23930-154C9639-1CC4-6169-286F5EB34A37B3C3'?似乎這種事通常是通過cfhttp對話完成的。 – Travis 2013-03-19 12:29:17

+0

@travis,是的iframes來源將是。我只關心如何使用該sessionid驗證用戶登錄會話。 – tan369 2013-03-19 22:39:34

回答

1

「是否有任何方法可以使用Session.sessionid檢查經過驗證的會話?」

似乎是可能的。 ColdFusion的sessionid是由三件事情:

 appName_CFIDE_CFTOKEN 

在你的情況下,由第三方應用程序發送請求的URL參數的格式同session.sessionId

 appname_11111_d3d379ab97c23930-154C9639-1CC4-6169-286F5EB34A37B3C3 

現在,如果你啓用了「使用UUID的CFTOKEN」在CF管理下的‘設置’部分中,您將得到會話ID如下所示:

 PLANTOMATIC_11201_1f8a073a0ba85bf5-2F7356F3-BE59-A0B4-F3E493BD794062C6 

所以你需要做的是申請日e在CF Admin中設置「使用UUID進行cftoken」。然後你就可以發送請求到第三方類似以下內容:

 http://www.thirdpartyapp.com?username=9999999&uuid=#session.sessionid# 

將與參數「UUID」迴響應。之後,您可以檢查平等並採取必要措施。