0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Auth0ManagementAPIのアクセストークンをPowerShellで取得する

Posted at

記事作成経緯

Auth0の操作はダッシュボード(GUI)にて行っていたのですが、
自動化するためにAuth0 Management APIを使用することになりました。

Auth0 Management APIを呼び出すためには、アクセストークンを取得する必要があります。

が、Auth0公式にはPowerShellでのアクセストークン取得方法が記載されておらず、記事も見つけられずに不安なまま進めたので、きちんとPowerShellでアクセストークンが取得できましたよ、という成功体験話をさせていただければと思います。

なんで記載のないマイナーなPowerShellでやったのかという理由については、もともとはbatファイルで行う予定でしたが、batファイルではレスポンスのjsonが整形されておらず、わざわざ整形するのが面倒だったからです...。

Powershellなら、Windows環境であればインストール不要でAPIを投げられるので、ちょっとしたAPI実行をするのに楽だと思いますので、参考になれば幸いです。

初Qiita投稿なので読みにくいところがあるかもしれませんが悪しからず。

実行環境

・Windows 11 Pro

PowerShellがインストールされていれば問題ないです。

アクセストークンの取得方法

アクセストークンを取得するにはM2Mアプリケーションを作成し、
作成したアプリのクライアントIDとクライアントシークレットを使用します。

ダッシュボードから取得することもでき、一回だけAPIを呼び出すにはそちらのほうが楽なのですが、アクセストークンには有効期限がありますし、何より直書きでAPIを呼び出すのはあまりセキュリティ的にもよろしくないので、できればM2Mアプリケーションを作りましょう。

初めにM2Mアプリケーションの作り方について見てみましょう。

M2Mアプリケーションの作り方

アプリケーション > アプリケーション
を開いて、アプリケーションを作成ボタンを押下します。

makeApp.png

マシンツーマシンアプリケーションを選択し、作成ボタンを押下します。
私はGetAccessTokenという名前にしましたが、名前はなんでも大丈夫です。

m2m.png

プルダウンが出てくるので、Auth0 Management APIを選択します。
M2Mアプリケーションが取得できるアクセストークンの認可(パーミッション)を選び、
認可ボタンを押下します。

スクリーンショット 2025-07-14 143148.png

permission.png

パーミッションって何?どれ選べばいいの?
ってなりました。なりましたよね。
付与するパーミッションは使用するAPIによって異なります。
公式のAPIドキュメントにAPIを使用するときのパーミッションが記載されているので、確認してみます。

今回私はユーザーを削除するAPIを呼び出したかったので、そのAPIのドキュメントを見てみましょう。
image.png

この「スコープ」に書かれているものがパーミッションで選択しなければならないものです。
私の場合は、delete:current_userが見当たらなかったので、delete:usersを選択していますが、
これだけでも問題ありません。
画像にはreadにもチェックしていますが、ユーザー削除APIに関してはdelete:usersだけで問題ないです。

パーミッションを選択し、認可を押下するとアプリが作成されます。
念のためSaveボタンを押下し、アプリケーションを保存します。

appSave.png

ここに記載のクライアントIDとクライアントシークレットを使用します。

クイックスタートタブを開くとさまざまな言語でアクセストークンの取得方法が書いてあります。ここに記載の言語で処理を行う場合は、こちらからコピーペーストするのが一番手っ取り早いです。

quickStart.png

以上で、M2Mアプリケーションの作成方法は終わりです。

PowerShellでアクセストークンを取得する

$body = @{
    client_id = {作成したM2MアプリのクライアントID}
    client_secret = {作成したM2Mアプリのクライアントシークレット}
    audience = "https://{Auth0のドメイン}/api/v2/"
    grant_type = "client_credentials"
}

# アクセストークンを取得する
$response = Invoke-RestMethod -Method Post -Uri "https://{Auth0のドメイン}/oauth/token" -ContentType "application/json" -Body ($body | ConvertTo-Json)

# 変数に格納する
$access_token = $response.access_token

以上をps1ファイルとして保存し、実行すると$access_tokenに値が入ります。

実際にAPIを呼び出す

例として、ユーザー削除のAPIを呼び出します。

# 取得したアクセストークンをヘッダーに格納する
$headers = @{
    Authorization ="Bearer $access_token"
}
    
# APIのUriを変数に格納する
$uri ="https://{ドメイン}/api/v2/users/$userId"

# APIを呼びだす
Invoke-RestMethod -Method Delete -Uri $uri -Headers $headers

上記の流れでユーザー削除のAPIが実行されます。
呼び出したいAPIによってUriの内容とメソッドを変更すれば、ほかのAPIを呼び出すことも可能です。
例えば、特定のユーザーIDのユーザー情報を得たい場合は、メソッドをGetに変更するとユーザー情報を得ることができます。

# APIのUriを変数に格納する
$uri ="https://{ドメイン}/api/v2/users/$userId"

# APIを呼びだす
Invoke-RestMethod -Method Get -Uri $uri -Headers $headers

以上、M2Mのアプリケーションを作成してManagementAPIのアクセストークンを取得する方法と実際にAPIを呼び出してみました。
参考になれば幸いです。

参考記事

Auth0公式ドキュメントを参考に進めました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?