SAP官網的架構圖
https://cloudplatform.sap.com/scenarios/usecases/authentication.html
上圖介紹了用戶訪問SAP云平臺時經歷的Authentication過程。
本文使用的例子是用戶訪問SAP Marketing Cloud而非SAP云平臺,但是原理一致。
步驟1:用戶向Service provider發(fā)起服務請求。
步驟2:Service provider把這個請求重定向到提供認證的租戶上,在我這個例子是SAP ID service,即account.sap.com.
這里Marketing Cloud和SAP ID Service被配置為互相信任。
請求1響應頭里的302重定向字段:https://let-me-in.hybris.com/saml/idp-redirection?httpd_location=https://hybris.com/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html
被重定向到SAP云平臺的account ID service(accounts.sap.com):
https://accounts.sap.com/saml2/idp/sso?sp=com:ydcHybris:spring:sp2&RelayState=https://hybris.com/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html
步驟3:IDP給用戶發(fā)送一個html page,要求用戶提供用戶名和密碼。
如果查看這個html的源代碼,能發(fā)現(xiàn)除了用戶名和密碼兩個輸入字段外,還包含了一些隱含字段,如下圖高亮所示,這些字段是IDP返回給用戶時在服務器端生成的,用于步驟5的IDP服務器端認證處理:
xsrfProtection
spId
spName
authenticity_token
idpSSOEndpoint
步驟4:用戶輸入用戶名和密碼后,點擊login按鈕,這些信息通過HTML form發(fā)送到了SAP ID service的服務器端:
sso請求的url:https://accounts.sap.com/saml2/idp/sso
第二個大寫的SSO請求的url:https://let-me-in.demo.hybris.com/saml/SSO
步驟5:SAP ID service的服務器端完成驗證,發(fā)送SAML assertions作為響應給用戶。
這個SAML響應是XML格式的,結構如下:
步驟6也就是最后一步,拿到這個SAML assertion后,用戶就能夠訪問service provider了。
要獲取更多Jerry的原創(chuàng)文章,請關注公眾號"汪子熙":
聯(lián)系客服