Я интегрирую Azure Active Directory в облачную платформу. Поскольку наше приложение является мультитенантным и опирается на требования платформы c, мы определили самый простой способ go об этом - получить токен Azure AD через наш SPA, передать его обратно в наш WebApi, проверьте его и верните в SPA маркер платформы со всеми необходимыми нам требованиями go о нашей обычной деятельности (как если бы это был простой запрос на аутентификацию имени пользователя / пароля).
Я обеспокоен хотя уровень безопасности для этого.
Некоторый контекст
Поскольку наша платформа является мультитенантной, мы просим каждого клиента зарегистрировать приложение на своем портале Azure AD, а затем предоставить нам с сгенерированным приложением (идентификатор клиента) и идентификатором каталога (клиента) . Мы используем эти две части информации для первоначального запроса к Azure через наш интерфейсный SPA (следуя примеру node.js
, предоставленному руководством Microsoft Quickstart
при регистрации приложения). Теперь, поскольку пользователь не прошел проверку подлинности на данном этапе, нам нужно было каким-то образом вернуть эти два указанных c идентификатора для клиента. Мы выполнили это, используя поддомен для идентификации.
Например, acmeinc.mydomain.com
вернет другой идентификатор приложения (идентификатор клиента) и каталог (арендатор), чем billy.mydomain.com
. Очевидно, что теперь они публикуются c, так как этот запрос происходит от неаутентифицированного внешнего интерфейса.
Я могу отлично обработать ответ токена, как во внешнем, так и во внутреннем, когда Я передаю его и подтверждаю, что эти две части информации являются правильными в токене, но, учитывая, что клиенту передается их интерфейс, проверка на них избыточна. Кроме того, проверка издателя кажется в равной степени избыточной, поскольку тот, кто знает ID (арендатора) каталога, тоже может подделать это (верно?)
Я что-то здесь упускаю? Я чувствовал бы себя намного легче, если бы можно было запросить у клиента также утверждение, которое моя платформа генерирует в частном порядке, чтобы я мог проверить это утверждение наряду с обычной проверкой JWT. Пользовательские утверждения не представляется возможным на портале Azure AD.
Я пропустил важный шаг или просто переосмыслил это?