在筆者先前的文章——《基于saml2.0的平臺(tái)(適用多種平臺(tái))單點(diǎn)登錄配置,以okta為例》中,詳細(xì)介紹了如何把一個(gè)自開(kāi)發(fā)的三方系統(tǒng),集成到okta或者IAS平臺(tái)。
成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo),提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷(xiāo)、微信小程序定制開(kāi)發(fā)、公眾號(hào)商城、等建站開(kāi)發(fā),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專(zhuān)家,為不同類(lèi)型的客戶(hù)提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶(hù)在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。經(jīng)過(guò)筆者的實(shí)際工作經(jīng)驗(yàn),發(fā)現(xiàn)SF自己本身其實(shí)也可以作為一個(gè)單點(diǎn)登錄平臺(tái)來(lái)使用。
具體場(chǎng)景:自開(kāi)發(fā)的三方系統(tǒng)(JAVA)需要和SF系統(tǒng)進(jìn)行單點(diǎn)登錄集成,在前面的文章中,我們?yōu)榱撕蚐F系統(tǒng)集成,是通過(guò)外部的單點(diǎn)登錄平臺(tái)IAS來(lái)實(shí)現(xiàn)的,在這里其實(shí)是可以一步到位直接和SF進(jìn)行集成的。
因?yàn)镾F自身也是一個(gè)產(chǎn)品,它也提供了類(lèi)似于單點(diǎn)登錄平臺(tái)的作用,所以可以不需要IAS平臺(tái),直接在SF自身的平臺(tái)配置單點(diǎn)登錄。
解決方法:下面介紹下具體的方法。
SF的單點(diǎn)登錄配置特別簡(jiǎn)單,首先登錄SF專(zhuān)用的配置網(wǎng)址。
再進(jìn)入特定的配置界面:
第一步:這里的重點(diǎn)就是截圖中文字描述的,首先下載idp認(rèn)證服務(wù)器的xml,其實(shí)就是認(rèn)證服務(wù)器的公鑰證書(shū),下載到自開(kāi)發(fā)服務(wù)器后,以后的單點(diǎn)登錄認(rèn)證就通過(guò)這個(gè)idp來(lái)完成。
第二步:配置SSO參數(shù),可以參考上一篇文章,基本保持一致,這里不需要把自開(kāi)發(fā)服務(wù)生成的metadata.xml文件上傳到這里單點(diǎn)配置。
SF單點(diǎn)登錄與IAS平臺(tái)級(jí)配置區(qū)別:上面介紹的都是很簡(jiǎn)單的配置,只要詳細(xì)的看完了上一篇文章,這個(gè)配置就沒(méi)問(wèn)題。
這里重點(diǎn)說(shuō)一下SF單點(diǎn)登錄和IAS單點(diǎn)登錄配置的不同之處。
大的不同在于,當(dāng)在自開(kāi)發(fā)項(xiàng)目中,當(dāng)調(diào)用單點(diǎn)登錄接口/saml/login成功后會(huì)通過(guò)瀏覽器自動(dòng)跳轉(zhuǎn)到/saml/SSO。問(wèn)題的關(guān)鍵在于請(qǐng)求的域名和http方式,如果是IAS平臺(tái)集成,會(huì)跳轉(zhuǎn)到IAS平臺(tái)自己配置好了前綴的/saml/SSO接口,比如https://ias.idp.com/saml/SSO。
但是如果是SF的單點(diǎn)登錄配置,它不會(huì)自動(dòng)的按照SF平臺(tái)配置的/saml/SSO鏈接調(diào)用,它只會(huì)根據(jù)當(dāng)前自開(kāi)發(fā)服務(wù)器的ip地址來(lái)自動(dòng)跳轉(zhuǎn)比如:http://10.10.10.10:80/saml/SSO。
在平時(shí)的開(kāi)發(fā)中,其實(shí)都好說(shuō),主要是當(dāng)需要生產(chǎn)上線的情況,需要通過(guò)域名和證書(shū)訪問(wèn)。
這時(shí)候SF卻不能夠像IAS一樣,只要在SSO配置的地方配置好就行,只能通過(guò)代碼的形式來(lái)實(shí)現(xiàn)把本機(jī)ip替換成指定的域名和端口。
這里的解決方法是通過(guò)Nginx請(qǐng)求頭配置和Tomcat的流程引擎——RemoteIpValve來(lái)控制,在tomcat執(zhí)行請(qǐng)求的過(guò)程中,把本地ip替換成指定的域名。
關(guān)于tomcat的RemoteIpValve流程引擎原理,也有一篇專(zhuān)門(mén)的文章講解,有興趣可以去看看。
下面說(shuō)下具體的解決辦法:
Nginx配置:location / {
#請(qǐng)求使用https
proxy_set_header X-Forwarded-Proto https;
#本機(jī)ip替換為指定域名
proxy_set_header X-Forwarded-Host test.baidu.com;
#使用指定的端口
proxy_set_header X-Forwarded-Port 8082;
proxy_pass http://10.10.10.10:8090;
}
Tomcat配置:server:
tomcat:
remoteip:
protocol-header: X-Forwarded-Proto
protocol-header-https-value: https
就這樣,通過(guò)Nginx在請(qǐng)求頭配置一系列指定的參數(shù),可以把tomcat接收到的請(qǐng)求http://10.10.10.10:80/saml/SSO,直接動(dòng)態(tài)轉(zhuǎn)換為https://test.baidu.com:8082/saml/SSO。
這樣就直接解決了在SF單點(diǎn)登錄之初,從saml/login無(wú)法轉(zhuǎn)向我們需要的saml/SSO請(qǐng)求的問(wèn)題。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