Ich schreibe eine ASP.Net Core 2.0 Web App und ich versuche, Azure AD B2C für die Authentifizierung zu verwenden.500 Fehler, wenn Azure AD B2C signin-oidc Callback ruft
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SchoolContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com";
options.Audience = "aud";
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = t =>
{
return Task.FromResult(0);
}
};
})
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.MetadataAddress = $"https://login.microsoftonline.com/{Configuration["AzureAdB2C:Tenant"]}/v2.0/.well-known/openid-configuration?p={Configuration["AzureAdB2C:Policy"]}";
options.ClientId = Configuration["AzureAdB2C:ClientId"];
options.Events = new OpenIdConnectEvents { OnAuthenticationFailed = AuthenticationFailed, OnTokenValidated = Validated, OnRemoteFailure = Failed };
options.SaveTokens = true;
});
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("MyPolicy"));
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
if (env.IsDevelopment())
{
var builder = new ConfigurationBuilder();
builder.AddUserSecrets<Startup>();
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
ReactHotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseCors("MyPolicy");
app.UseMvc();
}
Ich habe ein [Authorize]
Attribut auf einer Controller-Aktion, und wenn ich den Link, den ich mit der Microsoft-Anmeldeseite erhalten vorgestellt folgen. Ich logge mich erfolgreich ein und es leitet mich zurück zu https://localhost:[PORT]/signin-oidc
, der einen Fehler des 500 Servers zurückbringt.
Meine Frage ist, weiß jemand, warum das passiert? Ich dachte, es könnte etwas mit CORS zu tun haben, aber es sieht nicht so aus. Der Beitrag von Microsoft scheint ein gültiges Token zu enthalten.
Sie müssen das Problem mehr debuggen. Ein Fehler von 500 könnte irgendetwas bedeuten. Obwohl auf diese Weise Ihre JWT Bearer Auth falsch konfiguriert ist. Die Autorität verweist nicht auf eine geeignete Autorität, und die Zielgruppe sollte die Client-ID/App-ID-URI sein. – juunas
Wenn Sie einen Haltepunkt auf 'OnAuthenticationFailed' hinzufügen, wird er dann getroffen? Wenn ja, inspizieren Sie "t" und sehen Sie, ob es weitere Details gibt. – Saca
Ich habe Haltepunkte auf OnAuthenticationFailed hinzugefügt, aber es wird nicht getroffen. Irgendwelche Vorschläge darüber, was ich noch zum Debuggen tun kann? – Dave