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 を使用する場合、次のようにアクセスできる3 つのフィールド ( 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 インスタンスを再作成する必要があることに注意してください。

これで、ID プロバイダーのロール セクション (デフォルトの Cloud Foundry IdP を使用している場合は、Cloud Cockpit の左側にある [セキュリティ] タブの下にあります) で、これらのフィールドの入力方法を構成できます。そこで「ID プロバイダー」を選択します。

もちろん、この役割がすべてのユーザーに割り当てられていることを確認してください。

最後に、以下を使用して情報を読み取りますUserAccessor

final User currentUser = UserAccessor.getCurrentUser();

currentUser.getAttribute("email");

これにより、必要な情報が得られるはずです。

于 2018-11-28T10:16:34.673 に答える