LoginSignup
1
2

More than 3 years have passed since last update.

[javascript] Auth0でManagement APIをより簡単に使う

Last updated at Posted at 2020-09-17

通常ルート

Auth0 Management APIドキュメント

  1. Machine-to-Machine Applicationをまず作る(参考)
  2. デフォルトで存在するAuth0 Management APIを選択しpermissions(scopes)を選ぶ
  3. 出来たMachine-to-Machine Applicationのclient_idclient_secretでManagement APIのtokenを取る
  4. authorization: Bearer ${token}みたいな形でManagement APIを呼ぶ

REST APIなので通信ができれば言語は問わないが、Javascript(node)でAPIを呼ぶ前提なら、かなり簡素にかける。

node-auth0 npmパッケージを使う

readmeにあるサンプルコード
var ManagementClient = require('auth0').ManagementClient;
var auth0 = new ManagementClient({
  domain: '{YOUR_ACCOUNT}.auth0.com',
  clientId: '{YOUR_NON_INTERACTIVE_CLIENT_ID}',
  clientSecret: '{YOUR_NON_INTERACTIVE_CLIENT_SECRET}',
  scope: 'read:users update:users'
});

ManagementClientを使って、clientId、clientSecretを渡せば裏でManagement APIのtokenを取ってきてくれるので、コードがスッキリする。

githubのリポジトリを見るとわかるが、ManagementClientには26個のプロパティがあって、

// https://auth0.com/docs/api/management/v2#!/Users_By_Email/get_users_by_email
auth0.users.getByEmail("email@address.local", (err, users) => console.log(users))

みたいにAPIの呼び出しが全てラップされている。

現状Typescriptは用意されていないようなので、ソースを読まないといけないのが難点。
現状これがドキュメントっぽい。

躓き点

Application_Details.png

domainとかがdomain: '{YOUR_ACCOUNT}.auth0.com'になっているけど、最近作ったアカウントのApplicationのdomainは.usが間に入ってて、気づかずdev-tm15fv0o.auth0.comみたいな形でテストしてた。
これでずっとaccess_denied: {"error":"access_denied","error_description":"Unauthorized"}のエラーで悩まされてた。

ubuntu_❐_0_●_2_docker.png

(accountとも言うし、tenantとも言うし、他にも色々同じ箇所を別の言い方で説明しているのでとにかくドキュメントが読みづらい...)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2