Заставить пользователей проходить аутентификацию только от специального клиента в IdentityServer - PullRequest
0 голосов
/ 10 июля 2020

У меня:

  • Client1 (AspNetCore) как Client_1 (это клиент IS4)
  • Client2 (AspNetCore) как Client_2 (это клиент для IS4)
  • Client3 (AspNetCore) как MyMasterClient (это клиент для IS4) (на его домашней странице есть две ссылки для входа для Client_1 и Client_2)
  • и IdentityServer4 как MyIS4 (в качестве сервера аутентификации) (в моей доверенной зоне находятся только MyIS4 и MyMasterClient)

Я не хочу, чтобы пользователи могли проходить аутентификацию напрямую из MyClient_1 (или MyClient_2), и им нужно от go до MyMasterClient для доступа к Client_1 и Client_2.

Вот мой сценарий: User AgentSmith находится в https://Client_1.SomeDomain

  1. Он нажимает ссылку входа (авторизация инициирует конечную точку)
  2. AgentSmith перенаправляет на MyIS4.TrustedDomain (авторизует конечную точку)
  3. [этот шаг] Мы проверяем, запрос исходит из MyMasterClient.TrustedDomain или нет
  4. Потому что он не из MyMasterClient.TrustedDomain, поэтому мы должны перенаправить его на домашнюю страницу MyMasterClient (процедура аутентификации здесь останавливается)

Хорошо, теперь AgentSmith находится на домашней странице https://MyMasterClient.TrustedDomain:

  1. Он нажимает «войти в Client_1» (у нас есть эта ссылка на домашней странице MyMasterClient)
  2. [этот шаг] Мы проверяем, исходит ли запрос от MyMasterClient.TrustedDomain или нет
  3. Потому что он от MyMasterClient.TrustedDomain, поэтому мы продолжаем процедуру аутентификации и показываем страницу входа ему и так далее.

Шаг [этот шаг] - моя проблема: сейчас я отправляю зашифрованное значение («MySecretAndEncryptedParam») в конечную точку авторизации только если пользователи приходят из MyMasterClient.TrustedDomain, и в конечной точке авторизации (метод MyIS4 AccountController.Login) я проверю, существует ли и действителен ли «MySecretAndEncryptedParam» (расшифруйте его, затем подтвердите его значение), затем запрос будет из MyMasterClient.TrustedDomain, и процедура аутентификации продолжается.

Мои вопросы:

Как я могу это сделать? Это нормально с точки зрения безопасности / дизайна, или мне следует рассмотреть другие способы или механизмы?

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