问题描述
我们正在 SAP BTP 上进行 SaaS 应用程序开发,在通过 SaaS 注册服务发布我们的应用程序并实现所有回调(包括依赖项回调)之后,当我们创建新租户时,遇到了非常奇怪的问题,有新的子帐户在下面的登录步骤中,子帐户和订阅面临问题---
- 订阅工作正常并且能够生成租户特定的网址。
- 当用户登录到应用程序无法通过登录用户调用任何后端服务 API 时,由于 XSUAA 无法进行身份验证,因为 JWT 签名无效 -
"
- 相同的工作流程适用于前段时间为测试目的创建的旧子帐户。
- 为租户新创建的子账户面临问题。
请帮忙。
谢谢, 悉达多
解决方法
SAP业务技术平台在2020年上半年改变了Tenant的JWT验证方式。Instehttps://sap.github.io/cloud-sdk/docs/java/release-notes-sap-cloud-sdk -for-java#3161ad 使用众所周知且只有一个 URL 来获取验证密钥,它现在依靠 jku
字段和 issuer
来确保每个租户都有一个 URL 来获取密钥用于 JWT 验证。
SAP Cloud SDK 版本 3.16.1 及更高版本应完全支持此验证机制。这意味着您使用的 SDK 版本应该完全没问题。
可能存在应用程序逻辑可能需要更新的边缘情况。这就是为什么我建议您创建问题 here 并提供以下信息:
- 这个问题是从什么时候开始影响到你的?是不是一周前还能用,刚才坏了?或者您已经有一段时间没有添加新租户了,现在它坏了?
- 你应用的依赖树
- 请提供详细的异常堆栈跟踪或日志以确定根本原因。
- 将您认为失败的代码片段发送给我们。
当我们可以让它重现时,解决这个问题应该是相当简单的。 我们很高兴在找到解决方案后更新此线程,以便社区受益。
期待详细的 issue 和复制步骤。