#c# #.net-core #model-view-controller #openid-connect
Вопрос:
Я в деле .Net core 3.1 , используя OpenIdConnect для аутентификации, вот мой startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("test",o =>
{
o.SignInScheme = "Cookies";
o.SignOutScheme = "Cookies";
o.ClientId = "test";
o.ClientSecret = "gs";
o.Authority = "https://test";
o.ResponseType = OpenIdConnectResponseType.CodeIdToken;
o.MetadataAddress = "https://test/.well-known/openid-configuration";
o.SaveTokens = true;
o.GetClaimsFromUserInfoEndpoint = true;
o.Scope.Add("openid");
o.Scope.Add("profile");
});
services.AddControllersWithViews();
services.AddRazorPages();
}
Вот мой домашний контроллер и логин действия с атрибутом [Авторизация]
[Authorize]
public IActionResult Login()
{
return View();
}
Кнопка входа находится в индексе домашней папки.cshtml
<a asp-controller="Home" asp-action="Login" target="_self" role="menuitem" class="btn btn-primary" type="button" id="btnLogin" aria-label="Log in to your account">LogIn</a>
Когда я нажимаю на кнопку входа в систему, это ошибка:
Веб-страница для веб-адреса не найдена: https://localhost:34343/Account/Login?Возврат = /Home/Login
Почему он пытается перейти в учетную запись/Войти в систему ?
Ответ №1:
Попробуйте заменить
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
Автор:
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
Комментарии:
1. не-аутентификациясхема-была-указана-и-не-было-по умолчанию-challengescheme, это ошибка
2. Не удалось заставить OpenID работать с сервером идентификации третьей части. Какие-нибудь советы ?
3. так что добавьте это : опции. DefaultAuthenticateScheme = CookieAuthenticationDefaults. Схема аутентификации;
4. Это сообщение об ошибке «Исключение InvalidOperationException: не была указана схема аутентификации, и не была найдена схема DefaultChallengeScheme. Схемы по умолчанию могут быть установлены с помощью либо дополнительной проверки подлинности(строка defaultScheme), либо дополнительной проверки подлинности(Действие<Параметры проверки подлинности> Параметры конфигурации).»
5. вот как мой startup.cs выглядит как сервисы. Проверка подлинности(параметры => { параметры. DefaultScheme = CookieAuthenticationDefaults. Схема аутентификации; параметры. DefaultAuthenticateScheme = CookieAuthenticationDefaults. Схема аутентификации; параметры. DefaultChallengeScheme = OpenIdConnectDefaults. Схема аутентификации; })