Ich habe eine vorhandene kleine App, die ich für den Test verwenden, es ist in Asp.Net Core 1.1 für sowohl die Web App als auch die API, die Authentifizierung ist getan mit Azure AD B2C. Ich versuche, es zu .NET Core 2.0 zu verschieben, aber ich kann nicht herausfinden, wie es funktioniert, habe ich versucht, beide Beispiel von GitHub Azure-Samples für Web App und API, aber ich habe entweder einen nicht autorisierten oder 500 Fehler wenn Versuchen Sie, auf die API zugreifen, wenn Sie ein funktionierendes Beispiel für den Aufruf einer Web-API aus einer Web-App mit 2.0 und geschützt durch AD B2C haben, wird es sehr geschätzt.Asp.Net Core 2.0 und Azure AD B2C zur Authentifizierung auf WebApp und API
Edit: Die Probe I-Test verwenden sind: Web App: WebApp-OpenIDConnect-DotNet core2.0 Web Api: B2C-WebApi core2.0 , Ich habe die appsettings Werte mein b2c-Verzeichnis übereinstimmen.
Für meine asp.net Core 1.1 Test App verwende ich die gleichen Proben wie oben, aber aus dem Master-Zweig, mit dem gleichen Wert für Appsettings.
Edit 2 standardmäßig in startup.cs Ich habe dies:
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
}
});
, die mir die folgende Störung gibt:
Microsoft.AspNetCore.Hosting.Internal.WebHost: Information: Request starting HTTP/1.1 GET http://localhost:44352/api/values/5 Microsoft.AspNetCore.Server.Kestrel: Fehler: Verbindungs-ID "0HL89JHF4VBLM", Request-ID "0HL89JHF4VBLM: 00000001": Eine nicht behandelte Ausnahme wurde von der Anwendung ausgelöst. System.InvalidOperationException: Es wurde kein authenticationScheme angegeben, und es wurde kein DefaultChallengeScheme gefunden.
wenn modifizierte services.AddAuthentication wie die
services.AddAuthentication(sharedOption =>
{
sharedOption.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
der Fehler ist jetzt
Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: Information: Fehler beim Token xxx zu validieren. Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException: IDX10500: Die Signaturvalidierung ist fehlgeschlagen. Zur Bestätigung der Signatur wurden keine Sicherheitsschlüssel bereitgestellt. bei System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature (String-Token, TokenValidationParameters validationParameters) bei System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken (String-Token, TokenValidationParameters validationParameters, Security & validatedToken) bei Microsoft.AspNetCore. Authentication.JwtBearer.JwtBearerHandler.d__6.MoveNext()
Dies ist nicht genug einzurichten Informationen, um Ihnen zu helfen. Können Sie Links zu den Beispielen hinzufügen, die Sie verwenden, dem Code, den Sie verwenden, den HTTP-Anfragen und Token-Nutzdaten? – Saca
@Saca, Ich habe die Frage bearbeitet, um die Links und weitere Informationen hinzuzufügen, mit Ausnahme der Appsettings, die ich noch vorgenommen habe. –
Es funktioniert, wenn App und Api mit .net Core 1.1 oder App 2.0 und Api 1.1 sind. Es funktioniert nicht, wenn App und Api 2.0 sind oder wenn App 1.1 ist und Api 2.0 ist –