v1.6.3からIdentityServer3v2.5にアップグレードした後のGetProfileDataAsyncの問題

ASG

過去1年間、IdentityServer3 v1.xを正常に実行してきましたが、現在はv1.6.3からv2.5にアップグレードしています。

IUserServiceを実装するカスタムUserServiceがあるため、これは新しいコンテキストパラメータ用に変更され、ログインできますが、GetProfileDataAsyncに問題があります。

v1.6.3用に構築されたUserServiceは正常に機能し、12の要求されたクレームタイプを確認できます。 requestedClaimTypes

public Task<IEnumerable<Claim>> GetProfileDataAsync(ClaimsPrincipal subject,
                                                        IEnumerable<string> requestedClaimTypes = null)
    {
        var userClaims = claimsService.GetByUserIdAsync(int.Parse(subject.GetSubjectId()));

        var claims =
                userClaims.Where(x => requestedClaimTypes != null && requestedClaimTypes.Contains(x.Type));
            return Task.FromResult(claims);
    }

ただし、v2.5にアップグレードしてから、要求されたクレームタイプはcontext.RequestedClaimTypes、以前取得していた12ではなくsubinのみです。12をすべて入れる唯一の方法は、をに変更するAlwaysIncludeInIdTokenことです。true

v2.5用に更新されたUserServiceは

public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        if (context == null) throw new ArgumentNullException("context");
        var subject = context.Subject;
        var requestedClaimTypes = context.RequestedClaimTypes;
        var userClaims = await _claimsService.GetByUserIdAsync(int.Parse(subject.GetSubjectId()));
        if (userClaims != null)
        {
            var claims = userClaims.Where(x => requestedClaimTypes != null && requestedClaimTypes.Contains(x.Type));
            context.IssuedClaims = claims;
        }
    }

SQLを使用してクライアントとスコープを格納しますが、IdentityServer3.EntityFrameworkプロバイダーを使用する以外はデータを変更していません。

私たちのロギングは、以前のように関連するスコープクレームを持つ4つのスコープが要求されていることを示しています

Info: Authorize request validation success {
  "ClientId": "MyApp",
  "ClientName": "MyApp",
  "RedirectUri": "https://xxx:44300/",
  "AllowedRedirectUris": [
    "https://xxx:44300/"
  ],
  "SubjectId": "9",
  "ResponseType": "code id_token",
  "ResponseMode": "form_post",
  "Flow": "Hybrid",
  "RequestedScopes": "openid profile roles user",
  "State": "OpenIdConnect.AuthenticationProperties=xxxx",
  "Nonce": "xxx",
  "SessionId": "xxx",
  "Raw": {
    "client_id": "MyApp",
    "redirect_uri": "https://xxx:44300/",
    "response_mode": "form_post",
    "response_type": "code id_token",
    "scope": "openid profile roles user",
    "state": "OpenIdConnect.AuthenticationProperties=xxx",
    "nonce": "xxx"
  }
}

以前のようにすべてのクレームタイプを要求するために何をする必要がありますか?

最小特権

仕様では、アクセストークンが要求された場合、id_tokenには最小限のユーザー関連のクレーム(別名sub)のみを含める必要があるとされています。次に、アクセストークンを使用して、userinfoエンドポイントから他のクレームを取得できます。

これは、id_tokenを可能な限り小さく保つための最適化メカニズムです。

これが行われたid_token tokenが、行われなかったバグがありましたcode id_token(これはあなたが使用しているものです)。このバグは途中で修正されました。それがあなたが見ている行動の変化だと思います。

AlwaysIncludeInIdToken含めるスコープクレームにプロパティを設定するか、userinfoエンドポイントを使用してクレームを取得します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

D3をv4からv6にアップグレードした後、軸がグラフの中心に移動します

分類Dev

Tomcat6からTomcat8にアップグレードした後の問題

分類Dev

SmartGWTLGPLを5から6の問題にアップグレードする

分類Dev

Angular v5からAngular v6にプロジェクトをアップグレードしたい

分類Dev

v1からv3への移行、ネストされたタブ

分類Dev

koa v1 から v2 への移行

分類Dev

V1 :: JobsController内のV1 :: JobSerializerにアクセスできません

分類Dev

Api :: V1 :: UsersController#createのActionController InvalidAuthenticityToken

分類Dev

