使用angular-oauth2-oidc库从Auth0获取完全访问令牌

时间:2018-08-26 09:46:14

标签: angular auth0 angular-oauth2-oidc

我设置了the angular-oauth2-oidc库以用于Auth0。但是,Auth0一直向我发送一个非常短的访问令牌,例如mSNhEfdDHK6t-kT5QweRtgec-FPGAsdfEw9,而不是完整的JWT令牌。重现此问题的方法如下:

 
  1. 在Auth0中创建要作为资源访问的示例“ API”。
  2. 为Auth0中的隐式流创建一个SPA应用程序。
  3. angular-oauth2-oidc或克隆my sample repo开始快速入门。
  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令牌。

this thread on the Auth0 community forums解释了为什么获得访问令牌这样的“不透明字符串”的原因。被接受的最上面的答案提到了我已经在做的事情(像我所做的{sope,称呼/authorize,等等)。但是,在该线程的下面,它提到在调用audience时设置/authorize是解决方案,无论如何这似乎是一件好事。

但是您如何发送audience?在the AuthConfig type上没有这样的属性可以进行设置,而在initImplicitFlow()的源代码中,它只是直接修改了location.href,所以那里也没有拦截。

1 个答案:

答案 0 :(得分:0)

您快到了。尽管将audience作为AuthConfig类型的特定属性可能会很好,但是已经有一种配置它的方法:为此使用the 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