web-dev-qa-db-ja.com

C#で「IDX20804:ドキュメントを取得できません: '[PIIは非表示]'」エラーを修正する方法

私のWebApiでMS Graphを使用するためのアクセストークンを取得しようとしています。しかし、このエラーが発生し続ける、

[TaskCanceledException:タスクがキャンセルされました。] System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+167。 。

[IOException:IDX20804:ドキュメントを取得できません: '[PIIは非表示]'。] Microsoft.IdentityModel.Protocols.d__8.MoveNext()+662 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+99。 。 [InvalidOperationException:IDX20803:構成を取得できません: '[PIIは非表示]'。] Microsoft.IdentityModel.Protocols.d__24.MoveNext()+1586 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)+99

オンラインで見つけた修正をすべて試しました。

私はこれをauth部分の参照として使用しています repo

どうすれば修正できますか?

6
Jemin Jose

私は同じ問題を抱えていました、それはそれがDockerNATを通過しなければならないためです。 (誰もがこのIPアドレスを取得するわけではない場合があります)

これは私が私の問題を解決した方法です:

  1. コマンドプロンプトを開く
  2. Ipconfigと入力します

あなたはこのようなものを得るでしょう。

Windows IP構成

イーサネットアダプターvEthernet(DockerNAT):

接続固有のDNSサフィックス。 :

IPv4アドレス。 。 。 。 。 。 。 。 。 。 。 :10.0.75.1

サブネットマスク 。 。 。 。 。 。 。 。 。 。 。 :255.255.255.240

デフォルトゲートウェイ 。 。 。 。 。 。 。 。 。 :

  1. 基本的にそのIPアドレスをdocker-compose.ymlファイルにコピーします

    サービス:

    webmvc:

    build:
    
      context: .\src\Web\WebMvc
    
      dockerfile: Dockerfile
    
    environment:
    
      - IdentityUrl=http://10.0.75.1:5000/ #Change IP and Port
    
    container_name: test
    
    ports:
    
      - "5200:80"
    
    networks:
    
      - frontend
    
    depends_on:
    
      - tokenserver #your identityserver4 service
    
  2. その他の確認事項は次のとおりです。

ConfigureServices(WebMvcプロジェクト)の下のStartup.csに以下があり、ymlファイルに正しくつづられていることを確認してください。

        var identityUrl = Configuration.GetValue<string>("IdentityUrl");
        services.AddAuthentication(options =>
        {
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddCookie()
        .AddOpenIdConnect(options => {
            options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;             
            options.Authority = identityUrl.ToString();
            options.SignedOutRedirectUri = "http://localhost:5200/"; //Change to your mvc address
            options.ClientId ="mvc";
            options.ClientSecret = "secret";
            options.ResponseType =  "code id_token";
            options.SaveTokens = true;
            options.GetClaimsFromUserInfoEndpoint = true;
            options.RequireHttpsMetadata = false;
            options.Scope.Add("openid");
            options.Scope.Add("profile");
            options.Scope.Add("offline_access");
            options.TokenValidationParameters = new TokenValidationParameters()
            {
                NameClaimType = "name",
                RoleClaimType = "role"
            };
        });
  1. これに加えて、ファイアウォールのポートを開くこともできます。私の場合、ポート5000を開く必要がありました。

a。コントロールパネルを開く

b。システムとセキュリティ

c。 Windows Defenderファイアウォール

d。高度な設定

e。受信設定=>新しいルール...

f。ルールタイプ=>ポート==> [次へ]をクリックします

g。プロトコルの下でTCP=を選択します

h。特定のローカルポート=> 5000を入力

私。 [次へ]をクリックします=> [接続を許可する]を選択します

j。次へをクリック

k。ルールはいつ適用されますか?

l。 [次へ] => [Dockerポートを入力] => [完了]をクリックします

0
Felix D.

新しいBlazorアプリを作成するときに同様のエラーが発生しました->個別のユーザーアカウントでBlazorサーバーアプリ->クラウド(Azure AD B2C)の既存のユーザーストアに接続します。

enter image description here

IOException:IDX20807:からドキュメントを取得できません: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 HttpResponseMessage: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。HttpResponseMessage.Content:' [PII is hidden。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(string address、CancellationToken cancel)

InvalidOperationException:IDX20803:から構成を取得できません: '[PIIは非表示です。詳細については、 https://aka.ms/IdentityModel/PII。] 'を参照してください。 Microsoft.IdentityModel.Protocols.ConfigurationManager.GetConfigurationAsync(CancellationToken cancel)

ドメインがAzure AD B2Cの完全なApp ID URIではなくappsettings.jsonドメインに設定されていることを確認してください。たとえば、<tenant-name>.onmicrosoft.comの代わりに<tenant-name>.onmicrosoft.com/apiを使用します。また、AzureAdB2C-> appsettings.jsonのインスタンスも確認してください。 https://login.microsoftonline.com/tfpの値をデフォルトとしてここに設定しましたが、https://<tenant-name>.b2clogin.com/tfp/に変更すると機能しなくなり、すべてが機能し始めました。

0
Ogglas