企业里做统一认证时,很多系统并不是各自维护一套登录页面。员工进入门户、供应商访问协同平台、门店人员打开报表中心,背后经常已经有一套统一的 Web Access Management 产品在前面完成身份认证。用户在统一入口完成一次认证,后面的业务系统只需要接收一个可信身份,再把这个身份映射到自己的用户体系里,就能完成 Single Sign-On。
SAP NetWeaver Application Server for Java 里的 Header Variables,就是服务于这类场景的一种认证机制。它看起来很简单,外部 WAM 产品把已经认证过的 user ID 放进 HTTP header,AS Java 读取这个 header,再去 UME 里匹配用户。匹配成功,用户就被 AS Java 认可为已经登录。可是在真实项目里,这个机制真正难的地方并不在读取 header,而在于我们如何保证这个 header 真的是可信中间层写进去的,而不是浏览器、脚本、代理工具或者攻击者伪造出来的。
Header Variables 解决的是哪类登录问题
很多 SAP Java 应用并不是孤立部署的。典型场景是企业已经有统一门户、统一身份认证中心、反向代理、WAF、负载均衡、SAP Web Dispatcher 或第三方 WAM 产品。员工访问应用时,浏览器并不直接打到 AS Java,而是先进入这些边界组件。边界组件负责做登录、MFA、智能卡、Token card、生物识别、企业 AD 或 LDAP 认证。认证通过以后,边界组件再把请求转发到内部的 SAP Java 应用。
Header Variables 的设计思路非常务实。AS Java 不直