乐趣区

基于SAML20的SAP云产品Identity-Authentication过程介绍

SAP 官网的架构图
https://cloudplatform.sap.com…

上图介绍了用户访问 SAP 云平台时经历的 Authentication 过程。
本文使用的例子是用户访问 SAP Marketing Cloud 而非 SAP 云平台,但是原理一致。

步骤 1:用户向 Service provider 发起服务请求。
步骤 2:Service provider 把这个请求重定向到提供认证的租户上,在我这个例子是 SAP ID service,即 account.sap.com.

这里 Marketing Cloud 和 SAP ID Service 被配置为互相信任。

请求 1 响应头里的 302 重定向字段:https://let-me-in.hybris.com/…://hybris.com/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html

被重定向到 SAP 云平台的 account ID service(accounts.sap.com):
https://accounts.sap.com/saml…:ydcHybris:spring:sp2&RelayState=https://hybris.com/sap/bc/ui5…

步骤 3:IDP 给用户发送一个 html page,要求用户提供用户名和密码。

如果查看这个 html 的源代码,能发现除了用户名和密码两个输入字段外,还包含了一些隐含字段,如下图高亮所示,这些字段是 IDP 返回给用户时在服务器端生成的,用于步骤 5 的 IDP 服务器端认证处理:

  • xsrfProtection
  • spId
  • spName
  • authenticity_token
  • idpSSOEndpoint

步骤 4:用户输入用户名和密码后,点击 login 按钮,这些信息通过 HTML form 发送到了 SAP ID service 的服务器端:

sso 请求的 url:https://accounts.sap.com/saml…

第二个大写的 SSO 请求的 url:https://let-me-in.demo.hybris…

步骤 5:SAP ID service 的服务器端完成验证,发送 SAML assertions 作为响应给用户。

这个 SAML 响应是 XML 格式的,结构如下:

步骤 6 也就是最后一步,拿到这个 SAML assertion 后, 用户就能够访问 service provider 了。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版