Auth0 Python SDK を触ってみた

概要

以下の Auth0 Python SDK を触ってみた。という内容になります。
auth0-python

最低限「触れる」ようになるために、認証情報の設定と簡単な情報取得(ユーザー情報など)をやってみます。

必要な認証情報について

以降で紹介するソースコードを実行するために、以下が必要になります。

  • ドメイン名
  • クライアントID
  • クライアントシークレット

以下のように Auth0 管理画面から取得可能です。

サンプルソースコードと実行結果

本記事のために用意したサンプルソースコードが以下になります。
先ほど取得したドメイン名などを記載します。
※本来機密情報となるため、本番利用時はソースコード内に認証情報を記載するのはお控えください

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import json
 
from auth0.v3.authentication import GetToken
from auth0.v3.management import Auth0
 
class SampleClass():
    def __init__(self):
        self.domain = '[ドメイン名]'
        self.client_id = '[クライアントID]'
        self.client_secret = '[クライアントシークレット]'
 
    def main(self):
        self.auth0_client = self.get_auth0()
        self.print_users()
        self.print_roles()
        self.print_assigned_users()
 
    def get_auth0(self):
        get_token = GetToken(self.domain)
        access_token = get_token.client_credentials(
            self.client_id,
            self.client_secret,
            f'https://{self.domain}/api/v2/'
        )['access_token']
 
        return Auth0(self.domain, access_token)
 
    def print_users(self) -> None:
        response = self.auth0_client.users.list(page=0, per_page=1)
        print('\n'.join([
            '# Auth0().users.list() のレスポンス',
            f'{json.dumps(response, indent=4)}',
            '',
        ]))
 
    def print_roles(self) -> None:
        response = self.auth0_client.roles.list(page=0, per_page=1)
        print('\n'.join([
            '# Auth0().roles.list() のレスポンス',
            f'{json.dumps(response, indent=4)}',
            '',
        ]))
 
    def print_assigned_users(self) -> None:
        role_id = 'rol_xxxx' # 適当なロールの ID を指定
        response = self.auth0_client.roles.list_users(page=0, per_page=1, id=role_id)
        print('\n'.join([
            f'# Auth0().roles.list_users(id="{role_id}") のレスポンス',
            f'{json.dumps(response, indent=4)}',
            '',
        ]))
 
 
def main():
    SampleClass().main()
 
main()

本ソースコードを実行すると、以下のように出力されました。

ソースコードの詳細説明

認証情報の設定

Auth0 の認証情報を設定しているのが以下の部分です。
クライアントシークレットなどを渡して auth0_client オブジェクトを取得しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class SampleClass():
    def __init__(self):
        self.domain = '[ドメイン名]'
        self.client_id = '[クライアントID]'
        self.client_secret = '[クライアントシークレット]'
 
    def main(self):
        self.auth0_client = self.get_auth0()
        ....
 
    def get_auth0(self):
        get_token = GetToken(self.domain)
        access_token = get_token.client_credentials(
            self.client_id,
            self.client_secret,
            f'https://{self.domain}/api/v2/'
        )['access_token']
 
        return Auth0(self.domain, access_token)

各種APIの実行

以下の部分で、ユーザーの一覧を取得しています。

1
2
3
4
5
6
7
def print_users(self) -> None:
    response = self.auth0_client.users.list(page=0, per_page=1)
    print('\n'.join([
        '# Auth0().users.list() のレスポンス',
        f'{json.dumps(response, indent=4)}',
        '',
    ]))

レスポンスは以下の通りです。

以下の部分で、ロールの一覧を取得しています。

1
2
3
4
5
6
7
def print_roles(self) -> None:
    response = self.auth0_client.roles.list(page=0, per_page=1)
    print('\n'.join([
        '# Auth0().roles.list() のレスポンス',
        f'{json.dumps(response, indent=4)}',
        '',
    ]))

レスポンスは以下の通りです。

以下の部分で、あるロールにひもづくユーザーの一覧を取得しています。

1
2
3
4
5
6
7
8
def print_assigned_users(self) -> None:
    role_id = 'rol_xxxx' # 適当なロールの ID を指定
    response = self.auth0_client.roles.list_users(page=0, per_page=1, id=role_id)
    print('\n'.join([
        f'# Auth0().roles.list_users(id="{role_id}") のレスポンス',
        f'{json.dumps(response, indent=4)}',
        '',
    ]))

レスポンスは以下の通りです。

最後に

今回は Auth0 Python SDK を「触ってみた」ということで、
まずは最低限 認証情報を設定してAPIを実行してみる部分まで実施してみました。

Auth0 Python SDK を使って何かを自動化したいけど
とっかかりが無くて困っている、という方の助けになれれば幸いです。

投稿者プロフィール

sato
2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。