J'ai une petite application existante que j'utilise pour le test, il est dans Asp.Net Core 1.1 pour l'application Web et l'API, l'authentification est fait en utilisant Azure AD B2C. J'essaie de le déplacer vers .Net Core 2.0 mais je n'arrive pas à comprendre comment le faire fonctionner, j'ai essayé d'utiliser à la fois l'échantillon de GitHub Azure-Samples pour Web App et API, mais j'ai une erreur non autorisée ou 500 quand essayer d'accéder à l'API, si vous avez un exemple de travail pour appeler une API web à partir d'une application web en utilisant 2.0 et protégé par AD B2C, il sera grandement apprécié.Asp.Net Core 2.0 et Azure AD B2C pour l'authentification sur WebApp et API
Edit: L'exemple que j'utilise pour tester: Web App: WebApp-OpenIDConnect-DotNet core2.0 Web Api: B2C-WebApi core2.0 , j'ai changé les valeurs appSettings pour correspondre à mon répertoire b2c.
Pour mon application de test asp.net core 1.1, j'utilise les mêmes exemples que ci-dessus mais de la branche master, avec la même valeur pour appsettings.
Edit 2 par défaut, dans startup.cs je ceci:
services.AddAuthentication()
.AddJwtBearer(option => new JwtBearerOptions
{
Authority = string.Format("https://login.microsoftonline.com/tfp/{0}/{1}/v2.0/",
Configuration["Authentication:AzureAd:Tenant"], Configuration["Authentication:AzureAd:Policy"]),
Audience = Configuration["Authentication:AzureAd:ClientId"],
Events = new JwtBearerEvents
{
OnAuthenticationFailed = AuthenticationFailed
}
});
qui me donne l'erreur suivante:
Microsoft.AspNetCore.Hosting.Internal.WebHost: Information: Demande de démarrage HTTP/1.1 GET http://localhost:44352/api/values/5
Microsoft.AspNetCore.Server.Kestrel: Erreur: ID de connexion "0HL89JHF4VBLM", ID de demande "0HL89JHF4VBLM: 00000001": Une exception non gérée a été levée par l'application. System.InvalidOperationException: Aucun authenticationScheme n'a été spécifié et aucun DefaultChallengeScheme n'a été trouvé.
si services.AddAuthentication modifié comme
services.AddAuthentication(sharedOption =>
{
sharedOption.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
l'erreur est maintenant
Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: Information: Impossible de valider le xxx jeton. Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException: IDX10500: Échec de la validation de la signature. Aucune clé de sécurité n'a été fournie pour valider la signature. à System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature (jeton de chaîne, TokenValidationParameters validationParameters) à System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken (jeton String, TokenValidationParameters validationParameters, SecurityToken & validatedToken) à Microsoft.AspNetCore. Authentication.JwtBearer.JwtBearerHandler.d__6.MoveNext()
Cela ne suffit pas informations pour vous aider. Pouvez-vous ajouter des liens aux échantillons que vous utilisez, au code que vous utilisez, aux requêtes http et aux charges utiles de jetons? – Saca
@Saca, j'ai édité la question pour ajouter les liens et plus d'information, excepté les appsettings que j'ai faits ou fais aucun changement –
Cela fonctionne si App et Api sont avec le noyau de .net 1.1 ou si App est 2.0 et Api est 1.1. Cela ne fonctionne pas si App et Api sont 2.0 ou si App est 1.1 et Api est 2.0 –