У меня:
- 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
- Он нажимает ссылку входа (авторизация инициирует конечную точку)
- AgentSmith перенаправляет на
MyIS4.TrustedDomain
(авторизует конечную точку) - [этот шаг] Мы проверяем, запрос исходит из
MyMasterClient.TrustedDomain
или нет - Потому что он не из
MyMasterClient.TrustedDomain
, поэтому мы должны перенаправить его на домашнюю страницу MyMasterClient
(процедура аутентификации здесь останавливается)
Хорошо, теперь AgentSmith находится на домашней странице https://MyMasterClient.TrustedDomain
:
- Он нажимает «войти в Client_1» (у нас есть эта ссылка на домашней странице
MyMasterClient
) - [этот шаг] Мы проверяем, исходит ли запрос от
MyMasterClient.TrustedDomain
или нет - Потому что он от
MyMasterClient.TrustedDomain
, поэтому мы продолжаем процедуру аутентификации и показываем страницу входа ему и так далее.
Шаг [этот шаг] - моя проблема: сейчас я отправляю зашифрованное значение («MySecretAndEncryptedParam») в конечную точку авторизации только если пользователи приходят из MyMasterClient.TrustedDomain
, и в конечной точке авторизации (метод MyIS4 AccountController.Login
) я проверю, существует ли и действителен ли «MySecretAndEncryptedParam» (расшифруйте его, затем подтвердите его значение), затем запрос будет из MyMasterClient.TrustedDomain
, и процедура аутентификации продолжается.
Мои вопросы:
Как я могу это сделать? Это нормально с точки зрения безопасности / дизайна, или мне следует рассмотреть другие способы или механизмы?