Я просто пытаюсь заставить Auth0 дать мне GrantAuthority
s после аутентификации.
Примечание: я использую Java Spring, хотя это не обязательно относится к моей проблеме.
Я включил Аутентификацию с Auth0 и у меня есть обработчик пост-согласия, который делает что-то вроде этого:
Tokens tokens = controller.handle(request, response);
TokenAuthentication tokenAuth = new TokenAuthentication(JWT.decode(tokens.getIdToken()));
Внутри этого объекта token
я могу вызывать такие методы, как getClaims()
, который является обычным способом хранения пользовательской информации в Auth0.
Однако в Spring мне нужны такие вещи, как @PreAuthorize("hasRole('ROLE_VIEWER')")
, и единственный способ сделать это - установить GrantAuthority
s. возвращается в Auth0 JWT
, когда пользователь входит в систему (обратный вызов после согласования). Отсюда я лично отмечаю запрос как аутентифицированный для пользователя, выполняя SecurityContextHolder.getContext().setAuthentication(tokenAuth);
.
Дело в том, что токен происходит от Auth0 и криптографически подписан, поэтому я не верю, что есть способ, которым я могу измените токен или создайте новый любым способом, который имеет смысл. Если это не так, пожалуйста, сообщите мне.
Таким образом, я могу представить, что я могу назначить пользователю токен / сеанс с необходимыми полномочиями, чтобы Auth0 дал мне токен с GrantAuthorities, такой что * У 1023 * есть роли, которые у меня будет sh у пользователя, и я могу проверять каждый последующий запрос. В настоящее время он пуст от Auth0 и не имеет полномочий.
Кроме того, у меня ранее было впечатление, что добавление API к Auth0 (затем авторизация API для приложения, создание и использование Идентификатор приложения как audience
, а затем установка разрешений пользователя в качестве разрешений для этого API) вернет Auth0-разрешения как полномочия, но это не так.
- Я не совсем понимаю, для чего эти разрешения и как они могут быть полезны для меня, если я не могу просмотреть их в токене.
- Я не совсем понимаю, как заставил бы Auth0 передать мне любые полномочия, которые я могу использовать вообще.