Ionicは、v2をアップグレードした後もv1プロジェクトを作成します

分類Dev

ES6ではなくES5でカスタム要素v1を作成する

分類Dev

mysqlをv5.7にアップグレードした後、UbuntuでPHPに問題が発生する

分類Dev

Mailchimp APIは、インタレストグループ化のためにv1 / 2をv3に変更します

分類Dev

Erikのcss-resetのv1とv2の違い

分類Dev

Powershell:v.1からv.3へのアップグレード

分類Dev

API V1 から API V2 への Objective-C ドロップボックス SDK の移行

分類Dev

Microsoft.OneDriveSDK v1をv2に移行する方法は?

分類Dev

Nativescriptを6にアップグレードした後、android.support.v4が見つからず、プロジェクトのコンパイルに失敗します

分類Dev

Kubernetes apiVersion:networking.k8s.io/v1「Ingress」の問題

分類Dev

v1からreact-native-navigationv2に移行した後の不変の違反

分類Dev

React-trancition-group。.v1から.v2への移行後の移行は機能しません

分類Dev

5から6にアップグレードした後、KatalonStudioにレポートがありません

分類Dev

TYPO3v9.5.14にアップグレードした後のルーティング例外

分類Dev

6.0から6.1-RC1にアップグレードした後のCNFE

分類Dev

プレビュー6に更新した後のAndroidStudio2の問題

分類Dev

ionicのCLI3に更新した後、v1をビルドできません

分類Dev

プロジェクトをBabelv5からv6 +にアップグレードするときの「TypeErrornotaconstructor」

分類Dev

ArtifactoryProを6.xから7.xにアップグレードした後の404

分類Dev

12.10から13.10にアップグレードした後の問題

分類Dev

15.10から16.04にアップグレードした後の問題

Related 関連記事

  1. 1

    D3をv4からv6にアップグレードした後、軸がグラフの中心に移動します

  2. 2

    Tomcat6からTomcat8にアップグレードした後の問題

  3. 3

    SmartGWTLGPLを5から6の問題にアップグレードする

  4. 4

    Angular v5からAngular v6にプロジェクトをアップグレードしたい

  5. 5

    v1からv3への移行、ネストされたタブ

  6. 6

    koa v1 から v2 への移行

  7. 7

    V1 :: JobsController内のV1 :: JobSerializerにアクセスできません

  8. 8

    Api :: V1 :: UsersController#createのActionController InvalidAuthenticityToken

  9. 9

    Ionicは、v2をアップグレードした後もv1プロジェクトを作成します

  10. 10

    ES6ではなくES5でカスタム要素v1を作成する

  11. 11

    mysqlをv5.7にアップグレードした後、UbuntuでPHPに問題が発生する

  12. 12

    Mailchimp APIは、インタレストグループ化のためにv1 / 2をv3に変更します

  13. 13

    Erikのcss-resetのv1とv2の違い

  14. 14

    Powershell:v.1からv.3へのアップグレード

  15. 15

    API V1 から API V2 への Objective-C ドロップボックス SDK の移行

  16. 16

    Microsoft.OneDriveSDK v1をv2に移行する方法は?

  17. 17

    Nativescriptを6にアップグレードした後、android.support.v4が見つからず、プロジェクトのコンパイルに失敗します

  18. 18

    Kubernetes apiVersion:networking.k8s.io/v1「Ingress」の問題

  19. 19

    v1からreact-native-navigationv2に移行した後の不変の違反

  20. 20

    React-trancition-group。.v1から.v2への移行後の移行は機能しません

  21. 21

    5から6にアップグレードした後、KatalonStudioにレポートがありません

  22. 22

    TYPO3v9.5.14にアップグレードした後のルーティング例外

  23. 23

    6.0から6.1-RC1にアップグレードした後のCNFE

  24. 24

    プレビュー6に更新した後のAndroidStudio2の問題

  25. 25

    ionicのCLI3に更新した後、v1をビルドできません

  26. 26

    プロジェクトをBabelv5からv6 +にアップグレードするときの「TypeErrornotaconstructor」

  27. 27

    ArtifactoryProを6.xから7.xにアップグレードした後の404

  28. 28

    12.10から13.10にアップグレードした後の問題

  29. 29

    15.10から16.04にアップグレードした後の問題

ホットタグ

アーカイブ