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?
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:
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. . . . . . . . . :
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
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"
};
});
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
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).
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.