Наличие учетных данных пользователя в качестве внешнего идентификатора ресурса (т. Е. Представление разных представлений одного и того же URL-адреса для разных ролей) приведет к неприятным последствиям. Пользователи и приложения обмениваются URL-адресами между ними, когда это происходит, все становится плохо, и URL просто возвращает разный контент для разных учетных данных.
Я бы сказал, что у каждой роли свой взгляд на мир, поэтому каждая роль должна иметь свой путь к сервису:
- администраторы подключаются к example.com/admin/employees
- пользователи подключаются к example.com/users/employees
- роль foo, вероятно, подключается к example.com/foo/employees
Таким образом, вы отделяете часть «эта роль видит мир как таковой и такой» от части «эта точка зрения на мир доступна для роли». Администратор может подключиться к example.com/users/employees и проверить, как обычный пользователь видит мир, без того, чтобы администратору сначала пришлось выдавать себя за более низкий привилегированный псевдоним.
Вы также можете использовать часть DNS для той же цели: admin.example.com/employees против users.example.com/employees. Это особенно актуально для связанного сценария, когда «роль» - это не роль безопасности, а мультитенантное пространство имен (т. Е. Каждая учетная запись, предоставленная службой, получает свое собственное «представление» службы).