У меня есть сценарий, когда мой сервер ресурсов (RS) может подключаться к нескольким базам данных, и он может быть многопользователем. Он имеет конфигурацию среды, где я могу сказать: Env A указывает на базу данных A и принадлежит арендатору A; Env B указывает на базу B и принадлежит арендатору B;Каким образом можно добавить определенную информацию для сервера ресурсов в токен доступа OAuth2?
Наши настольные приложения хранят эту информацию в структуре данных, которая отправляется в RS при каждом вызове, и наши веб-приложения хранят ее в сеансе ASP.NET. Пользователь выбирает среду при входе в систему.
Теперь мы полностью переносим наши API-интерфейсы в службы REST и защищаем их с помощью oAuth2 с помощью IdentityServer4.
Мне нужно отправить эту среду в API, и я думаю, что это должно быть частью токена доступа.
Первый вопрос: это правильно? Может ли токен доступа иметь такую информацию?
Во-вторых, это лучший сервис IdentityServer4, который я должен расширить, чтобы вставить это значение в качестве претензии в токен доступа и, следовательно, внутри ClaimsPrincipal.
Третий: Иногда у меня нет пользователя, чтобы выбрать среду при входе в систему (например, учетные данные для учетных данных клиента). В этом случае, является ли правильная среда лечения в качестве требования клиента? Есть ли способ получить заявления о динамических клиентах?
Извините за длинный вопрос!
С уважением, Diogo
Ну, это требование является выбором пользователя при входе в систему. Таким образом, в моем сервисе профиля я могу получить это значение заявки из сеанса, например, и добавить его в токен. Для учетных данных клиента, возможно, единственный способ создать несколько клиентов, каждый из которых имеет конкретную заявку на среду. Таким образом, DefaultClaimsService уже добавит его в токен. Что вы думаете об этом подходе? –
Звучит нормально для меня – leastprivilege