2

私は auth0 と Angular 2 の初心者です。アプリの認証と承認に Auth0 を使用しようとしています。認証の初期化に使用するコードの下

@Injectable()
export class Auth {
  //Configure Auth0
  lock = new Auth0Lock('CLIENT_ID','<myapp>.eu.auth0.com', {
    auth: {
      params: {
        scope: 'openid profile user_metadata app_metadata',
        audience: 'https://<myapp>.eu.auth0.com/api/v2/'
      }
    }
  });

  userProfile;

  constructor(private router: Router) {

    this.userProfile = JSON.parse(localStorage.getItem("profile"));

    // Add callback for lock `authenticated` event
    this.lock.on("authenticated", (authResult) => {
      localStorage.setItem('id_token', authResult.accessToken);

      console.log(authResult);

      this.lock.getUserInfo(authResult.accessToken, (error, profile) => {
        if (error) {
          console.log("Error:", error);
          return;
        }

        localStorage.setItem("profile", JSON.stringify(profile));

        this.userProfile = profile;


      });
    });
  }

プロファイルをログに記録すると、プロファイル json に app_metadata が表示されず、JWT トークンにも表示されません。

配列[5] 0:「サブ」 1:「名前」 2:「ニックネーム」 3:「画像」 4:「updated_at」

ユーザープロファイルから役割を取得するために必要です。

最初に、正しいメタデータを返す getProfile メソッドを使用しましたが、非推奨になると読んだので、 getUserInfo に置き換えましたが、別の方法で動作します。

オーディエンス パラメータを削除すると、authResult にロールなどの app_metadata 情報が含まれていることに気付きましたが、コンソールから「JWT には 3 つの部分が必要です」というエラーが表示されます。

それがどのように機能するかについて、私が理解していないことがあります。

お願いします、誰か助けてくれませんか?ありがとう。

4

0 に答える 0