Как включить поток OpenID Connect с локальными учетными записями удостоверений? - PullRequest
1 голос
/ 15 января 2020

Я разрабатываю новое решение, состоящее из основного сервера ASP. NET, SPA Angular и удаленного сервера OpenID Connect (IdentityServer4). Я хотел бы разрешить пользователям подключаться, используя свою локальную учетную запись Identity, когда удаленный сервер OpenID Connect недоступен, например, когда потеряно соединение rnet.

По умолчанию локальные учетные записи при использовании Asp. Net CORE Identity полагаются на куки-файлы, что явно плохо, поскольку я хочу, чтобы Angular SPA использовал ТОЛЬКО OpenID Connect вместо разработка нескольких провайдеров / потоков.

Возможно ли разработать конечную точку авторизации (я использую ТОЛЬКО «неявный» тип предоставления) в моем приложении ASP. NET Core server, которое перенаправило бы на мою Конечная точка авторизации сервера OpenID Connect, когда она достижима, и будет ли возвращаться локально вычисленный токен, когда сервер OpenID Connect недоступен? Таким образом, мой Angular SPA будет знать только конечную точку авторизации моего ASP. NET основного сервера, и последний сможет переключаться с локальных на удаленные учетные записи в зависимости от потребностей.

Спасибо заранее

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Я составлю ответ, исходя из моего понимания относительно ваших вопросов.

Сначала внедрите в вас аутентификацию на носителе JWT. Net Базовое приложение. Реализуйте другую конечную точку, скажем, Login, которая принимает имя пользователя и пароль. Эти имена пользователей и пароли хранятся локально в базе данных. Login должен быть реализован таким образом, чтобы он возвращал токен-носитель JWT при успешной проверке учетных данных в базе данных.

Теперь ваш SPA должен сначала отправить запрос на авторизацию серверу идентификации. Если это успешно, то нет проблем по вашему вопросу. Но если это какой-то другой код ошибки, связанный с недоступностью, после этого ответа вы должны предложить другой экран входа в систему, чтобы пользователь предоставил локальные учетные данные. Затем запрос будет отправлен на конечную точку Login, которую мы реализовали ранее, где переданные учетные данные будут проверены по базе данных, а SPA получит токен-носитель JWT, если учетные данные действительны.

1 голос
/ 16 января 2020

Итак, в конце концов, я решил превратить свое ядро ​​Asp. Net в IdentityServer, чтобы SPA запрашивал только этот сервер без знания моего удаленного IdentityServer и добавлял последний в качестве внешнего поставщика ( с помощью метода расширения коллекции сервисов AddOpenIDConnect).

В действии Вход в систему моего Asp. Net Центрального сервера я проверяю, доступен ли удаленный IdentityServer.

Если это так, я бросаю ему вызов по схеме 'idsrv.external', таким образом, по-видимому, перенаправляя пользователя на внешний IdentityServer.

Если это не так, я продолжаю нормальный процесс входа в систему, как описано в документации IdentityServer4.

Таким образом, мой SPA должен знать только URL-адрес моего сервера, а последний, по-видимому, предоставляет токен, должен ли он произвести его сам или делегировать его внешнему IdentityServer x)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...