Как настроить и указать Auth0 возвращать токены аутентификации с полномочиями (JWT) - PullRequest
1 голос
/ 20 января 2020

Я просто пытаюсь заставить 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 передать мне любые полномочия, которые я могу использовать вообще.
...