Данные JSON профиля пользователя из среды SAP CP CF - PullRequest
0 голосов
/ 28 ноября 2018

Среда: Cloud Foundry Trail

Я развернул свои приложения для бизнеса и приложений с помощью help

Теперь мое требование становится ниже 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"
      }
    ]
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Обновленный ответ:

IdP, используемый по умолчанию в Cloud Foundry, не использует SAML.Таким образом, сопоставление атрибутов SAML не работает.Используйте подход, указанный ниже, только при использовании IdP, который поддерживает SAML.

Вместо этого, при использовании IdP по умолчанию, есть три поля (given_name, family_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 с новой конфигурацией, чтобы это изменение заработало.

Теперь в роляхВ разделе вашего провайдера идентификации (если вы используете IdP Cloud Foundry по умолчанию, вы можете найти его на вкладке «Безопасность» в левой части облачной кабины), вы можете настроить способ заполнения этих полей.Выберите здесь «Identity Provider».

Конечно, убедитесь, что эта роль назначена каждому пользователю.

Наконец, вы читаете информацию, используя UserAccessor:

final User currentUser = UserAccessor.getCurrentUser();

currentUser.getAttribute("email");

Это должно помочь вам получить необходимую информацию!

0 голосов
/ 28 ноября 2018

В настоящее время не существует специального API для получения всех этих данных профиля пользователя.Вы можете использовать AuthTokenAccessor для доступа к текущему JWT, который должен содержать эту информацию.

...