Authlete Web API 用の公式 Python ライブラリです。
Apache License, Version 2.0
https://github.com/authlete/authlete-python
https://pypi.org/project/authlete/
pip install authlete
下記のコードは「認可コードフロー」をシミュレートするものです。コード内の CLIENT_ID,
SERVICE_API_KEY, SERVICE_API_SECRET を適宜あなたのもので置き換えてください。
コードでは、クライアントアプリケーションのクライアントタイプが public であること
(そうでない場合はトークンエンドポイントでクライアント認証が要求される)、
登録されているリダイレクト URI の数が一つであること(そうでない場合は redirect_uri
リクエストパラメーターが要求される)を想定しています。
from authlete.api import *
from authlete.conf import *
from authlete.dto import *
#--------------------------------------------------
# あなたの設定
#--------------------------------------------------
authlete_api_server = 'https://api.authlete.com'
service_api_key = 'SERVICE_API_KEY'
service_api_secret = 'SERVICE_API_SECRET'
client_id = 'CLIENT_ID'
user_id = 'USER_ID'
# Authlete バージョンが 3.0 以上の場合
service_access_token = 'SERVICE_ACCESS_TOKEN'
service_api_secret = None
#--------------------------------------------------
# AuthleteApi
#--------------------------------------------------
# Authlete API にアクセスするための設定
cnf = AuthleteConfiguration()
cnf.baseUrl = authlete_api_server
cnf.serviceApiKey = service_api_key
cnf.serviceApiSecret = service_api_secret
# Authlete バージョンが 3.0 以上の場合
cnf.apiVersion = "V3"
cnf.serviceAccessToken = service_access_token
cnf.serviceApiSecret = None
# Authlete API を呼び出すためのインスタンス
api = AuthleteApiImpl(cnf)
#--------------------------------------------------
# /api/auth/authorization API
#--------------------------------------------------
# /api/auth/authorization API へのリクエストを用意する。
req = AuthorizationRequest()
req.parameters = 'response_type=code&client_id={}'.format(client_id)
# /api/auth/authorization API をコールする。
# レスポンスのクラスは authlete.dto.AuthorizationResponse.
res = api.authorization(req)
#--------------------------------------------------
# /api/auth/authorization/issue API
#--------------------------------------------------
# /api/auth/authorization/issue API へのリクエストを用意する。
req = AuthorizationIssueRequest()
req.ticket = res.ticket
req.subject = user_id
# /api/auth/authorization/issue API をコールする。
# レスポンスのクラスは authlete.dto.AuthorizationIssueResponse.
res = api.authorizationIssue(req)
# ユーザーエージェントに返す認可レスポンス
print('HTTP/1.1 302 Found')
print('Location: {}'.format(res.responseContent))
#--------------------------------------------------
# /api/auth/token API
#--------------------------------------------------
# /api/auth/token API へのリクエストを用意する。
req = TokenRequest()
req.parameters = 'client_id={}&grant_type=authorization_code&code={}'\
.format(client_id, res.authorizationCode)
# /api/auth/token API をコールする。
# レスポンスのクラスは authlete.dto.TokenResponse.
res = api.token(req)
# クライアントに返すトークンレスポンス
print("\nHTTP/1.1 200 OK")
print("Content-Type: application/json\n")
print(res.responseContent)Authlete Web API とやりとりするメソッドは全て authlete.api.AuthleteApi
インターフェースに集められています。 authlete.api.AuthleteApiImpl クラスが
AuthleteApi を実装する唯一の実装です。 AuthleteApiImpl クラスのコンストラクタは
authlete.conf.AuthleteConfiguration クラスのインスタンスを必要とします。
# AuthleteConfiguration のインスタンスを用意する。
cnf = AuthleteConfiguration()
cnf.baseUrl = ...
cnf.serviceOwnerApiKey = ...
cnf.serviceOwnerApiSecret = ...
cnf.serviceApiKey = ...
cnf.serviceApiSecret = ...
# Authlete バージョンが 3.0 以上の場合
cnf.apiVersion = "V3"
cnf.serviceAccessToken = ...
cnf.serviceApiSecret = None
# AuthleteApi インターフェースの実装を取得する。
api = AuthleteApiImpl(cnf)AuthleteConfiguration には、 AuthleteEnvConfiguration と
AuthleteIniConfiguration という二つのサブクラスがあります。
AuthleteEnvConfiguration クラスは次の環境変数から設定を読み込みます。
AUTHLETE_API_VERSIONAUTHLETE_BASE_URLAUTHLETE_SERVICEOWNER_APIKEYAUTHLETE_SERVICEOWNER_APISECRETAUTHLETE_SERVICE_APIKEYAUTHLETE_SERVICE_APISECRETAUTHLETE_SERVICE_ACCESSTOKEN
AuthleteEnvConfiguration のコンストラクタが環境変数を読み込むので、Python
コードに書かなければならないのは、次のようにインスタンスを生成する処理だけです。
cnf = AuthleteEnvConfiguration()一方、 AuthleteIniConfiguration クラスは INI ファイルを読みます。
AuthleteIniConfiguration が想定しているファイルフォーマットは次の通りです。
[authlete]
api_version = ...
base_url = ...
service_owner.api_key = ...
service_owner.api_secret = ...
service.api_key = ...
service.api_secret = ...
service.access_token = ...AuthleteIniConfiguration のコンストラクタは、INI
ファイルの名前をオプショナルパラメーターとして受け取ります。パラメーターが省略された場合、
authlete.ini がデフォルトとして使用されます。INI ファイルの名前が authlete.ini
でない場合は、次のように明示的にコンストラクタにファイル名を渡してください。
cnf = AuthleteIniConfiguration('configuration.ini')AuthleteApi インターフェースの getSettings() メソッドは
authlete.api.Settings クラスのインスタンスを返します。
このインスタンスを介して、接続タイムアウトとリードタイムアウトを設定することができます。
settings = api.getSettings()
settings.connectionTimeout = 5.0
settings.readTimeout = 5.0AuthleteApi インターフェースのメソッド群はいくつかのカテゴリーに分けることができます。
authorization(request)authorizationFail(equest)authorizationIssue(request)
token(request)tokenFail(request)tokenIssue(request)idTokenReissue(request)
createService(service)deleteService(serviceApiKey)getService(serviceApiKey)getServiceList(start=None, end=None)updateService(service)
createClient(client)deleteClient(clientId)getClient(clientId)getClientList(developer=None, start=None, end=None)updateClient(client)refreshClientSecret(clientId)updateClientSecret(clientId, clientSecret)
introspection(request)standardIntrospection(request)getTokenList(clientIdentifier=None, subject=None, start=None, end=None)
revocation(request)
userinfo(request)userinfoIssue(request)
getServiceJwks(pretty=True, includePrivateKeys=False)
getServiceConfiguration(pretty=True)
tokenCreate(request)tokenDelete(token)tokenRevoke(request)tokenUpdate(request)
getRequestableScopes(clientId)setRequestableScopes(clientId, scopes)deleteRequestableScopes(clientId)
getGrantedScopes(clientId, subject)deleteGrantedScopes(clientId, subject)
deleteClientAuthorization(clientId, subject)getClientAuthorizationList(request)updateClientAuthorization(clientId, request)
verifyJose(request)
backchannelAuthentication(request)backchannelAuthenticationIssue(request)backchannelAuthenticationFail(request)backchannelAuthenticationComplete(request)
dynamicClientRegister(request)dynamicClientGet(request)dynamicClientUpdate(request)dynamicClientDelete(request)
deviceAuthorization(request)deviceComplete(request)deviceVerification(request)
pushAuthorizationRequest(request)
gm(request)
federationConfiguration(request)federationRegistration(request)
credentialIssuerMetadata(request)credentialIssuerJwks(request)credentialJwtIssuerMetadata(request)credentialOfferCreate(request)credentialOfferInfo(request)credentialSingleParse(request)credentialSingleIssue(request)credentialBatchParse(request)credentialBatchIssue(request)credentialDeferredParse(request)credentialDeferredIssue(request)
幾つかの API や機能は、使用されている Authlete API サーバーがサポートしていなければ(たとえ
AuthleteApi インターフェースで定義されているとしても)使うことができません。例えば、CIBA は
Authlete 2.1 以降でのみ機能します。新しい Authlete バージョンを使用されたい場合は、ご連絡ください。
Authlete 2.0 以降で利用できる機能:
- Financial-grade API (FAPI)
- OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens (MTLS)
- JWT-based Client Authentication (RFC 7523)
- Scope attributes
- UK Open Banking Security Profile
Authlete 2.1 以降で利用できる機能:
- Client Initiated Backchannel Authentication (CIBA)
- JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)
- Dynamic Client Registration (RFC 7591 & RFC 7592)
- OAuth 2.0 Device Authorization Grant (Device Flow)
- JWT-based Access Token
詳細情報は スペックシート を参照してください。
Amazon API Gateway 上に構築した API を、 RFC 8705 (OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens) に準拠する「証明書に紐付くアクセストークン」により保護する Lambda Authorizer の実装を支援するユーティリティークラスが、このライブラリには含まれています。
下記は、そのユーティリティークラスを用いて書かれた、短いものの完全に動作する Lambda Authorizer の実装例です。
from authlete.aws.apigateway.authorizer import Authorizer
authorizer = Authorizer()
def lambda_handler(event, context):
return authorizer.handle(event, context)詳細は "Financial-grade Amazon API Gateway" を参照してください。
- authlete-python-django : Django 用 Authlete ライブラリ
- django-oauth-server : Django による認可サーバーの実装
- django-resource-server : Django によるリソースサーバーの実装
コンタクトフォーム : https://www.authlete.com/contact/
| 目的 | メールアドレス |
|---|---|
| 一般 | info@authlete.com |
| 営業 | sales@authlete.com |
| 広報 | pr@authlete.com |
| 技術 | support@authlete.com |