Получить токен полного доступа из Auth0 с помощью библиотеки angular-oauth2-oidc - PullRequest
0 голосов
/ 26 августа 2018

У меня есть библиотека 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 существует эта тема *1039*, объясняющая, почему вы получаете такую ​​"непрозрачную строку" для токена доступа. В верхнем принятом ответе упоминаются вещи, которые я уже делаю (sope, как я делал, звоню /authorize и т. Д.). Тем не менее, ниже в этой теме упоминается , установка audience при вызове /authorize - это решение , которое в любом случае кажется хорошим.

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

1 Ответ

0 голосов
/ 26 августа 2018

Вы были почти там. Хотя было бы неплохо иметь 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. Вот скриншот из интерфейса управления:

Identifier is the Audience parameter

...