我们使用SAP Web-IDE Full Stack开发了一个Web应用程序;我们需要检索登录到应用程序的用户的详细信息(在SAP Cloud Platform身份验证管理中定义),例如显示名称和分配的组。 我们尝试了userapi / currentUser API,但它似乎仅在NEO环境下有效,因此在Web-IDE中调试时可以正常工作,但是在Cloud Foundry上部署应用程序时出现404错误。 我们是否需要添加新的目的地以使userapi在CF上也能正常工作?还是在Cloud Foundry上提供某种类似的解决方案?
答案 0 :(得分:2)
在SAP Cloud Foundry中,如果您使用XSUAA服务开发MTA来管理用户身份验证和管理,例如在 mta.yaml
中定义...
resources:
- name: uaa_myapp
parameters:
path: ./xs-security.json
service-plan: application
service: xsuaa
type: org.cloudfoundry.managed-service
...
您可以使用从XSUAA服务自身发布的UAA API来管理用户身份验证和授权(例如:检索用户信息,分配的组,密码管理等)。甚至在应用程序与另一个IDP联合的情况下。
要使用此API(例如,检索用户信息),您需要:
您可以在Account and Authentication Service of the Cloud Foundry Environment SAP doc中找到其他信息。
答案 1 :(得分:1)
我强烈建议将SAP S/4HANA Cloud SDK用于此类任务。它是通过为所有Cloud Platform机制提供易于使用的机制而开发的,可简化SAP Cloud Platform应用程序的开发。
关于手头的任务,您可以像这样使用UserAccessor
类:
final Optional<User> user = UserAccessor.getCurrentUser();
这适用于Neo和Cloud Foundry,即两个平台都有一个界面,可让您以与平台无关的方式开发应用。
如果这听起来可以解决您的问题,我建议您检出this blog post series来开始使用。
或者,您也可以简单地将以下依赖项添加到项目中,以开始测试SDK:
<dependency>
<groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
<artifactId>scp-neo</artifactId>
<version>2.7.0</version>
</dependency>
对于Cloud Foundry,请使用scp-cf
而不是scp-neo
。
希望这会有所帮助!
P.S .:为了在技术层面上回答您的问题,Cloud Foundry使用所谓的JWT进行身份验证和授权。您可以通过查看请求的Authorization
标头来检查是否存在JWT。 JWT应该保存您要查找的信息。