Auth0 Angular-尝试使用auth0.client获取/更新配置文件时为401

时间:2019-07-06 20:51:53

标签: angular typescript auth0 auth0-lock

我正在将Auth0与Angular应用程序一起使用。我点击了Auth0的管理API,使用从Auth0文档中获得的以下方法来更新配置文件元数据:

  public getProfile(cb): void {
    if (!this._accessToken) {
      throw new Error('Access Token must exist to fetch profile');
    }

    const self = this;
    this.auth0.client.userInfo(this._accessToken, (err, profile) => {
      if (profile) {
        self.userProfile = profile;
      }
      cb(err, profile);
    });
  }

  public updateProfile(profileChanges : ProfileUpdate): Observable<any>  {
    console.log(this.userProfile);
    var url = 'https://APP.auth0.com/api/v2/users/' + this.userProfile.sub;
    var data = {
      user_metadata: {
        firstName: profileChanges.firstName,
        lastName: profileChanges.lastName,
        telephone: profileChanges.telephone
      }
    };

    return this.http.patch(url, data);
  }

由于我将在JwtInterceptor内部触发一些其他自定义逻辑,所以我像这样编写了一个自定义逻辑,而不是使用Auth0扩展中的HttpClient:

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
    constructor(private authenticationService: AuthService) { }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      let currentUser = this.authenticationService.currentUserValue;
      if (currentUser) {
        request = request.clone({
          setHeaders: {
            Authorization: `Bearer ${currentUser.token}`
          }
        });
      }
      return next.handle(request);
    }
}

每次我尝试获取或发布配置文件更新时,都会以401针对Management API结束。但是,身份验证和授权机制可以正常工作,我可以登录和注销就可以了。我试图将令牌切换为idTokens,并确保我不会错过Auth0仪表板内部的任何权限,但看不到任何东西。知道会是什么吗?

1 个答案:

答案 0 :(得分:1)

根据您的描述,我假设您正在尝试使用与自己的后端/ API相同的访问令牌来调用Auth0管理API。由于令牌受众和范围错误,因此无法正常工作。需要使用为此明确发出的令牌来调用Management API。

请注意,尽管通常最终用户不会自己调用该管理API,但这将是您的后端对Management API的调用,您的后端将通过Client Credentials Grant(M2M /机器对机器)。

SPA(单页应用程序)无法安全地存储客户端凭据以执行此类客户端凭据授予。

请参见

https://auth0.com/docs/api/management/v2/tokens

enter image description here