SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法

作者:郑德鼎 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, Digital Transformation, SD, WM, 仓库管理, 开发, 数字化转型, 数据工程, 销售分销
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

单点登录( Single Sign On,简称 SSO

)相信大家都不陌生,它是企业信息化建设的重要组成部分。笔者前段时间刚刚参与了一个关于单点登录升级的小项目,收获颇丰,特地拿出来和大家分享。

**背 景**

客户早期在自己的门户网站上实现了基于MD5/BASE64加密方式的单点登录。现阶段由于SuccessFactors升级安全策略,启用了SAML2.0协议。客户本身安装了Microsoft

ADFS的产品服务,但是没有对应接口的调用API,且没有充足的测试调试时间,无法快速平滑的进行接口的改造和切换。因此转而尝试SAPNetWeaver

7.5的单点登录解决方案。

**关于SAML2.0**

SAML,全称为Security Assertion Markup

Language,是一种用于安全性断言的标记语言,目前的最新版本是2.0。该协议的核心是IDP(Identity

Provider,即身份鉴别服务器)和SP(Service Providers,即服务提供者)通过用户浏览器的重定向访问实现数据交换。

在SAML协议中,一旦用户身份被主网站(IDP)认证,该用户再去访问其他在主站注册过的应用(SP)时,都可以直接登录,而不用再输入身份和口令,因此其非常适合应用于单点登录场景。

SAML2.0的处理过程,网上有很多讲解资料,笔者这里结合案例做了简化,主要流程可以参考下图:

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

单点登录处理流程

1)用户通过终端浏览器登录到portal;

2)当点击门户上的SuccessFactors入口时,门户会调用IDP接口(实际上就是从后台登录到NetWeaver);

3)IDP对用户进行认证,成功后会生成一段加密的认证信息,以html页面源码的形式返回给浏览器;

4)浏览器收到返回结果后自动提交,主要作用就是将认证结果自动发送给SP;

5)SP收到请求,解密并判断信息是否合法。如果合法,则跳转至最终页面;

6)浏览器最终跳转到了用户想访问的SF页面。

以上过程,用户仅仅输入了一次密码(登录到portal)。实际上,在向IDP发送请求时,后端也进行了一次基本密码认证(登录到NetWeaver),这里需要做二次开发。本例中是把NetWeaver当作IDP来使用了,如果直接使用SAP

NetWeaver Portal,仅通过配置就可以实现单点登录。

SAP官方提供了多个基于SAML2.0的 单点登录解决方案 ,本例中参考的是 SAP Portal与SuccessFactors的单点登录方法

。由于篇幅所限,详细配置过程就不放出来了,感兴趣的朋友可以在文末获取相关配置文档。

**接口调用方法**

配置完成后,进入到NetWeaver

Administrator的SAML2.0界面,在身份提供者页签我们找到单点登录端点URL,格式是:https://ip:port/saml2/idp/sso

此地址用GET方法调用,有两个参数:

• saml2sp,配置的SP名称;

• RelayState,想要跳转到的页面,一般默认为SuccessFactors登录后首页。

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

获取单点登录端点地址

用Postman工具模拟调用成功后,会返回一个html页面的代码。

将返回结果复制出来,保存成html文件。查看源代码,可以发现页面实际上是一个自动刷新提交的form表单,hidden部分是SP返回的断言认证密文和将要跳转的终端页面。

用浏览器打开,即可进入主页 。

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

工具调试

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

IDP返回的页面代码

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

用户最终看到的页面

在NetWeaver

Administrator的SAML2.0配置界面,我们可以查看到这个会话的相关信息。包括用户名、用户的终端IP、用户登录的SP、会话的有效期等等。会话的有效期默认为一小时,可以手动终止会话。系统

每隔6小时 自动清理一次过期会话。

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

查看会话

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

会话详细信息

**注意事项**

• 账号的同步问题

单点登录的账号必须在Portal、NetWeaver7.5、SuccessFactors中都存在。本案例中,客户的账号是统一维护在Microsoft

ADFS中。我们可以在NetWeaver的账号管理界面,将数据源变更为"Microsoft

ADS+数据库"。然后配置一个LDAP服务,将账号信息直接从ADS中同步过来。

注意账号名重复的,系统会优先保留ADS同步过来的账号。本地数据库中的账号会自动设置为锁定状态。

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

账号管理界面

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

修改账号的数据源

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

配置LDAP服务

• Javascript的兼容性问题

IDP认证成功之后返回的html页面,在部分浏览器中不兼容,会导致浏览器卡在空白页面,要注意在二次开发中予以规避调整。

好了,本期 分享就到这里了 。 大家可以在公 众号后 台留言 获取本文中 涉及到的相关 配置文档(留言暗号 : S AML2. 0

)。

关注我,了解更多SAP开发小技巧

SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图
SAPNet Weaver 基于 SAML20安全协议的单点登录配置方法 - 封面图

** 参考链接: **

https://wiki.scn.sap.com/wiki/display/Security/Single+Sign-On+with+SAML+2.0

https://archive.sap.com/documents/docs/DOC-29737

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAPNetWeaver基于SAML20安全协议的单点登录配置方法.md」整理生成,仅用于内部技术分享与学习交流。