1. 为什么要把身份认证交给独立的身份提供方
先说一个很多团队都会遇到的场景:公司上了 SAP Analytics Cloud 做报表分析和预算预测,一开始直接用 SAC 自带的用户管理,管理员在后台一个个建账号、分角色,人少的时候还好,等业务用户超过几十个、上百个,问题就全冒出来了。有人离职了账号没销、有人换了部门权限没调、新同事要上线赶着开账号,全压在管理员一个人身上。更要命的是,每次审计过来查访问权限,你都得手工导出一堆 Excel 一张张核对。
这篇文章要分享的,就是把 Identity Authentication(以下简称 IAS)作为 SAP Analytics Cloud 的身份提供方,替换掉 SAC 内置的本地认证。这样做的好处很直接:用户账号归到统一的身份源管理,SAC 这边只需要配置信任关系,让 IAS 来回答"这个人是谁、能不能进",进到 SAC 之后再看具体分配的角色。
这个方案适合谁?如果你所在的企业已经在用 SAP BTP 或其关联的云服务,或者公司有统一目录服务、希望为将来的 SAP 套件集成铺路,那 IAS 是天然的选择。它跟 SAC 都是 SAP 自家的产品,配置链路短、文档对齐度高、排障时不用在两家厂商之间来回踢皮球。即便是第一次接触 SAML 2.0 这个概念,看完接下来的步骤也能一步步把环境搭起来。
我最早帮客户做这个配置的时候,最大的感受是:SAP 文档其实写得很全,但它把配置拆散在 IAS 和 SAC 两个管理界面里,新手容易在"到底先在哪儿建应用"这一步卡住。这篇文章就把两边的操作串成一条完整的链路,按实战顺序讲清楚每一步背后的原因和踩坑点。
2. 配置前必须想清楚的几件事
2.1 先摸清身份源,再动手建应用
很多教程上来就让你登录 IAS 管理界面创建应用,我建议你先花十分钟想清楚一个问题:IAS 里的用户到底从哪里来?IAS 本身可以当做一个独立的用户目录用,管理员手工创建用户,但它更常见的玩法是连接企业已有的身份源,比如 SAP SuccessFactors、微软 Entra ID(以前叫 Azure AD)、或者企业自建的 LDAP。SAC 最终认的是 IAS 返回的断言,至于 IAS 后面的用户是手工建的还是同步来的,SAC 并不关心,但这个选择会直接影响你后面测试时用什么账号登录。
如果你只是做概念验证,最省事的做法是在 IAS 里手工建两个测试用户,一个模拟普通业务用户,一个模拟管理员。如果你是要上生产,那必须先把用户同步链路理顺。我见过一个项目,实施顾问跳过用户源规划直接配好了 SSO,结果生产环境一开,用户全从 IAS 过来,但大家忘了给 IAS 配目录同步,账号根本不存在,登录全被拒。这个坑不是技术配置难,而是规划漏了。
另外要提前确认企业域名邮箱和 IAS 的归属关系。企业如果已经启用 SAP 云服务,域名通常在 IAS 或 BTP 子账号里做过校验。SAC 这边其实不强制校验域名,但 IAS 在发出登录请求时,最好让用户的邮箱域名和身份提供方的配置保持一致,否则后面做属性映射时会多出不少麻烦。
2.2 设计好属性映射,避免进了系统却没人
SAML 2.0 这个东西说起来复杂,但你可以把它简化成一句话:身份提供方(IAS)负责验证密码,然后把用户的"身份信息"打包成一个 XML 断言,交给服务提供方(SAC)来解析。这个"身份信息"不是随便发的,IAS 得知道往断言里塞哪些字段,SAC 得知道从断言里读哪些字段,两边得对上暗号。
对 SAC 来说,它默认最关心的字段是"用户 ID"和"邮箱"。IAS 端你可以配置把用户登录名、邮箱、名字、姓氏都放进断言。SAC 收到之后,会拿断言里的用户 ID 去匹配本地用户——不,严格说 SAC 并不需要提前建好用户。SAC 默认的策略是,如果断言里带邮箱,SAC 会自动创建用户,并为用户分配默认角色。
这意味着什么?意味着属性映射没配好,用户可能被"拒之门外"。我遇到过一种情况:IAS 那边默认断言只包含登录 ID(比如zhangsan),不含邮箱,SAC 接收后新建用户时找不到邮箱字段,于是报了"用户不存在或无权限"的错误。后来把邮箱和名字都加上,问题立刻消失。
所以配置之前,先整理一张属性映射表,至少包含以下几项:
| SAC 期望属性 | IAS 断言属性 | 说明 |
|---|---|---|
| 用户 ID | uid 或 login name | 唯一标识,尽量用企业工号 |
| 邮箱 | mail / email | 必须要有,SAC 用户预置依赖它 |
| 名字 | givenName | 可选,为了 SAC 里显示友好名 |
| 姓氏 | sn / familyName | 可选,配合上面一起用 |
这张表做好,后面配置 IAS 的断言属性和 SAC 的属性映射时,就是照抄的事。
3. Identity Authentication 侧的应用创建与信任配置
3.1 从零创建 SAML 应用
登录 IAS 管理控制台(一般在tenant-id.accounts.iam.cloud.sap),左侧菜单找到"Applications",点击"Add"新建一个应用。服务类型选"SAML 2.0 Application",这个不要选错,虽然 IAS 也支持 OpenID Connect,但 SAC 这边的标准集成走的是 SAML 2.0,选错协议后面没法继续。
应用名称你就按业务场景起,比如" SAP Analytics Cloud - Production ",方便以后一眼认出来。保存之后,IAS 会生成该应用独有的 SAML 元数据 URL,这个 URL 长这样:https://tenant-id.accounts.iam.cloud.sap/saml/metadata/<app-id>,记下它,后面 SAC 那边要用。
紧接着需要配置"Subject Name Identifier"。我建议选"User ID",因为 SAC 用它作为本地用户的唯一标识。如果你更习惯用邮箱作为唯一标识,也可以选邮箱,但要注意邮箱改了以后用户匹配逻辑会受影响。生产项目我一般建议用不变的用户 ID,这跟企业 AD 域账号的做法不同,但在云环境里更稳。
3.2 配置断言属性(属性映射的落地)
在 IAS 应用的"Assertion Attributes"部分,你需要把之前列好的映射关系落地。点开属性配置,IAM 会有一个内置的 Principal 属性列表,你只需要启用需要的字段:
uid:对应登录名,SAC 当作用户 IDmail:对应邮箱givenName:对应名字sn:对应姓氏
这里有个容易被忽略的细节:IAS 输出的断言属性名默认是标准的uid、mail这样的短名称,但有些客户环境里 SAC 期望的是带命名空间的长名称,比如urn:oid:0.9.2342.19200300.100.1.3(邮箱的 OID)。实际配置时要跟 SAC 管理界面的"身份提供方"页面里的属性名称对齐。走默认短名称一般没问题,但如果你配置完登录后出现属性缺失类报错,优先检查这个。
3.3 导出证书与元数据
SAP 的集成方式比较友好:不需要你手工复制一堆 XML,直接在 IAS 应用的"Single Sign-on"配置页下方有"Download Metadata"按钮,下载的是一个包含证书、断言消费端点等全部信息的 XML 文件。SAC 的配置页面支持直接上传这个 XML 文件,也可以填元数据 URL 让 SAC 自动拉取。
我个人倾向于上传 XML 文件,原因很简单:在隔离网络环境下,SAC 发起元数据拉取可能失败,而上传文件是一次性的操作,不依赖后续网络连通性。另外,生产环境如果要对证书做变更管理,上传文件的方式更能精确控制切换时间点。
4. SAP Analytics Cloud 侧的身份提供方配置
4.1 在 SAC 管理控制台添加自定义 IdP
登录 SAC 的管理控制台(URL 一般是https://<tenant>.us10.hana.ondemand.com这样的形式),进到"System" > "Administration" > "Security" > "Identity Providers"。点开"Add Identity Provider",选择"SAML 2.0"。
这一页你可以上传第 3 节拿到的 IAS 元数据 XML,SAC 会自动解析出实体 ID 和单点登录端点。如果一切正常,保存后你会看到 IAS 出现在 IdP 列表里。此时还没有启用它,SAC 会提示"配置尚未激活,用户仍使用默认认证",先不用急。
4.2 配置用户自动预置,还是手工建用户
SAC 里的用户来源逻辑需要说清楚:你可以完全不提前建任何用户,全部交给 SAML 断言自动预置;也可以提前手工建一批账号,让 SAML 登录来匹配。两种方式各有适用场景。
对大多数项目,我建议先开启自动预置。上讲过了,SAC 在收到 IAS 的断言后,发现本地没有这个用户,就会自动创建一个新用户,并把它关联到默认角色。这就省去了"两边都要建账号"的重复劳动。
做法是在 IdP 配置里找到"Default Role for New Users",给它分配一个初始角色。注意别一上来给"管理员",我见过粗心的同事把默认角色配成管理员,新用户一登录全成管理员,权限失控了才知道出事。建议默认角色设为"Everyone"或者只读分析角色,等首次登录以后,再按需提升。
4.3 关联用户出问题时的排查顺序
配置完成后,SAC 的 IdP 列表里 IAS 那条记录会有一个"Test"按钮。点它可以直接发起一次测试登录。这一步很多人会跳过,我强烈建议做:它会模拟真实用户点击 SAC 登录页面的完整链路,你能在一步之内看出断言有没有成功返回、SAC 是否接收。
如果测试失败,最常见的两个报错是"IDP Initiated SSO failed"和"Invalid SAML Response"。前者通常是 IAS 应用配置里断言消费端点或实体 ID 没对齐,后者通常是证书或签名算法不匹配。遇到这两个报错不要慌,先检查两边元数据,再用 SAML 解码器解析一下返回的断言,看具体是哪个字段缺失。
实际经验:SAML 报错信息往往很笼统,真正有效的排障方法是把浏览器里返回的 SAML Response 拿出来用在线解码器解一下,直接看断言里到底有没有 SAC 要求的属性。花两分钟能看到的信息,比在配置界面里猜半天有用得多。
5. 启用 SSO 并完成首批用户登录验证
5.1 先把双认证开着,别直接断掉原登录方式
这是我最想强调的一点。很多管理员配置完 IdP,立刻把"启用 SSO"的开关打开,结果登录一失败,所有人被锁在外面,最后还得靠后台绕过认证去恢复。
正确做法是分两阶段切换:
- 并行验证阶段:启用 SSO,但不要删除或禁用原有认证机制。SAC 的登录界面会优先走 IdP,但管理员依然可以通过特殊的后台链接绕过 SSO 登录。
- 小范围试点:先让 IT 部门或几个关键用户配好 IAS 账号,发起几轮测试登录,确认角色分配正确、报表能打开,再逐步放开。
在 SAC 里,这个开关在"Security" > "Identity Providers"页面,启用你要用的 IAS 提供商后,系统会让它成为首选认证方式。此时千万别去删掉默认 IdP。
5.2 验证清单:从登录到权限的完整链路
启用之后不要只看"能登录"就完事,我每次上线前会对照下面这张清单走一遍:
| 验证项 | 操作方式 | 预期结果 |
|---|---|---|
| 普通用户登录 | 打开 SAC 登录 URL,重定向到 IAS 登录页 | 输入 IAS 账号密码后能回跳到 SAC 主页 |
| 管理员登录 | 管理员账号同样经 IAS 登录 | 能进入管理控制台且角色不变 |
| 角色分配 | 查看新登录用户的角色列表 | 默认角色已附加,无多余高权限角色 |
| 用户自动预置 | 用一个新账号首次登录 | SAC 用户列表自动出现该用户 |
| 会话超时 | 等待 SAC 会话超时后操作页面 | 被重定向到 IAS 重新认证 |
| 退出行为 | 登出 SAC | 会退出 SAC,同时最好也触发 IAS 的单点登出 |
最后一项"退出行为"特别值得留意。IAS 默认支持单点登出(SLO),SAC 也会把登出请求转发给 IdP。但如果你后面接入了更多 SAP 应用,登出逻辑会变成"一次登出、处处登出",这在某些场景下反而会被业务部门吐槽。所以项目上线前,最好和业务确认清楚登出范围,不一定要把所有应用都绑在一起登出。
6. 常见问题与排障技巧实录
6.1 登录时报"用户不存在"
这个问题大多出在属性映射上。SAC 尝试匹配 IAS 返回的断言属性与本地用户时,如果断言里没有 SAC 期望的邮箱或用户 ID,它就无法自动预置用户。
排查思路:
- 拿到 SAML Response,确认断言里有什么属性
- 对比 SAC 的 IdP 配置里"用户 ID"和"邮箱"对应的是哪个断言名
- 在 IAS 应用配置里补上缺失的断言属性
6.2 每次登录都要输入两次密码
这通常不是配置错误,而是会话没有在 IAS 和 SAC 之间正确传递。SAC 与 IAS 之间走的是浏览器重定向,理论上不会出现两次独立认证。但如果你配置时不小心开了"Force Authentication",IAS 会忽略已有会话强制重新验证。
进入 IAS 应用的"Authentication"配置,把"Force Authentication"关掉即可。
6.3 证书轮换后突然无法登录
IAS 的签名证书有过期时间,SAC 侧如果还保留旧证书,签名验证就会失败。SAP 的 IAS 在证书快到期时会让管理员下载新证书并重新上传到服务提供方。
这里有一个年终最容易忘的事:SAC 侧不会自动更新证书,你需要定期检查 IAS 证书有效期,并在 SAC 的 IdP 配置里更新。建议把证书到期日记在运维日历上,提前两周做轮换。
6.4 用户能登录但看不到任何模型/故事
登录成功只代表认证通过,能不能看数据取决于 SAC 里的角色和权限分配。如果你用的是自动预置,新用户默认只有"Everyone"角色,它通常不附带任何数据访问权限。
这种情况不是 SSO 配置有问题,而是权限设计问题。排查路径:管理控制台 > 用户 > 找到该用户,查看角色和权限。给用户分配包含所需数据目录权限的角色,或者调整默认角色。
7. 最后给几点生产上线的实在建议
这套配置流程走完,SSO 其实只是开了个头。真正让这个方案产生价值的是后续长期的用户治理:账号生命周期、角色动态分配、审计合规。我在几个项目里反复踩过坑之后,总结了几条建议:
第一,把 IAS 当成唯一的用户入口,SAC 里的本地用户全部清理干净。如果本地还留着一批"管理员"账号,它们会变成绕过统一认证的后门。SAC 虽然不让你轻易删除内置管理员,但至少要把定制用户收敛到最小集,启用 SSO 后只保留一两个紧急逃生通道。
第二,角色分配不要一锤子买卖。SAC 的角色权限模型远比"管理员/用户"两级复杂,自动预置的默认角色只是一个起点。正式使用后,用 SAC 的团队功能(Teams)来管理权限集合,比逐个用户折腾角色要科学得多。
第三,定期做一次登录日志审计。IAS 控制台里能看到所有认证请求,SAC 的审计日志里也有用户登录和内容访问记录。每个月花十分钟拉一次日志,你会第一时间发现异常登录尝试或权限异常提升,这比事后被审计追责要体面得多。
我在一次项目交付中因为证书到期没及时更新,导致业务部门月初集体无法登录,那会儿才真正意识到:技术配置本身不难,难的是把"配置完成"变成"持续可靠运行"。这篇指南能帮你把前者做顺,但后者需要你在运维习惯上真正重视起来。希望这套步骤和坑位记录能让你少走些弯路。