从Cloud Foundry Web应用程序检索记录的用户信息

时间:2018-09-12 13:14:58

标签: sap-cloud-platform

我们使用SAP Web-IDE Full Stack开发了一个Web应用程序;我们需要检索登录到应用程序的用户的详细信息(在SAP Cloud Platform身份验证管理中定义),例如显示名称和分配的组。 我们尝试了userapi / currentUser API,但它似乎仅在NEO环境下有效,因此在Web-IDE中调试时可以正常工作,但是在Cloud Foundry上部署应用程序时出现404错误。 我们是否需要添加新的目的地以使userapi在CF上也能正常工作?还是在Cloud Foundry上提供某种类似的解决方案?

2 个答案:

答案 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(例如,检索用户信息),您需要:

  1. 确定绑定到您的应用程序的XSUAA端点(SCP Cockpit> XSUAA服务详细信息>取值为 url
  2. 创建一个绑定到您的应用的类型为 OAuth2TokenExchange 的目的地(xsuaa_api_destination),该网址之前已使用url url ,并用XSUAA服务详细信息中包含的数据填充OAuth2身份验证参数(步骤1)。
  3. 从您的应用中执行调用 xsuaa_api_destination / userinfo ,例如,如果您使用的是JS,则使用ajax。

您可以在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应该保存您要查找的信息。