用途:把 Neo 内置 FORM 认证和 UserManagementAccessor 替换为 Cloud Foundry 的 XSUAA 服务与 Application Router,实现安全 Web 访问。适用于当前目录以 -cf-migration 结尾的迁移副本,且需先执行 sdk-replacement 技能。
主要能力与步骤:1)创建 xs-security.json,定义 xsappname、scopes、role-templates 与 role-collections;2)将 web.xml 的 auth-method 从 FORM 改为 XSUAA;3)在 pom.xml 加入 com.sap.cloud.security:java-api(Spring Boot 用 resourceserver-security-spring-boot-starter),版本由 cf-tomcat-bom 管理;4)创建 approuter/ 目录,含 package.json、xs-app.json,配置受保护路由的 scope、destination、认证类型;5)将 Neo UserProvider 代码替换为 Principal 与 SecurityContext.getToken() 读取 TokenClaims(如 EMAIL、GIVEN_NAME、FAMILY_NAME、SAP_GLOBAL_USER_ID、USER_NAME、SAP_GLOBAL_ZONE_ID);6)编写 mtad.yaml,定义 Java 后端与 approuter 模块及 xsuaa(application 计划)、destination(lite 计划)资源,需设 ENABLE_SECURITY_JAVA_API_V2: true,disk-quota 至少 1024M;7)可选删除 login.html、login-error.html 等 Neo 登录页。
验证:执行 mvn clean package 与 cf deploy . -f,用 cf services 检查服务绑定,访问 approuter URL 应跳转身份提供方登录。
限制与常见问题:后端 401 常因角色集合未在 BTP Cockpit 分配;502 多为后端 URL 配置错误;404 或缺 getUserPrincipal() 返回 null 通常因 web.xml 缺少覆盖 API 路径的 security-constraint(XSSecurityAuthenticator 仅对匹配约束的 URL 校验 JWT);@Stateless EJB 中 isUserInRole() 可能因注入的请求对象不携带 XSUAA 安全上下文而失败。CORS 需在 approuter 或后端配置。资料未提供官方文档链接、其他计费或平台细节。