Не пытайтесь уложить дополнительный уровень сложности поверх «сломанной» проверки учетных данных, которая у вас уже есть.Вместо этого исправьте проверку учетных данных.
В чем проблема?«Идентификационный токен», который вы используете для проверки доступа, является идентификатором компании (его хеш, но это не имеет никакого значения).
Как это исправить?Просто не используйте идентификатор компании - используйте что-то лучше.
Так, например: когда кто-то проходит аутентификацию на вашем веб-сервисе, не давайте ему маркер авторизации, основанный на идентификаторе их компании.Дайте им токен аутентификации (давайте создадим здесь абстрактную сущность) «домен доступа».Пусть каждая компания в вашей базе данных будет отображаться в соотношении один ко многим с любым количеством «доменов доступа».
Всякий раз, когда кто-то запрашивает данные, смотрите, какие домены доступа включают эти данные (например, проверьте, какие доменыКомпания, данные которой запрашиваются в).Если маркер учетных данных разрешает доступ к любому этих доменов, предоставьте данные.
Это просто базовое расширение вашей текущей инфраструктуры учетных данных, которая будет обслуживать ваши потребности, оставаясь без сессии(Я полагаю, что отсутствие состояния сеанса - это именно то, почему система была спроектирована таким образом, во-первых).
Конечно, обратите внимание, что:
- Эта система контроля доступане защищен от атак доверенных пользователей. Если не существует других механизмов, то, что мешает клиенту перебивать маркер аутентификации, который он отправляет вам, пока он не совпадет с хешем другого идентификатора компании (или домена доступа) иони получают доступ к этим данным?
- Как говорит Дэвид, он также не защищен от атак «человек посередине» или даже от пассивного прослушивания. Следуйте его советам и используйте HTTPS длявыставить свои услуги.Это легкая задача.