記事作成経緯
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アプリケーションの作り方
アプリケーション > アプリケーション
を開いて、アプリケーションを作成ボタンを押下します。
↓
マシンツーマシンアプリケーションを選択し、作成ボタンを押下します。
私はGetAccessTokenという名前にしましたが、名前はなんでも大丈夫です。
↓
プルダウンが出てくるので、Auth0 Management APIを選択します。
M2Mアプリケーションが取得できるアクセストークンの認可(パーミッション)を選び、
認可ボタンを押下します。
パーミッションって何?どれ選べばいいの?
ってなりました。なりましたよね。
付与するパーミッションは使用するAPIによって異なります。
公式のAPIドキュメントにAPIを使用するときのパーミッションが記載されているので、確認してみます。
今回私はユーザーを削除するAPIを呼び出したかったので、そのAPIのドキュメントを見てみましょう。
この「スコープ」に書かれているものがパーミッションで選択しなければならないものです。
私の場合は、delete:current_user
が見当たらなかったので、delete:users
を選択していますが、
これだけでも問題ありません。
画像にはreadにもチェックしていますが、ユーザー削除APIに関してはdelete:users
だけで問題ないです。
パーミッションを選択し、認可を押下するとアプリが作成されます。
念のためSaveボタンを押下し、アプリケーションを保存します。
ここに記載のクライアントIDとクライアントシークレットを使用します。
以上で、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公式ドキュメントを参考に進めました。