2

我已将angular-oauth2-oidc设置为与 Auth0 一起使用。但是,Auth0 不断向我发送一个非常短的访问令牌,例如mSNhEfdDHK6t-kT5QweRtgec-FPGAsdfEw9,而不是完整的 JWT 令牌。以下是重现该问题的方法:

  1. 在 Auth0 中创建一个您希望作为资源访问的示例“API”。
  2. 在 Auth0 中为隐式流创建 SPA 应用程序设置。
  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,所以那里也没有拦截。

4

1 回答 1

6

你快到了。audience尽管将其作为类型的特定属性可能会很好AuthConfig,但已经有一种方法可以配置它:使用forcustomQueryParams this:

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 中配置的标识符。这是管理界面的截图:

标识符是受众参数

于 2018-08-26T09:46:13.533 回答