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、组。