Я пытаюсь создать аутентификацию в веб-приложении ASP.NET Core 2.0.
Моя компания использует Ping Federate, и я пытаюсь аутентифицировать своих пользователей, используя страницу входа компании, и в свою очередь проверяю возвращенный токен, используя мой ключ подписи (X509SecurityKey
здесь).
Ссылка на ссылку ping login выглядит так:
https://auth.companyname.com
Я настроил файл Startup.cs, чтобы иметь возможность войти в систему и выполнить вызов этого сайта.
Я украсил свой HomeController [Authorize(Policy="Mvc")]
.
Я могу зайти на страницу входа, но всякий раз, когда возвращаюсь с нее, получаю (
Я попытался отключить / включить несколько проверок):
Исключение: корреляция не удалась.
Неизвестное местоположение
Исключение: при обработке удаленного входа произошла ошибка.
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync ()
Сообщение об ошибке не очень полезно ... кто-нибудь сталкивался с такой проблемой раньше?
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = PF_LOGINPATH;
options.ClientId = Configuration["ClientId"];
options.ClientSecret = Configuration["ClientSecret"];
options.Scope.Clear();
options.ResponseType = OpenIdConnectResponseType.CodeIdTokenToken;
options.SaveTokens = false;
options.GetClaimsFromUserInfoEndpoint = false;//true;
options.TokenValidationParameters = new TokenValidationParameters
{
RequireSignedTokens = false,
ValidateActor = false,
ValidateAudience = false,
ValidateIssuer = false,
ValidateIssuerSigningKey = false,
ValidateTokenReplay = false,
// Compensate server drift
ClockSkew = TimeSpan.FromHours(24),
//ValidIssuer = PF_LOGINPATH;
// Ensure key
IssuerSigningKey = CERTIFICATE,
// Ensure expiry
RequireExpirationTime = false,//true,
ValidateLifetime = false,//true,
// Save token
SaveSigninToken = false
};
});
services.AddAuthorization(options =>
{
options.AddPolicy("Mvc", policy =>
{
policy.AuthenticationSchemes.Add(OpenIdConnectDefaults.AuthenticationScheme);
policy.RequireAuthenticatedUser();
});
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}