В настоящее время мы используем тип приложения 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, если мы откроем его с открытым исходным кодом.