ClientApplication クラス
通常、このクラスは直接使用しません。 代わりに、サブクラス ( PublicClientApplication と ConfidentialClientApplication) を使用してください。
アプリケーションのインスタンスを作成します。
コンストラクター
ClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)
パラメーター
| 名前 | 説明 |
|---|---|
|
client_id
必須
|
アプリをMicrosoft Entra 管理センターに登録した後、アプリにclient_idがあります。 |
|
client_credential
|
PublicClientApplicationでは、ここでは None を使用します。 ConfidentialClientApplicationでは、さまざまなシナリオでさまざまな入力形式がサポートされます。 クライアント シークレットの使用をサポートします。
|
|
client_claims
|
バージョン 0.5.0 で追加: この ConfidentialClientApplication の秘密キーによって署名される追加の要求のディクショナリです。 たとえば、{"client_ip": "x.x.x.x"} を使用できます。 次の既定の要求のいずれかをオーバーライドすることもできます。
規定値: None
|
|
authority
|
トークン機関を識別する URL。 形式にする必要があります
バージョン 1.17 で変更: 定義済みの定数と次のようなビルダーを使用することもできます。
規定値: None
|
|
validate_authority
|
(省略可能)権限の検証をオンまたはオフにします。 このパラメーターの既定値は true です。 規定値: True
|
|
token_cache
|
この ClientApplication インスタンスによって使用されるトークン キャッシュを設定します。 既定では、メモリ内キャッシュが作成され、使用されます。 規定値: None
|
|
http_client
|
(省略可能)抽象クラス HttpClient の実装 <msal.oauth2cli.http.http_client> 要求セッション インスタンスの既定値です。 MSAL 1.11.0 以降では、接続エラー時に 1 回の再試行を試行するように既定のセッションが構成されます。 独自のhttp_clientを提供する場合、再試行を実行するかどうかを決定するのはhttp_clientの義務です。 規定値: None
|
|
verify
|
(省略可能) これは、基になる要求ライブラリの verify パラメーターに 渡されます。これは、独自の Http クライアントを渡すように選択した場合は適用されません。 規定値: True
|
|
proxies
|
(省略可能) 基になる要求ライブラリのプロキシ パラメーター に渡されます。これは、独自の Http クライアントを渡すように選択した場合は適用されません。 規定値: None
|
|
timeout
|
(省略可能) 基になる要求ライブラリのタイムアウト パラメーター に渡されます。これは、独自の Http クライアントを渡すように選択した場合は適用されません。 規定値: None
|
|
app_name
|
(省略可能)Microsoftテレメトリの目的でアプリケーション名を指定できます。 既定値は None で、Microsoftに渡されないことを意味します。 規定値: None
|
|
app_version
|
(省略可能)アプリケーションのバージョンは、Microsoftテレメトリの目的で提供できます。 既定値は None で、Microsoftに渡されないことを意味します。 規定値: None
|
|
client_capabilities
|
(省略可能)1 つ以上のクライアント機能 (例: [CP1") の構成を許可します。 クライアント機能は、このクライアントが何に対応できるかをMicrosoft ID プラットフォーム (STS) に通知することを目的としているため、STS は特定の機能を有効にすることを決定できます。 たとえば、クライアントが 要求チャレンジを処理できる場合、STS はリソース に継続的アクセス評価 (CAE) アクセス トークンを発行し、リソースが 要求チャレンジ を出力するときにクライアントがそれらのチャレンジを処理できることを認識できます。 実装の詳細: クライアント機能は、現時点では、ネットワーク上の "claims" パラメーターを使用して実装されています。 MSAL は、それらを 要求パラメーター に結合します。このパラメーターは、後で取得トークン要求の 1 つを介して指定します。 規定値: None
|
|
azure_region
|
(省略可能)Entra リージョン トークン サービスを使用するように MSAL に指示します。 このレガシ機能は、ファースト パーティのアプリケーションでのみ使用できます。
4 つの値をサポートします。
Note リージョンの自動検出は、VM とAzure Functionsでテストされています。 信頼性が低い。 このオプションを使用するアプリケーションでは、短いタイムアウトを構成する必要があります。 詳細とリージョン文字列の値については、 見る https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting バージョン 1.12.0 の新機能。 規定値: None
|
|
exclude_scopes
|
(省略可能)これまで、MSAL は スコープoffline_access ハードコードします。これにより、アプリはユーザーのデータに長時間アクセスできるようになります。
アプリで不要または望ましくない場合は、このパラメーターを使用して、 規定値: None
|
|
http_cache
|
MSAL は長い間、 この アプリがコマンド ライン アプリ (CLI) の場合は、異なる CLI の実行間でhttp_cacheを保持する必要があります。 永続化されたファイルの形式は、 不安定なプロトコルが原因で変更される可能性があります。そのため、実装では予期しない読み込みエラーが許容されます。 次のレシピは、これを行う方法を示しています。
バージョン 1.16.0 の新機能。 規定値: None
|
|
instance_discovery
|
<xref:boolean>
これまで、MSAL は、特に未知の機関を使用する場合に、 このパラメーターの既定値は None で、インスタンス検出を有効にします。 MSAL が as-isで動作することを許可する一部の機関がわかっている場合は、インスタンスの検出を必要とせずに、次のパターンをお勧めします。
一部の機関を事前に把握していないが、提供する機関を MSAL が引き続き受け入れることを望んでいる場合は、 バージョン 1.19.0 の新機能。 規定値: None
|
|
allow_broker
|
<xref:boolean>
Deprecated. 代わりに、 規定値: None
|
|
enable_pii_log
|
<xref:boolean>
有効にすると、ログに PII (個人を特定できる情報) が含まれる場合があります。 これは、ブローカーの動作のトラブルシューティングに役立ちます。 既定の動作は False です。 バージョン 1.24.0 の新機能。 規定値: None
|
|
oidc_authority
|
バージョン 1.28.0 で追加: 形式 注: ブローカーは OIDC 権限には使用されません。 規定値: None
|
メソッド
| acquire_token_by_auth_code_flow |
リダイレクトされる認証応答を検証し、トークンを取得します。 nonce 保護が自動的に提供されます。 |
| acquire_token_by_authorization_code |
承認コード付与の後半。 |
| acquire_token_by_refresh_token |
他の場所から取得した更新トークン (RT) に基づいてトークンを取得します。 この方法は、他の場所から古い RP があり、MSAL に移行する場合にのみ使用します。 このメソッドを呼び出すと、新しいトークンが自動的に MSAL に格納されます。 MSAL を既に使用している場合は、このメソッドを使用する必要はありません。 MSAL は RT をトークン キャッシュ内に自動的に保持し、 acquire_token_silentを呼び出すとアクセス トークンを取得できます。 |
| acquire_token_by_username_password |
ユーザー資格情報を使用して、特定のリソースのトークンを取得します。 ユーザー名パスワード フローの制約については、このページを参照してください。 https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication [非推奨]この API はパブリック クライアント フローでは非推奨となり、今後のリリースで削除される予定です。 代わりに、より安全なフローを使用してください。 移行ガイド: https://aka.ms/msal-ropc-migration |
| acquire_token_silent |
ユーザーの操作なしで、特定のアカウントのアクセス トークンを取得します。 acquire_token_silent_with_errorと同じパラメーターがあります。 違いは、戻り値の動作です。 このメソッドは、空のキャッシュと更新エラーを 1 つの戻り値 None に結合します。 アプリがトークン キャッシュの検索中に正確なトークン更新エラーを気にしない場合は、この方法が簡単で推奨されます。 |
| acquire_token_silent_with_error |
ユーザーの操作なしで、特定のアカウントのアクセス トークンを取得します。 キャッシュから有効なアクセス トークンを見つけるか、キャッシュから有効な更新トークンを見つけて、それを自動的に使用して新しいアクセス トークンを引き換えることで行われます。 このメソッドは、キャッシュ空とトークン更新エラーを区別します。 アプリでトークン キャッシュの検索中に正確なトークン更新エラーが発生する場合は、このメソッドが適しています。 それ以外の場合は、他の方法 acquire_token_silent することをお勧めします。 |
| get_accounts |
以前にサインインしたアカウント 、つまりキャッシュに存在するアカウントの一覧を取得します。 後でアカウントを acquire_token_silent で使用してトークンを検索できます。 |
| get_authorization_request_url |
承認コード付与を開始するための URL を作成します。 |
| initiate_auth_code_flow |
認証コード フローを開始します。 後で応答がredirect_uriに達したら、 acquire_token_by_auth_code_flow を使用して認証/承認を完了できます。 |
| is_pop_supported |
このクライアントが所有証明アクセス トークンをサポートしている場合は True を返します。 |
| remove_account |
サインアウトしてトークン キャッシュから忘れる |
acquire_token_by_auth_code_flow
リダイレクトされる認証応答を検証し、トークンを取得します。
nonce 保護が自動的に提供されます。
acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
auth_code_flow
必須
|
initiate_auth_code_flowによって返される同じディクテーション。 |
|
auth_response
必須
|
認証サーバーから受信したクエリ文字列のディクテーション。 |
|
scopes
|
保護された API (リソース) へのアクセスを要求されたスコープ。 ほとんどの場合、空のままにしておくことができます。 複数のリソースに対してユーザーの同意を要求した場合は、ここで、 initiate_auth_code_flowで必要なもののサブセットを指定する必要があります。 OAuth2 は、主にシングルトン サービス用に設計されています。トークンは常に同じリソース用であり、変更はスコープ内にあります。 Microsoft Entraでは、複数のサード パーティ リソースに対してトークンを発行できます。 複数のリソースの承認コードを要求できますが、トークンを使用すると、トークンは対象ユーザーと呼ばれる 1 人の受信者に対してのみ使用されます。 そのため、開発者は、対応する対象ユーザーに対して発行されるトークンを制限できるようにスコープを指定する必要があります。 規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
acquire_token_by_authorization_code
承認コード付与の後半。
acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
code
必須
|
承認サーバーから返される承認コード。 |
|
scopes
必須
|
(必須)保護された API (リソース) へのアクセスを要求されたスコープ。 複数のリソースに対してユーザーの同意を要求した場合、ここでは通常、AuthCode で必要なもののサブセットを指定します。 OAuth2 は、主にシングルトン サービス用に設計されています。トークンは常に同じリソース用であり、変更はスコープ内にあります。 Microsoft Entraでは、複数のサード パーティ リソースに対してトークンを発行できます。 複数のリソースの承認コードを要求できますが、トークンを使用すると、トークンは対象ユーザーと呼ばれる 1 人の受信者に対してのみ使用されます。 そのため、開発者は、対応する対象ユーザーに対して発行されるトークンを制限できるようにスコープを指定する必要があります。 |
|
nonce
|
get_authorization_request_urlを呼び出すときに nonce を指定した場合は、ここでも同じ nonce を指定して検証する必要があります。 id トークン内の nonce が一致しない場合、例外が発生します。 規定値: None
|
|
claims_challenge
|
claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求のリストを含む JSON オブジェクトの文字列です。 規定値: None
|
|
redirect_uri
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
Microsoft Entraからの json 応答を表すディクテーション:
|
acquire_token_by_refresh_token
他の場所から取得した更新トークン (RT) に基づいてトークンを取得します。
この方法は、他の場所から古い RP があり、MSAL に移行する場合にのみ使用します。 このメソッドを呼び出すと、新しいトークンが自動的に MSAL に格納されます。
MSAL を既に使用している場合は、このメソッドを使用する必要はありません。 MSAL は RT をトークン キャッシュ内に自動的に保持し、 acquire_token_silentを呼び出すとアクセス トークンを取得できます。
acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
refresh_token
必須
|
文字列としての古い更新トークン。 |
|
scopes
必須
|
スコープは、この古い RT に関連付けられます。 各スコープは、Microsoft ID プラットフォーム (v2) 形式である必要があります。 リソースではなくスコープを参照してください。 |
返品
| 型 | 説明 |
|---|---|
|
acquire_token_by_username_password
ユーザー資格情報を使用して、特定のリソースのトークンを取得します。
ユーザー名パスワード フローの制約については、このページを参照してください。 https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication
[非推奨]この API はパブリック クライアント フローでは非推奨となり、今後のリリースで削除される予定です。 代わりに、より安全なフローを使用してください。 移行ガイド: https://aka.ms/msal-ropc-migration
acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
username
必須
|
通常、電子メール アドレスの形式の UPN。 |
|
password
必須
|
パスワード。 |
|
scopes
必須
|
保護された API (リソース) へのアクセスを要求されたスコープ。 |
|
claims_challenge
|
claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求の一覧を含む JSON オブジェクトの文字列です。 規定値: None
|
|
auth_scheme
|
MSAL が所有証明 (POP) トークンを取得できるように、 バージョン 1.26.0 の新機能。 規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
Microsoft Entraからの json 応答を表すディクテーション:
|
acquire_token_silent
ユーザーの操作なしで、特定のアカウントのアクセス トークンを取得します。
acquire_token_silent_with_errorと同じパラメーターがあります。 違いは、戻り値の動作です。 このメソッドは、空のキャッシュと更新エラーを 1 つの戻り値 None に結合します。 アプリがトークン キャッシュの検索中に正確なトークン更新エラーを気にしない場合は、この方法が簡単で推奨されます。
acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
scopes
必須
|
|
|
account
必須
|
|
|
authority
|
規定値: None
|
|
force_refresh
|
規定値: False
|
|
claims_challenge
|
規定値: None
|
|
auth_scheme
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
acquire_token_silent_with_error
ユーザーの操作なしで、特定のアカウントのアクセス トークンを取得します。
キャッシュから有効なアクセス トークンを見つけるか、キャッシュから有効な更新トークンを見つけて、それを自動的に使用して新しいアクセス トークンを引き換えることで行われます。
このメソッドは、キャッシュ空とトークン更新エラーを区別します。 アプリでトークン キャッシュの検索中に正確なトークン更新エラーが発生する場合は、このメソッドが適しています。 それ以外の場合は、他の方法 acquire_token_silent することをお勧めします。
acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
scopes
必須
|
(必須)保護された API (リソース) へのアクセスを要求されたスコープ。 |
|
account
必須
|
(必須) get_accountsによって返されるアカウント オブジェクトの 1 つ。
MSAL Python 1.23 以降では、 |
|
force_refresh
|
True の場合、アクセス トークンの検索はスキップされ、更新トークンを検索して新しいアクセス トークンを取得しようとします。 規定値: False
|
|
claims_challenge
|
claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求の一覧を含む JSON オブジェクトの文字列です。 規定値: None
|
|
auth_scheme
|
MSAL が所有証明 (POP) トークンを取得できるように、 バージョン 1.26.0 の新機能。 規定値: None
|
|
authority
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
get_accounts
以前にサインインしたアカウント 、つまりキャッシュに存在するアカウントの一覧を取得します。
後でアカウントを acquire_token_silent で使用してトークンを検索できます。
get_accounts(username=None)
パラメーター
| 名前 | 説明 |
|---|---|
|
username
|
このユーザー名のみを使用してアカウントをフィルター処理します。 大文字と小文字は区別されません。 規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
アカウント オブジェクトの一覧。 各アカウントはディクテーションです。 ここでは、その "username" フィールドのみを文書化します。 アプリでは、これらの情報をエンド ユーザーに表示し、ユーザーが自分のアカウントの 1 つを選択して続行できるようにすることができます。 |
get_authorization_request_url
承認コード付与を開始するための URL を作成します。
get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)
パラメーター
| 名前 | 説明 |
|---|---|
|
scopes
必須
|
(必須)保護された API (リソース) へのアクセスを要求されたスコープ。 |
|
state
|
CSRF 保護のために OAuth2 によって推奨されます。 規定値: None
|
|
login_hint
|
ユーザーの識別子。 通常はユーザー プリンシパル名 (UPN) です。 規定値: None
|
|
redirect_uri
|
機関からの応答を受信したときに戻るアドレス。 規定値: None
|
|
response_type
|
OAuth2 承認コード付与の既定値は "code" です。 "id_token" や "token" などの他のコンテンツを使用することもできます。これにより暗黙的な許可がトリガーされますが、 これは推奨されません。 規定値: code
|
|
prompt
|
既定では、プロンプト値は送信されず、文字列 規定値: None
|
|
nonce
|
リプレイ攻撃を軽減するために使用される暗号的にランダムな値。 OIDC の仕様も参照してください。 規定値: None
|
|
domain_hint
|
"コンシューマー" または "組織" のいずれか、またはテナント ドメイン "contoso.com" のいずれかです。 含まれている場合、ユーザーがサインイン ページで実行する電子メール ベースの検出プロセスがスキップされ、ユーザー エクスペリエンスが少し簡素化されます。 認証コード フローのドキュメントとdomain_hintドキュメントで使用可能な値の詳細を確認します。 規定値: None
|
|
claims_challenge
|
claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求の一覧を含む JSON オブジェクトの文字列です。 規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
文字列としての承認 URL。 |
initiate_auth_code_flow
認証コード フローを開始します。
後で応答がredirect_uriに達したら、 acquire_token_by_auth_code_flow を使用して認証/承認を完了できます。
initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)
パラメーター
| 名前 | 説明 |
|---|---|
|
scopes
必須
|
大文字と小文字を区別する文字列の一覧です。 |
|
redirect_uri
|
オプション。 指定しない場合、サーバーは事前登録されたサーバーを使用します。 規定値: None
|
|
state
|
要求とコールバックの間の状態を維持するためにクライアントによって使用される不透明な値。 存在しない場合、このライブラリは内部的に自動的に生成されます。 規定値: None
|
|
prompt
|
既定では、プロンプト値は送信されず、文字列 規定値: None
|
|
login_hint
|
オプション。 ユーザーの識別子。 通常はユーザー プリンシパル名 (UPN) です。 規定値: None
|
|
domain_hint
|
"コンシューマー" または "組織" のいずれか、またはテナント ドメイン "contoso.com" のいずれかです。 含まれている場合、ユーザーがサインイン ページを通過する電子メール ベースの検出プロセスがスキップされ、ユーザー エクスペリエンスが少し簡素化されます。 認証コード フローのドキュメントとdomain_hintドキュメントで使用可能な値の詳細を確認します。 規定値: None
|
|
max_age
|
省略可能。 最大認証期間。 End-User がアクティブに認証された最後の時刻から許容される経過時間を秒単位で指定します。 経過時間がこの値を超える場合、Microsoft ID プラットフォームはエンド ユーザーをアクティブに再認証します。 MSAL Pythonでは、ID トークン内のauth_timeも自動的に検証されます。 バージョン 1.15 の新機能。 規定値: None
|
|
response_mode
|
省略可能。 応答パラメーターを返すメソッドを指定します。
既定値は Note クエリ応答ではなく、form_post応答を受け入れるように Web フレームワークを構成する必要があります。 このパラメーターは引き続き機能しますが、今後のバージョンでは削除される予定です。 クエリ ベースの応答モードの使用は安全性が低く、避ける必要があります。 規定値: None
|
|
claims_challenge
|
規定値: None
|
返品
| 型 | 説明 |
|---|---|
|
認証コード フロー。 これは次の形式のディクテーションです。
呼び出し元は次の操作を行う必要があります。
|
is_pop_supported
このクライアントが所有証明アクセス トークンをサポートしている場合は True を返します。
is_pop_supported()
remove_account
サインアウトしてトークン キャッシュから忘れる
remove_account(account)
パラメーター
| 名前 | 説明 |
|---|---|
|
account
必須
|
|
属性
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'
ACQUIRE_TOKEN_BY_REFRESH_TOKEN
ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'
ACQUIRE_TOKEN_FOR_CLIENT_ID
ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'
ACQUIRE_TOKEN_INTERACTIVE
ACQUIRE_TOKEN_INTERACTIVE = '169'
ACQUIRE_TOKEN_ON_BEHALF_OF_ID
ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'
ACQUIRE_TOKEN_SILENT_ID
ACQUIRE_TOKEN_SILENT_ID = '84'
ATTEMPT_REGION_DISCOVERY
ATTEMPT_REGION_DISCOVERY = True
DISABLE_MSAL_FORCE_REGION
DISABLE_MSAL_FORCE_REGION = False
GET_ACCOUNTS_ID
GET_ACCOUNTS_ID = '902'
REMOVE_ACCOUNT_ID
REMOVE_ACCOUNT_ID = '903'