Identity Server 4 - Аутентификация пользователя - Конфиденциальное приложение - Секрет нескольких клиентов - Один Client_ID - PullRequest
0 голосов
/ 18 марта 2019

У меня есть сценарий подключения стороннего клиентского приложения (мобильное приложение - с секретом клиента) к Identity Server для получения доступа к серверу ресурсов. Во время входа в систему клиентское приложение отображает местоположение нескольких магазинов для входа в систему.

Клиентское приложение имеет уникальный секрет для каждого местоположения магазина и один Client_ID.

Когда конечный пользователь выбирает хранилище для входа в систему - сервер ID получает запрос от клиентского приложения с идентификатором Client_ID и конкретным секретом, соответствующим местоположению хранилища.

Вопрос, который я здесь задаю, заключается в том, как заставить Identity Server (3 или 4) выполнять вход пользователя в систему в зависимости от местоположения магазина.

Я думаю о том, чтобы перехватить Client_Secret, чтобы использовать его во время входа в систему для сопоставления с правильным идентификатором магазина с помощью таблицы поиска.

Это хороший подход для проработки этого сценария, или кто-то может пролить свет на любые возможные предложения, чтобы этот сценарий работал с Identity Server.

Ожидаемый поток:

  1. Клиентское приложение Отображение местоположения магазина на экране входа в систему
  2. Пользователь выбирает конкретное местоположение магазина
  3. Пользователь направляется в конечную точку авторизации Identity Server, и выполняется проверка клиента.
  4. Дисплеи сервера авторизации - экран входа пользователя в систему
  5. Сервер авторизации аутентифицирует конечного пользователя в зависимости от местоположения хранилища. (Нужно найти способ добиться этого)

1 Ответ

0 голосов
/ 19 марта 2019

Если вы намерены завершить процесс входа в систему в самом мобильном приложении, а не в клиенте браузера, вам нужно будет использовать resource owner credentials тип предоставления, в этом случае, на самом деле, не имеет значения, есть ли у вас один или несколько секретов в магазине, поскольку он аутентифицирует одного клиента в соответствии с вашим сценарием.

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

В целом, нигде в вашем потоке местоположение магазина, кажется, не имеет значения, если нет какой-либо связи между учетными данными пользователя и идентификатором магазина. Если это так, то это по сути вопрос с несколькими арендаторами для Identity Server 4, для которого уже есть обсуждения с предложениями.

https://github.com/IdentityServer/IdentityServer4/issues/2673

Как защитить мультитенантный API с помощью Identity Server?

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