У меня есть приложение .Net Core 2.1, которое я использую для тестирования моего нового развертывания Identity Server 4 в AWS.
Две программы отлично работают на моем локальном компьютере, где я могу проходить аутентификацию с IS4 и перенаправляться в свое приложение со всей информацией для входа в систему.
На моем развернутом сервере это не так, и я не уверен, почему.
Я не вижу ошибок на моем сервере IS4, он видит мой клиент и аутентифицирует запрос.
Однако на моей локальной машине мой проект получает ошибку:
System.Exception: An error was encountered while handling the remote login. ---> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException: Message contains error: 'invalid_request', error_description: 'error_description is null', error_uri: 'error_uri is null'.
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RedeemAuthorizationCodeAsync(OpenIdConnectMessage tokenEndpointRequest)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync()
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
После того как я позвоню:
return Challenge(new AuthenticationProperties
{
RedirectUri = "Home/Index"
}, "challenge");
Запуск локальных программ:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookie";
options.DefaultChallengeScheme = "challenge";
//options.DefaultSignInScheme = IdentityServerConstants.DefaultCookieAuthenticationScheme;
//options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie("Cookie")
.AddOpenIdConnect("challenge", options =>
{
options.Authority = "http://auth.is4server.com";
//options.Authority = "http://localhost:5000";
options.SignInScheme = "Cookie";
options.RequireHttpsMetadata = false;
options.ClientId = "mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("offline_access");
options.Scope.Add("profile");
options.Scope.Add("accunet");
});
Похоже, что он перенаправляет на страницу входа в IS4, а затем мгновенно пытается перенаправить обратно на мой redirectUri, который localhost:5002/signin-oidc
с предыдущей ошибкой. Я подтвердил, что вся моя конфигурация IS4 одинакова на моей локальной машине и экземпляре AWS.
Я не уверен, почему это не работает, есть ли проблемы с попыткой перенаправить на мою локальную машину? Ошибка, кажется, не дает мне много деталей и сетевых ответов.
До того, как это начало происходить, я бы хотя бы попытался войти на страницу входа в IS4, прежде чем перенаправить меня обратно к моему signin-oidc. Теперь он даже не попадает на страницу входа, он всегда перенаправляет на signin-oidc с ошибкой. Я очистил куки и перезапустил сервер и локальный проект безрезультатно.
Любая помощь будет оценена.