Java 来自SAP CP CF环境的用户配置文件JSON数据

Java 来自SAP CP CF环境的用户配置文件JSON数据,java,s4sdk,Java,S4sdk,环境:云铸造小径 我使用 现在我的要求是在XSUAA登录后,在user profile下获取 是否有任何API来获取用户配置文件详细信息 { "lastName": "XXXXX", "passwordStatus": "enabled", "mail": "XXXXX@gmail.com", "displayName": "XXXX XXXX XXXXX", "uid": "XXXXXX", "photoUrl": "https://www.gravatar

环境:云铸造小径

我使用

现在我的要求是在
XSUAA
登录后,在
user profile
下获取

是否有任何
API
来获取
用户配置文件
详细信息

{
   "lastName": "XXXXX",
   "passwordStatus": "enabled",
   "mail": "XXXXX@gmail.com",
   "displayName": "XXXX XXXX XXXXX",
   "uid": "XXXXXX",
   "photoUrl": "https://www.gravatar.com/avatar/760fcd379cf60090e1e27b052f9e49bd?d=mm",
   "firstName": "XXXX",
   "contactPreferenceEmail": "unknown",
   "status": "active",
   "spUsersAttributes": [
      {
         "ServiceProviderName": "sapcpcf",
         "NameID": "XXXXX",
         "Status": "ACTIVE",
         "ActivationTime": "20181026050006Z"
      }
    ]
}

目前,没有专门的API来获取所有这些用户配置文件的详细信息。您可以使用
AuthTokenAccessor
访问当前JWT,该JWT应包含此信息。

更新的答案:

Cloud Foundry上默认使用的IdP不使用SAML。因此,SAML属性的映射不起作用。仅当使用支持SAML的IdP时,才使用下面列出的方法

相反,当使用默认IdP时,有三个字段(
给定名称
家庭名称
电子邮件
)可按如下方式访问:

AuthTokenAccessor.getCurrentToken().get().getJwt().getClaim("email").asString();
原始答案:

您可以执行以下操作:

首先,向用于配置XSUAA实例的
xs security.json
添加角色模板,如下所示:

{
    "name": "Authenticated",
    "description": "All authenticated users",
    "attribute-references": [ 
        "given_name", 
        "family_name",
        "email"
    ]
}
请注意,您需要使用新配置重新创建XSUAA实例,以使此更改生效

现在,在身份提供者的角色部分(如果您使用默认的Cloud Foundry IdP,您可以在云驾驶舱左侧的“安全”选项卡下找到),您可以配置这些字段的填充方式。在那里选择“身份提供者”

当然,请确保将此角色分配给每个用户

最后,使用
UserAccessor
读取信息:

final User currentUser = UserAccessor.getCurrentUser();

currentUser.getAttribute("email");

这将帮助您获得必要的信息

我使用
安全
选项卡下未找到的
身份提供者
重新创建了具有
属性的XSUAA服务。在
NEO
环境中,我能够使用
InitialContext ctx=new InitialContext()获取
com.sap.security.um.user.user
对象;UserProvider UserProvider=(UserProvider)ctx.lookup(“java:comp/env/user/Provider”);User userProfile=userProvider.getUser(用户名)请建议我在CF环境中使用组等获取
用户配置文件
。当您在云驾驶舱中时,首先需要导航到应用程序级别(请记住全局帐户>子帐户>空间>应用程序)。只有这样,您才能在左侧的侧栏中看到“安全性”下的“角色”选项卡。您可以在那里编辑角色并执行上述配置。我使用上述属性创建了角色,并创建了分配给测试用户电子邮件id的角色,但值显示为空。请告诉我我遗漏了什么。从ScpCfUser获取属性值为空,如“email=CollectionUserAttribute(name=email,values=[])”。请建议我如何解决?嗨,丹尼斯!非常感谢您的回复!我可以通过你的方法收到电子邮件、姓名、姓氏等,但我无法获得uid:PXXXX、组。