0

Thinktecture IdentityServer と組み合わせて、MembershipReboot から UserAccount プロパティを抽出するのに問題があります。ここにあるサンプル リポジトリを使用して稼働しています: https://github.com/identityserver/IdentityServer3.MembershipReboot

Implicit Grant Flow で「openid profile」スコープをリクエストすると、id_token からの「given_name、middle_name」などの多くのユーザー アカウント フィールドと、userinfo エンドポイントからの応答が欠落しています。これは、GetClaimsFromAccount 関数で割り当てる必要があるためだと理解しています。

RequestClaims が MembershipRebootUserService クラスの GetProfileDataAsync() 関数に入ることを確認できます。GetClaimsFromAccount の TAccount のインスタンスにカーソルを合わせると、CustomUser 動的プロキシに表示される Firstname、Lastname などのプロパティを確認できますが、私の人生は、それらにアクセスしてクレームコレクションにコピーする方法を考え出しますか?

より詳しい情報:

問題は次の行にあると思われます。

 claims.AddRange(userAccountService.MapClaims(account));

これは、ユーザー アカウントのプロパティをクレームに変換する必要があるように見えますが、何も返されません。

4

1 に答える 1

2

私が理解している方法は、スコープオブジェクトにオプションを追加して、ユーザーのすべてのクレームを返すことです。IncludeAllClaimsForUserがキー プロパティです。

例えば

new Scope
{
  Enabled = true,
  Name = "roles",
  Type = ScopeType.Identity,
  IncludeAllClaimsForUser = true,
  Claims = new List<ScopeClaim>
  {
    new ScopeClaim("role")
  }
}

私のリクエストにはroleプロパティも含まれています。これにより、MR for me からユーザーのすべての請求が取り消されました。私の例はImplicitフローです。

于 2015-06-17T11:48:55.307 に答える