IdentityServer4 メモ

IdentityServer4 でいろいろ試したときのメモ。当時のバージョンは 4.1.1。

www.nuget.org

  • IdentityServer4 の「Interactive Applications with ASP.NET Core」で ProfileService が呼ばれるタイミング
    • 以下の順番で呼ばれていた
      1. Account/Login
      2. ProfileService.IsActivateAsync
      3. ProfileService.IsActivateAsync
      4. ProfileService.GetProfileDataAsync
    • IResourceOwnerPasswordValidator は呼ばれなかった。
      • GrantTypes が Code だったから。
      • ResourceOwnerPassword だったら呼ばれるはず。
  • ProfileService の IsActivateAsync と GetProfileDataAsync に任意のデータを渡せるか
    • IdentityServerUser.AdditionalClaims に追加したら渡せた。
    • ProfileService.GetProfileDataAsync で context.IssueClaims に、JWT に含めたいクレームを追加する。
      • Client.AlwaysIncludeUserClaimsInIdToken = true にしないと、追加したクレームが JWT に含まれない?
        • 含まれないのは ID トークンだけ。
        • アクセストークンには含まれていた。
    • IsActivateAsync は常に true を返せばいい。
      • AspNetCore.Identity の ProfileService はそうしている。
    • GetProfileDataAsync の context から、IdentityServerUser.AdditionalClaims に追加したクレームが取り出せる。