Auth0 Angular - 尝试使用 auth0.client get/update 配置文件时为 401

Auth0 Angular - 401 when trying to get/update the profile with auth0.client

我将 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);
    }
}

每次我尝试获取或post 个人资料更新时,都会以 401 反对管理 API 告终。然而,身份验证和授权机制可以正常工作,我可以正常登录和注销。我试图将令牌切换为 idTokens,并确保我不会错过 Auth0 仪表板内的任何权限,但我没有看到任何内容。知道它可能是什么吗?

根据您的描述,我假设您正在尝试使用与您自己的 backend/API 相同的访问令牌来调用 Auth0 管理 API。由于错误的令牌受众和范围,这将行不通。管理 API 需要使用为此明确发布的令牌进行调用。

请注意,虽然最终用户通常不会自己调用该管理 API,但那是从您的后端调用管理 API,您的后端将在其中获取访问令牌通过 Client Credentials Grant(M2M/机器对机器)。

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

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