2

环境:Cloud Foundry Trail

我使用帮助部署了我的业务和 approuter 应用程序

现在我的要求是登录user profile后低于。XSUAA

有没有API可以user profile详细了解的?

{
   "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"
      }
    ]
}

在此处输入图像描述

4

2 回答 2

1

更新的答案:

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

相反,当使用默认 IdP 时,可以按如下方式访问三个字段( given_namefamily_name、 ):email

AuthTokenAccessor.getCurrentToken().get().getJwt().getClaim("email").asString();

原答案:

您可以执行以下操作:

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

{
    "name": "Authenticated",
    "description": "All authenticated users",
    "attribute-references": [ 
        "given_name", 
        "family_name",
        "email"
    ]
}

请注意,您需要使用新配置重新创建 XSUAA 实例才能使此更改生效。

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

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

最后,您使用以下命令阅读信息UserAccessor

final User currentUser = UserAccessor.getCurrentUser();

currentUser.getAttribute("email");

这应该可以帮助您获得必要的信息!

于 2018-11-28T10:16:34.673 回答
0

目前,没有专门的 API 来获取所有这些用户个人资料的详细信息。您可以使用AuthTokenAccessor访问应包含此信息的当前 JWT。

于 2018-11-28T10:08:37.097 回答