Получите токен полного доступа от Auth0 с помощью библиотеки angular-oauth2-oidc

У меня есть библиотека angular-oauth2-oidc, настроенная для использования с Auth0. Однако Auth0 продолжает присылать мне очень короткий токен доступа, например mSNhEfdDHK6t-kT5QweRtgec-FPGAsdfEw9 вместо полного токена JWT. Вот как воспроизвести проблему:

  1. Создайте образец «API» в Auth0, к которому вы хотите получить доступ как к ресурсу.
  2. Создайте приложение SPA, настроенное для неявного потока в Auth0.
  3. Следуйте инструкциям по быстрому запуску из angular-oauth2-oidc или клонируйте мой образец репозитория.
  4. Настройте его следующим образом:

    export const authConfig: AuthConfig = {
      issuer: 'https://your-tenant-name.eu.auth0.com/',
      clientId: 'your-spa-client-id-here',
      redirectUri: window.location.origin + '/index.html',
      scope: 'openid profile email',
    };
    
  5. Запустите вызов initImplicitFlow(), нажав кнопку входа в систему в своем приложении.

Когда вы это сделаете:

  • Результат: полный JWT IdToken, но короткий AccessToken.
  • Ожидается: оба токена полны токенов JWT.

В этой ветке Форумы сообщества Auth0, объясняющие, почему вы получаете такую ​​«непрозрачную строку» для токена доступа. В верхнем принятом ответе упоминаются вещи, которые я уже делаю (sope, как я, звоню /authorize и т. Д.). Однако ниже в этом потоке упоминается установка audience при вызове /authorize - это решение, что в любом случае кажется хорошим решением.

Но как отправить audience? Для типа AuthConfig такого свойства нет установите его, и глядя на initImplicitFlow() источник, он просто прямо меняет location.href, так что там тоже нет перехвата.


person Jeroen    schedule 26.08.2018    source источник


Ответы (1)


Вы были почти у цели. Хотя было бы неплохо иметь audience в качестве особого свойства для типа AuthConfig, уже есть способ настроить его: используйте customQueryParams для этого:

export const authConfig: AuthConfig = {
  issuer: 'https://your-tenant-name.eu.auth0.com/',
  clientId: 'your-spa-client-id-here',
  redirectUri: window.location.origin + '/index.html',
  scope: 'openid profile email',
  customQueryParams: {
    audience: 'https://your-api-audience-id.example.com',
  },
};

audience - это идентификатор, который вы настроили в Auth0. Вот скриншот из интерфейса управления:

«Идентификатор

person Jeroen    schedule 26.08.2018
comment
Этот ответ - золото! спас мой день! :) - person Mikelgo; 15.05.2021