У меня есть веб-сайт, который я хочу сделать с концепцией OAuth2 / OIDC для проверки концепции.С этой целью я настроил локально работающее приложение MVC IdentityServer4 в качестве демонстрационного сервера OIDC, следуя рекомендациям по быстрой установке IdentityServer4.Это прекрасно работает и позволяет перейти к:
http://localhost:5000/.well-known/openid-configuration
Позволяет мне увидеть документ об обнаружении.
Я создал поддельную страницу входа в систему в этом приложении OIDC, которая состоит только из кнопки входа без пользователятребуются учетные данные.
Там нет фактической базы данных пользователей, и я просто жестко кодирую некоторые пользовательские данные, которые возвращаются, когда происходит «аутентификация».
На моем ранее существовавшем сайте я добавилOWIN среднего износа и я настраиваю OIDC с помощью OpenIdConnectAuthenticationOptions .ClientId, области видимости, секретные данные и т. Д. Все совпадают, как требуется, и полномочия устанавливаются так, чтобы указывать на мое локально работающее демонстрационное приложение OIDC (http://localhost:5000). URL-адрес перенаправления возвращается на мой ранее существующий сайт после завершения аутентификации.
Все это выглядит нормально, но вот чего я хочу достичь и не могу начать работать. На моем ранее существующем сайте, когда я перехожу на любую страницу, требующую аутентификации, я хочу, чтобы пользователь был перенаправлен наСтраница входа, которую я создал в приложении OIDC. Они нажимают кнопку входа в систему (данные пользователя не требуются), аутентифицируются и перенаправляются обратно на исходную страницу.
В настоящее время при переходе на защищенную страницу я успешно перенаправлен наПриложение OIDC, но я перенаправлен на страницу с ошибкой, и я не знаю, почему. Страница с ошибками не дает мне никаких подробностей, на самом деле она жестко запрограммирована в приложении.
Когда я смотрю на документ обнаружения, я вижу, чтодля параметра authorization_endpoint установлено значение:
http://localhost:5000/connect/authorize
Так что я подумал, что, возможно, мне нужнолибо изменить это, указав на Home / Login, где я создал фиктивную форму входа, либо мне нужно было на самом деле создать эту конечную точку подключения / авторизации и поместить туда свою форму.Создание конечной точки не имеет значения, оно никогда не получает удар, и вместо этого я просто получаю страницу с ошибкой в своем приложении OIDC.Изменение его на home / login также, по-видимому, игнорируется.
В данный момент я удален от своего основного компьютера, поэтому отсутствуют фрагменты кода, но, по сути, настройка соответствует руководству по быстрой установке IdentityServer4 и OIDC.приложение действительно работает.
Проблема в том, что мой ранее существовавший сайт правильно перенаправил на страницу входа.
Я застрял на этом довольно долгое время ихотелось бы даже дойти до стадии просмотра фиктивной страницы входа.Любые указатели приветствуются и снова приносим извинения за отсутствие примера кода.
ОБНОВЛЕНИЕ
У меня появляется форма входа в систему, установив конфигурацию openid следующим образом:
Configuration = new OpenIdConnectConfiguration()
{
AuthorizationEndPoint = "http://localhost:5000/home/login"
}
Однако, когда я нажимаю «Войти», это не регистрирует меня.На этом входе в систему я делаю это:
await HttpContext.SignInAsync("subjectId","username", authenticationProps);
и затем перенаправляю обратно на мой существующий сайт.Однако это не аутентифицирует меня, и перенаправление заканчивается перенаправлением обратно на страницу входа.
ОБНОВЛЕНИЕ 2
Я думаю, что URI перенаправления, возможно, должен делать что-то большее.В настоящее время я делаю следующее:
Попытка доступа к закрытой странице -> Перенаправление на сервер OIDC -> Нажмите «Вход» (это устанавливает тему и пользователя успешно) -> Перенаправлено для перенаправления URI, который немедленно возвращает меня обратно насервер OIDC.
Так, может быть, URI перенаправления должен подтвердить вход в систему или иным образом что-то сделать?