Skip to main content
本番環境に定期的かつ頻繁な呼び出しを行うには、バックエンドでトークンを自動的に提供するプロセスを構築(して、擬似的に無期限のトークンに)します。

前提条件

アクセストークンの取得

Auth0に v2トークンを求めるには、前提条件のステップで作成したM2Mアプリケーションの資格情報を使用して、POST操作をhttps://{yourDomain}/oauth/tokenエンドポイントに実行します。 ペイロードは次の形式でなければなりません。
curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'audience=https://{yourDomain}/api/v2/'
アプリケーションの設定タブで必ず{yourClientSecret}をクライアントシークレットに更新します。 要求パラメーター:
要求パラメーター説明
grant_type実行したいOAuth 2.0フローを示します。マシンツーマシン通信については、client_credentialsの値を使用します。
client_idこれは作成したマシンツーマシンアプリケーションの クライアントID フィールドの値です。アプリケーションの設定タブで見つけることができます。
client_secretこれは作成したマシンツーマシンアプリケーションの クライアントシークレット フィールドの値です。アプリケーションの設定タブで見つけることができます。
audienceこれはAuth0 Management API識別子 フィールドの値です。APIの設定タブで見つけることができます。
update:client_grantsスコープとcreate:client_grantsスコープは、クライアントがそれ自体にさらなる権限を付与できるようにするため、高い権限を持つアプリケーションでのみ使用してください。
応答には署名済みJWT、有効期限、付与されたスコープ、およびトークンタイプが含まれます。
{
  "access_token": "eyJ...Ggg",
  "expires_in": 86400,
  "scope": "read:clients create:clients read:client_keys",
  "token_type": "Bearer"
}
上記から、アクセストークンの期限が24時間(86400秒)後に切れること、アプリケーションの読み取りと作成が許可されていること、そしてベアラーアクセストークンであることがわかります。

Auth0のNode.jsクライアントライブラリーの使用

HTTP呼び出しの代わりに、node-auth0ライブラリーを使用して自動的にManagement APIのトークンを取得することもできます。

アクセストークンの使用

このトークンを使用するには、要求のAuthorizationヘッダーに含めます。
curl --request POST \
  --url http:///%7BmgmtApiEndpoint%7D \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
  --header 'content-type: application/json'
たとえば、すべてのアプリケーションを取得するには、以下を使用します。
curl --request GET \
  --url 'https://{yourDomain}/api/v2/clients' \
  --header 'authorization: Bearer {yourAccessToken}' \
  --header 'content-type: application/json'
Management API v2 Explorerから、各エンドポイント用のcurlコマンドを取得できます。呼び出したいエンドポイントに移動して、「このエンドポイントをテスト」 セクションにあるcurlコマンドを取得 リンクをクリックします。

例:Pythonの実装

このPythonスクリプトはManagement API v2のアクセストークンを取得し、すべてのアプリケーション取得エンドポイントの呼び出しに使用して、コンソールに応答を出力します。 実行する前に、以下の変数が有効な値であることを確認してください。
  • AUDIENCEAuth0 Management APIIdentifier(識別子)APIの[Settings(設定)]タブにあります。
  • DOMAIN:作成したM2Mアプリケーションの Domain(ドメイン)
  • CLIENT_ID:作成したM2Mアプリケーションの (クライアントID)
  • CLIENT_SECRET:作成したM2Mアプリケーションの (クライアントシークレット)
def main():
  import json, requests
  from requests.exceptions import RequestException, HTTPError, URLRequired

  # Configuration Values
  domain = 'YOUR_DOMAIN'
  audience = f'https://{domain}/api/v2/'
  client_id = 'YOUR_CLIENT_ID'
  client_secret = 'YOUR_CLIENT_SECRET'
  grant_type = "client_credentials" # OAuth 2.0 flow to use

  # Get an Access Token from Auth0
  base_url = f"https://{domain}"
  payload =  { 
    'grant_type': grant_type,
    'client_id': client_id,
    'client_secret': client_secret,
    'audience': audience
  }
  response = requests.post(f'{base_url}/oauth/token', data=payload)
  oauth = response.json()
  access_token = oauth.get('access_token')

  # Add the token to the Authorization header of the request
  headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
  }

  # Get all Applications using the token
  try:
    res = requests.get(f'{base_url}/api/v2/clients', headers=headers)
    print(res.json())
  except HTTPError as e:
    print(f'HTTPError: {str(e.code)} {str(e.reason)}')
  except URLRequired as e:
    print(f'URLRequired: {str(e.reason)}')
  except RequestException as e:
    print(f'RequestException: {e}')
  except Exception as e:
    print(f'Generic Exception: {e}')

# Standard boilerplate to call the main() function.
if __name__ == '__main__':
  main()

もっと詳しく

I