При настройке ядра asp.net с AddOpenIdConnect
он создает по умолчанию страницу /signin-oidc
, которая отлично работает при доступе от провайдера opeind.Пользователь вошел в систему и все работает нормально.
Хотя пользователь все еще может попытаться получить доступ к mypage.com/signin-oidc
напрямую и получить в результате Correlation failed
сбойную ошибку.
Как правильно обработать доступ кэта страница, чтобы она все еще работала для потока openid, но не выдает ошибку (перенаправления) при прямом доступе?(попытался переписать Route с помощью HttpGet уже)
EDIT Чтобы уточнить, переход к /signin-oidc
дает статус 500 с базовым запуском, как
`` `
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie()
.AddOpenIdConnect(options =>
{
options.ClientId = "test";
options.ClientSecret = Environment.GetEnvironmentVariable("ClientSecret");
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = "https://test.net";
options.ResponseType = "code";
options.Scope.Add("openid");
options.GetClaimsFromUserInfoEndpoint = true;
options.SaveTokens = true;
options.Events = new OpenIdConnectEvents
{
OnTokenValidated = async ctx =>
{
var claims = new List<Claim>();
claims.Add(new Claim("jwt", ctx.SecurityToken.ToString()));
var appIdentity = new ClaimsIdentity(claims);
ctx.Principal.AddIdentity(appIdentity);
}
};
}).AddJwtBearer(options =>
{
options.Authority = "https://test.net";
options.Audience = "authorization.sample.api";
options.IncludeErrorDetails = true;
});
services.AddMvc();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "Test API"
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot")),
RequestPath = "/dist"
});
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.Use(async (context, next) =>
{
if (context.Request.Host.Host.ToLower() != "localhost")
context.Request.Scheme = "https";
await next.Invoke();
});
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=LandingPage}/{id?}");
routes.MapRoute("Spa", "{*url}", defaults: new { controller = "Home", action = "Index" });
});
var swaggerJsonEndpoint = "api-docs/{0}/swagger.json";
app.UseSwagger(so => so.RouteTemplate = string.Format(CultureInfo.InvariantCulture, swaggerJsonEndpoint, "{documentName}"));
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "api-docs";
c.SwaggerEndpoint("/" + string.Format(CultureInfo.InvariantCulture, swaggerJsonEndpoint, "v1"), "Test API v1");
c.OAuthClientId("admin.implicit");
});
}
`` `