web-dev-qa-db-fra.com

Comment corriger l'erreur "IDX20804: impossible de récupérer le document à partir de: '[PII est masqué]'" en C #

Essayer d'obtenir un jeton d'accès pour utiliser MS Graph dans mon WebApi. Mais continuez à recevoir cette erreur,

[TaskCanceledException: une tâche a été annulée.] System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tâche Task) +167. .

[IOException: IDX20804: Impossible de récupérer le document à partir de: "[PII est masqué]".] Microsoft.IdentityModel.Protocols.d__8.MoveNext () +662 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tâche de tâche) +99. . [InvalidOperationException: IDX20803: Impossible d'obtenir la configuration à partir de: '[PII est masqué]'.] Microsoft.IdentityModel.Protocols.d__24.MoveNext () +1586 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tâche de tâche) +99

J'ai essayé toutes les corrections que j'ai pu trouver en ligne.

J'utilise ceci repo comme référence pour la partie auth.

Comment puis-je réparer cela?

6
Jemin Jose

J'avais le même problème, c'est parce qu'il doit passer par le DockerNAT. (Il se peut que tout le monde n'obtienne pas cette adresse IP)

Voici comment j'ai résolu mon problème:

  1. Ouvrir l'invite de commande
  2. Tapez ipconfig

Vous obtiendrez quelque chose comme ça.

Configuration IP Windows

Adaptateur Ethernet vEthernet (DockerNAT):

Suffixe DNS spécifique à la connexion. :

Adresse IPv4. . . . . . . . . . . : 10.0.75.1

Masque de sous-réseau. . . . . . . . . . . : 255.255.255.240

Passerelle par défaut. . . . . . . . . :

  1. Copiez essentiellement cette adresse IP dans votre fichier docker-compose.yml

    prestations de service:

    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. Les autres choses à vérifier sont:

Assurez-vous que sur votre Startup.cs sous ConfigureServices (projet WebMvc), vous disposez des éléments suivants et qu'ils sont correctement orthographiés sur votre fichier 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. En plus de cela, vous pouvez ouvrir des ports sur votre pare-feu. Dans mon cas, j'ai dû ouvrir le port 5000.

une. Panneau de contrôle ouvert

b. Système et sécurité

c. Pare-feu Windows Defender

ré. Réglages avancés

e. Paramètres entrants => Nouvelle règle ..

f. Type de règle => Port ==> Cliquez sur Suivant

g. Sélectionnez TCP sous protocole

h. Ports locaux spécifiques => Entrez 5000

je. Cliquez sur Suivant => Sélectionnez Autoriser la connexion

j. Cliquez sur Suivant

k. J'ai laissé tout coché sous Quand la règle s'applique-t-elle?

l. Cliquez sur Suivant => Entrez le port Docker => Cliquez sur Terminer

0
Felix D.

J'ai reçu une erreur similaire lors de la création d'une nouvelle application Blazor -> Application serveur Blazor avec des comptes d'utilisateurs individuels -> Se connecter à un magasin d'utilisateurs existant dans le cloud (Azure AD B2C).

enter image description here

IOException: IDX20807: Impossible de récupérer le document à partir de: '[PII est masqué. Pour plus de détails, voir https://aka.ms/IdentityModel/PII.] '. HttpResponseMessage: '[PII est masqué. Pour plus de détails, voir https://aka.ms/IdentityModel/PII.] ', HttpResponseMessage.Content:' [PII est masqué. Pour plus de détails, voir https://aka.ms/IdentityModel/PII.] '. Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync (adresse de chaîne, CancellationToken annuler)

InvalidOperationException: IDX20803: Impossible d'obtenir la configuration à partir de: '[PII est masqué. Pour plus de détails, voir https://aka.ms/IdentityModel/PII.] '. Microsoft.IdentityModel.Protocols.ConfigurationManager.GetConfigurationAsync (CancellationToken annuler)

Assurez-vous que le domaine est défini sur votre Azure AD B2C domaine et non pas la totalité App ID URI dans appsettings.json. Par exemple, utilisez <tenant-name>.onmicrosoft.com au lieu de <tenant-name>.onmicrosoft.com/api. Regardez également AzureAdB2C -> Instance dans appsettings.json. J'avais la valeur https://login.microsoftonline.com/tfp défini ici par défaut mais cela ne fonctionne pas, quand je l'ai changé en https://<tenant-name>.b2clogin.com/tfp/ tout a commencé à fonctionner.

0
Ogglas