ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SAC单点登录迁移实战:从SAP ID Service切换至Identity Authentication

SAC单点登录迁移实战:从SAP ID Service切换至Identity Authentication 前一阵子帮客户做 SAP Analytics CloudSAC的单点登录改造要把身份认证从默认的 SAP ID Service 迁到 Identity AuthenticationIAS上。本来想着这种标准配置应该半小时搞定结果从收集需求到真正跑通花了将近两天。中间踩了不少坑也是网上那些官方文档和教程里不会写明白的细节。所以整理一下完整的实战过程包括思路、具体配置步骤、以及几个特别容易让人卡住的地方希望能帮后面做同样事情的朋友少走弯路。1. 整体思路拆解为什么要用 Identity Authentication 替换默认身份源先把概念理清楚。SAC 默认自带 SAP ID Service 作为身份提供方员工直接拿 SAP 账号登录就行小规模试用或者内部简单场景完全够用。但一旦涉及到企业级的统一身份管控比如员工离职要在一个地方统一销户、希望用企业自己的 Active Directory 或者 Azure AD 做认证源、需要给不同部门分配不同 SAC 角色就必须把身份提供方换成 Identity Authentication。1.1 核心需求解析统一身份源和自定义域名背后的真实驱动我这次接手的客户需求特别典型。他们企业内部已经有了一套基于 IAS 的认证体系所有云应用都通过 IAS 做联合认证。SAC 如果继续用默认的 SAP ID Service就意味着多出一个独立的账号体系HR 系统同步账号的时候要多维护一份数据离职员工要单独在 SAP ID Service 里手动禁用IT 部门嫌麻烦安全审计也提出异议。另一个刚需是自定义域名。SAC 默认的访问地址是长这样的 tenanthostname.eu1.analytics.sap.com客户觉得不好记也希望访问入口统一成 sso.company.com 这样的企业域名。替换身份提供方之后顺便把访问域名也改了一举两得。说白了把身份提供方切到 IAS最重要的不是“换个登录按钮”而是让 SAC 的账号体系纳入企业既有身份治理体系。这会直接影响后续的权限管理、账号生命周期管理、以及审计合规。1.2 方案选型SAML 2.0 信任配置为什么是这个场景下的最优解SAP Analytics Cloud 支持两种主流的身份联合方式SAML 2.0 和 OpenID ConnectOIDC。在这个客户场景里我选的是 SAML 2.0原因是Identity Authentication 对 SAML 协议的支持非常成熟官方文档丰富遇到问题容易排查SAC 的 自定义身份提供方配置原生支持 SAML 元数据导入只需要交换元数据文件就能建立信任双方都不需要写一行代码客户现有的 IAS 和我们对接的 Azure AD 之间存的也是 SAML 联邦关系技术栈统一后面维护起来方便。SAML 本身的信任模型说白了就是“身份提供方IdP负责证明你是谁服务提供方SP根据这个证明决定给你什么权限”。SAC 就是那个 SP信任 IAS 签发的断言。1.3 整体配置流程预览从元数据交换到登录验证的六个环节整个配置过程可以拆成两大块。第一块是在 Identity Authentication 管理后台完成的包括创建应用、导入 SAC 的 SPI 元数据、配置用户属性映射。第二块是在 SAP Analytics Cloud 的“系统管理”里完成的包括导入 IdP 元数据、建立信任配置、启用自定义身份提供方、组织测试。建议按照下面的顺序操作不要跳步在 SAC 里生成并下载服务提供方元数据SP 元数据在 IAS 里创建 SAML 2.0 应用配置断言属性导出 IAS 的身份提供方元数据IdP 元数据在 SAC 里导入 IdP 元数据建立信任关系配置用户邮箱映射和角色分配停用默认身份源执行迁移验证顺序很重要。如果你先配了 SAC 侧再回头配 IAS元数据中的一些字段可能会对不上排查起来很费劲。2. 配置前的准备工作收集信息、理清权限、备好账号先说一句经验总结所有身份配置项目里出问题最多的往往不在技术环节而在权限准备和账号规划。这一步做扎实了后面才能顺。2.1 需要收集的配置信息清单动手之前先把下表里的信息收集齐免得配到一半到处找人问信息项说明获取途径SAC 租户完整 URL形如 tenanthostname.eu1.analytics.sap.com管理员欢迎邮件或 SAC 登录页SAC 管理员账号拥有系统管理权限的用户当前 SAC 管理员分配IAS 租户管理后台地址形如 tenant.accounts.ondemand.comIAS 开通邮件IAS 管理员账号能创建应用和配置 SAML 的管理员IAM 负责人分配企业自定义域名如 sso.company.com用于最终访问 SAC企业 IT / 域名管理员SAML 属性映射需求如邮箱、用户组业务方和权限管理员2.2 管理员账号与备用登录通道的冗余方案这一步要特别提醒。在切换身份提供方之前你必须有至少一个“孤岛账号”——也就是独立于 IAS 之外的 SAC 系统管理员账号。如果不预留后续配置一旦出错导致登录失效SAP 支持也没办法马上帮你恢复只能走漫长的工单流程。我当时是这么做的先在 SAC 里额外建了一个 admin_fallback 账号分配了系统管理角色确认这个账号可以正常登录且没有关联到 IAS 的任何用户映射。这个账号在整个配置完成之前不会删除它就是我最后的逃生通道。另外如果客户环境里已经有企业 SSO千万别在配置中途顺手关掉原身份源。我见过有人改完自定义身份提供方没做验证就禁用了 SAP ID Service结果用户全部无法登录只能紧急回滚。安全做法是新链路验证稳定后再考虑下线旧通道。2.3 用户源与身份映射的事前规划SAC 里的账号很多时候不是手动创建的而是依赖身份提供方传过来的用户信息自动创建。这个机制叫“即时用户预置”Just-in-Time Provisioning。这意味着你在 IAS 里配置断言的时候属性映射决定了 SAC 里会生成什么样的用户记录。规划的时候要先回答三个问题SAC 用户的唯一标识是什么我建议用邮箱地址这也是 SAP 默认推荐的方式用户归属于哪些组是否要用组来批量授予 SAC 角色员工邮箱域名和 SAC 租户之间是否有特殊的命名规则需要处理客户这次用的是邮箱而且 IAS 里用户属性名称叫 mailSAC 期望的是 user.mail 这样的格式这两个名称在映射时要明确写对。3. 在 Identity Authentication 侧创建基于 SAML 2.0 的应用进入正题开始实操。这一节所有操作都在 IAS 管理后台完成。3.1 登录 IAS 管理后台并创建新应用用管理员账号登录 IAS 的租户管理后台网址一般是https://tenant.accounts.ondemand.com/admin。在左侧菜单找到“Applications”相关入口点击新建。填写应用名称时我建议带上业务标识比如“SAP Analytics Cloud - 生产环境”。这样后面 IAS 里如果有多个应用一眼就能区分哪个是 SAC 的。应用类型选“SAML 2.0”这是最核心的选择。3.2 在 SAC 侧下载服务提供方元数据这一步要在 SAC 的管理界面里做。登录 SAC进入“系统管理”System Administration在“Security”相关菜单里找到“Identity Provider”或“Custom Identity Provider”的配置入口。如果你用的是新版本 SAC入口可能叫“SAML Identity Provider”或者藏在“Users and Teams”附近不同版本菜单命名略有区别但逻辑一致。在自定义身份提供方配置页中SAC 会提供一个“下载服务提供方元数据”的按钮。下载下来的是一个 XML 文件里面包含了 SAC 的实体 ID、断言消费者服务地址ACS URL、证书等信息。这个文件就是 IAS 侧用来识别 SAC 的“身份证”。3.3 在 IAS 中导入 SP 元数据并完成信任建立回到 IAS 管理后台在刚才创建的 SAML 应用编辑页里找到“SAML 2.0 Configuration”区域。这里有一个导入按钮选择刚下载的 SAC SP 元数据文件。导入成功后IAS 会自动识别出 SAC 的 ACS URL 和实体 ID并且会自动生成一套断言消费者地址的配置。SAP 官方文档里通常建议这里的 Name ID 格式选择“Unspecified”或者“E-Mail”我实践下来建议用邮箱格式这样和 SAC 侧的用户映射逻辑一致。保存后IAS 侧就认为“我已经信任了这个 SAC 服务提供方它发来的 SAML 请求我都会响应”。3.4 配置断言属性把 Name ID 传给 SAC 的关键步骤这是整个配置里最容易出问题的一环。IAS 默认生成的断言里Name ID 可能只是用户名如“wangxiaoming”但 SAC 需要在断言里拿到用户邮箱才能把用户关联到正确的 SAC 账户。在 IAS 应用配置的“Assertion Attributes”区域增加一个属性属性名user.mail来源用户的 mail 属性通常从企业属性目录映射过来如果还要传递用户组可以再加一个属性属性名Groups来源IAS 里的组Group属性属性名写错是常见坑。SAC 端解析断言时依赖属性名的严格匹配。你在这里写email而 SAC 期望user.mail那就匹配不上用户会登录失败。3.5 导出 IAS 身份提供方元数据配置好应用和属性后在 IAS 应用的“SAML 2.0 Configuration”页面找到“Download Metadata File”按钮导出的 XML 就是 IdP 元数据。这个文件接下来给 SAC 用。导出的文件建议重命名成ias-sac-metadata.xml方便传到 SAC 管理端时避免文件名混淆。4. 在 SAP Analytics Cloud 中导入 IdP 元数据并建立信任这部分操作全部在 SAC 管理界面里执行目标只有一个让 SAC 认 IAS 为合法的身份提供方。4.1 进入自定义身份提供方配置并导入 IdP 元数据在 SAC 的“系统管理”里找到“Custom Identity Provider”配置页点击“导入”按钮选择上一步导出的 IAS 元数据文件。成功导入后系统页面会展示一个表单里面列出了 IAS 的实体 ID、登录 URLSingleSignOnService、证书指纹等信息。我看了一下SAC 侧会把 IAS 的证书自动抓取进去不需要手动复制粘贴这也是为什么我强调必须通过元数据文件交换而不是手动填 URL。4.2 配置身份提供方参数让 SAC 知道去哪认证导入完成后系统会要求你确认或填写以下关键参数参数推荐值/说明Entity ID实体 ID通常自动从元数据获取保持默认Single Sign-On URL登录地址自动从元数据获取保持默认Logout URL登出地址自动获取保持默认Certificate Fingerprint证书指纹自动获取无需改动Name ID format建议选择 Email 格式用户标识映射设置为 user.mail 对应的断言属性名这里要注意SAC 界面里“用户标识属性”一般默认是user.mail。如果你的 IAS 里配置的属性名不是这个马上改不要等到测试时报错再回头查。4.3 保存前必做的三分钟检查清单保存之前我习惯性过一遍这三个项目元数据导入后显示的实体 ID 和 IAS 应用实体 ID 是否一致登录 URL 是否以https://开头证书指纹有没有末尾分号Name ID 格式定义是否和 IAS 侧一致。这些都是低级的、但确实发生过的失误。证书指纹末尾缺了一个冒号导致登录时 SAC 校验签名失败当时排查了整整半小时最后发现是导入的元数据文件里证书换行了SAC 识别不完全。检查证书指纹有个办法把元数据 XML 里的证书内容解码后算出 SHA256 指纹和 SAC 页面里显示的指纹做对比。但更简单的做法是清空指纹字段重新导入一次元数据让 SAC 自己抓取。5. 用户角色映射与组策略的配置思路很多教程跑到“建立信任”这一步就结束了但实际上后面还有一环决定用户登录之后能干什么角色映射。5.1 角色分配逻辑组到角色的映射关系SAC 的角色体系分两种一种是系统预置角色如 System Administration、BI Analyst、BI Viewer一种是自定义角色。通过自定义身份提供方登录的用户可以自动从断言里解析出用户组然后把这些组映射到 SAC 角色上。在 SAC 的“Users”管理页里选择“Groups Mapping”之类的选项把 IAS 传过来的组名比如SAC_Business_Analyst映射到 SAC 的BI_Analyst角色。保存后属于该组的用户登录 SAC 时自动获得对应角色不需要手动在 SAC 里逐个分配。这种方式的好处是权限管理回到企业侧。以后新员工入职只需要在 IAS 里把人加进对应组SAC 侧无需重复配置。员工离职从 IAS 的组里移除即可SAC 侧会通过下一次会话失效自动拉黑。5.2 用户自动创建机制JIT Provisioning 的注意事项用户第一次访问 SAC 时如果 SAC 里没有对应账户系统会根据 SAML 断言里的属性自动创建一个新用户状态通常为“Pending”或“Active”。这次客户遇到的问题是新用户的默认角色为空即使断言里传了组但组映射没配用户登录进来什么权限都没有看着像“登录失败”其实是“登录成功但没菜单”。所以配置组映射时要理解身份认证解决的是“你能进来”角色映射解决的是“你能干什么”。两个都要配齐才算完整。5.3 测试账号的选取避免用管理员账号做验证测试阶段我强烈建议不要用管理员账号做登录验证。因为管理员账号往往有自己的静态角色分配即使组映射有问题管理员照样能登录看到全部功能这会让问题被掩盖。正确做法先在 IAS 里创建一个测试用户比如sac_test_user_01customerdomain.com不分配任何特殊管理员权限。然后测试时看这个用户在 SAC 里是否自动生成、是否正确获得预期角色。6. 登录流程验证与常见问题排查实录配置完成后验证环节不只是输一次密码看看能否进入首页需要一个完整的验证清单去确认链路里的每个环节都正常。6.1 登录验证的完整步骤从发起到成功进入的链路检查建议按以下顺序做验证打开一个无痕浏览器窗口访问自定义域名或 SAC 默认地址确认页面跳转到 IAS 登录界面地址栏显示的是企业 IDP 域名输入测试账号密码确认认证通过重定向回 SAC如果没有报错说明 SAML 响应和断言被 SAC 成功接受查看右上角用户头像区域确认登录的是测试账号的邮箱地址而不是默认 SAP ID Service 账号进入系统管理查看“用户列表”里是否新增了该测试用户并核对角色是否匹配预期。如果上面六步全部通过核心链路就没问题了。接下来再测一个经典场景从 SAC 登出确认是否也会同步触发 IAS 的全局登出Single Logout。有些客户对这个有要求因为安全审计要求退出应用时也必须退出全部企业会话。6.2 常见报错信息与对应的排查思路我整理了这次实施中遇到的、以及过去项目中高频出现的问题做成速查表供参考错误现象常见原因排查方法登录后页面提示“声称来自未授权域名的声明”断言中域名与 SAC 配置不匹配检查 IAS 断言属性里域名字段确认没有拼写错误登录后提示“用户未找到或未激活”SAC 用户尚未通过 JIT 创建或状态为 Pending检查用户源配置确认邮箱映射正确并查看用户状态登录成功后显示为默认管理员但角色缺失组映射未配置检查 SAC 的“Groups Mapping”是否设置了组到角色的对应关系SAC 提示“实体 ID 不匹配”IAS 应用配置或 SAC 信任配置里的实体 ID 不一致两边分别核对实体 ID 字符串是否完全一致注意大小写登录后无限循环跳转SAML 响应未被正确消费或 Cookie 域问题检查浏览器是否拦截了第三方 Cookie或用无痕模式重试6.3 关于 IAS 侧证书轮换和元数据更新的经验提示这个坑大多数项目都会遇到只是时间早晚问题。IAS 侧的签名证书是有有效期的到了证书轮换时间点如果 SAC 里的 IdP 元数据没有同步更新就会突然出现“证书验证失败”的报错。SAP 官方建议的做法是证书轮换时IAS 侧会提供新旧两套证书同时生效的过渡期。你需要在这个窗口期内从 IAS 重新下载元数据再到 SAC 里重新导入覆盖旧的证书指纹。我个人的习惯是在日历里给证书过期日提前一个月设置提醒到期前主动重导元数据不做临时救火不等着用户报障。6.4 实际踩过的坑属性名大小写与多余的空格最后分享一个特别隐蔽的问题。当时测试用户登录时SAC 一直报“名称 ID 格式不正确”排查了很久。后来我把 IAS 侧导出的 SAML 响应拿去做了 Base64 解码仔细看了断言原文发现属性名写的是user.mail但实际断言输出里多了一个不可见的前后空格字符。罪魁祸首是 IAS 后台里用户复制属性名时不小心把空格也复制进去了。这类问题光看界面根本看不出来唯一的排查方法是抓取 SAML 响应原文用 XML 工具查看属性名两端的真实字符。这里顺便写一个排查建议如果登录失败优先抓 SAML 响应。做法是在浏览器开发者工具里开启“保留日志”Persist Logs复现登录操作在“网络”面板里找到 SAMLResponse 字段复制出来做 Base64 解码就能看到断言里的所有属性名和值。7. 切换后管理员的注意事项与日常运维建议等 SAS 切换到 IAS 身份验证成功后日常运维会进入一个相对平滑的轨道。但有些事情需要提前定好规则否则以后会出问题。7.1 管理员账号的日常维护策略建议保留至少两个“孤立管理员”账号这两个账号不关联任何企业身份源密码由两位不同管理员分别保管。这不算冗余而是生产环境的一个保险机制。平时用不到一旦企业身份服务出现问题比如 IAS 故障、证书误更新、误删配置这两个账号就是唯一能进入 SAC 排查问题的通道。7.2 新员工入职与离职流程对接启用 IAS 作为身份提供方后SAC 团队要和 HR 系统或 IAM 团队约定新员工在 IAS 里创建用户并加入对应组确认邮箱属性已传自动同步到 SAC 即可离职员工在 IAS 里禁用或删除用户确认会话失效同时 SAC 侧用户状态会随之变为不可用。这一步如果没打好配合就会出现一个很尴尬的情况员工在 HR 系统离职了但 SAC 里还是活跃状态因为双方的会话没有联动失效机制。7.3 自定义域名和书签更新的提醒如果你和客户一样改成了自定义域名要记得提前做 DNS 解析配置并在切换完成后通知用户清除浏览器缓存重新登录。一些老用户会把 SAC 地址保存为浏览器书签书签里的旧地址不一定能响应新的域名解析要提前通知他们删掉旧书签。客户端这边比较顺利切换完成后测试了常见的 Safari 和 Chrome 浏览器同时提醒使用旧浏览器版本的用户升级因为旧的浏览器在处理 SAML 重定向和断言 RelyingParty 时可能因为页面重定向时序差异导致空响应。8. 我的一些实操感受和最后的小建议整套配置流程做完之后我最大的感受是SAP Analytics Cloud 的文档其实写得不差但散落在各个部分没有一篇把“IAS SAC”的完整链路串起来。大家东拼西凑很容易漏掉组映射、证书指纹比对、SP 元数据导入这类细节。如果你正在做类似的项目我最后补充几个可以直接落地的建议第一作业环境一定要清晰。IAS 和 SAC 的配置入口完全不一样实操时要在一张记录表上分别记下两边改过的东西。不要相信自己的记忆配置字段一多很容易混。第二测试阶段不要怕反复。我第一次测试组映射的时候前五次都没成功后来发现是 IAS 的组名里多了个租户前缀不是我以为的那个组名。所以看到 SAC 里角色没生效先回头看 IAS 侧真实传出去的组名是什么不要一上来就怀疑 SAC 配置。第三把“导出/提交前”这个动作养成习惯。每次都把 SAC 里自定义身份提供方配置页、IAS 应用配置页分别截图留存出了问题前后对比就能快速定位是哪一侧的改动破坏了链路。这次配置对我来说最有价值的地方倒不是那些菜单点击操作而是真正把“SAC 只认身份但权限要另配”这套逻辑理清楚了。后面再用 SAC 做新的租户对接就快多了。希望上面的流程和踩坑经验能帮你把这条链路配置得更顺滑。
返回列表