Добавьте значение в токен jwt в потоке аутентификации устройства, используя хуки с Auth0 - PullRequest
0 голосов
/ 31 марта 2020

В настоящее время мы используем тип приложения M2M для аутентификации клиентских CLI. У нас есть несколько арендаторов, поэтому мы добавляем значение арендатора к нашему токену JWT, чтобы использовать его в нашем бэкэнде (используя метаданные приложения и хуки). Однако мы хотим разрешить нашим клиентам входить в систему с помощью единого входа. Мы также хотим позволить клиентам использовать доступ на основе ролей на их стороне.

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

К сожалению, мы больше не можем использовать тот же хук, который мы использовали раньше, чтобы добавить арендатора в наш JWT. Это потому, что, очевидно, перехват не срабатывает при извлечении токена с использованием потока кода устройства.

Итак, вопрос: как добавить значение в токен в этом потоке? Как мы можем добавить идентификатор к токену, который бэкэнд может использовать для определения того, для какого арендатора используется аутентификация?


Возможно два дополнительных вопроса:

  • , если мы будем использовать поток кода устройства для CLI или, скорее, другого потока?
  • действительно ли нужно создавать приложение в auth0 для каждого арендатора, чтобы auth0 не отображал все соединения на экране входа клиента? Например, в нашей настройке dev каждое соединение становится общедоступным через свой CDN здесь

curl https://cdn.eu.auth0.com/client/oDQ6zpmQKlMBrrTGrnqj7PBCUVuf2Suj.js
Auth0.setClient({"id":"oDQ6zpmQKlMBrrTGrnqj7PBCUVuf2Suj","tenant":"datamindedbe-dev","subscription":"free","authorize":"https://datamindedbe-dev.eu.auth0.com/authorize","callback":"","hasAllowedOrigins":false,"strategies":[{"name":"google-apps","connections":[{"name":"dataminded","domain":"dataminded.be","scope":["email","profile"]}]}]});

Обратите внимание на strategies > connections в результате. Если мы добавим сюда несколько корпоративных подключений арендатора, они будут доступны любому, у кого есть наш client_id, который в нашем случае будет опубликован c, если мы откроем его с открытым исходным кодом.

...