ClientApplication クラス

通常、このクラスは直接使用しません。 代わりに、サブクラス ( PublicClientApplicationConfidentialClientApplication) を使用してください。

アプリケーションのインスタンスを作成します。

コンストラクター

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
必須
str

アプリをMicrosoft Entra 管理センターに登録した後、アプリにclient_idがあります。

client_credential

PublicClientApplicationでは、ここでは None を使用します。

ConfidentialClientApplicationでは、さまざまなシナリオでさまざまな入力形式がサポートされます。

クライアント シークレットの使用をサポートします。 "your client secret"などの文字列をフィードするだけです。

SHA-1 拇印を使用するため、X.509 (.pem) 形式の証明書の使用をサポートします。

SHA-1 拇印のみをサポートする ADFS をまだ使用している場合を除きます。 このページの後半で説明する .pfx オプションを使用してください。次の形式のディクトでフィードします。


   {
       "private_key": "...-----BEGIN PRIVATE KEY-----... in PEM format",
       "thumbprint": "An SHA-1 thumbprint such as A1B2C3D4E5F6..."
           "Changed in version 1.35.0, if thumbprint is absent"
           "and a public_certificate is present, MSAL will"
           "automatically calculate an SHA-256 thumbprint instead.",
       "passphrase": "Needed if the private_key is encrypted (Added in version 1.6.0)",
       "public_certificate": "...-----BEGIN CERTIFICATE-----...",  # Needed if you use Subject Name/Issuer auth. Added in version 0.5.0.
   }

MSAL Pythonには、PEM 形式の "private_key" が必要です。 証明書が PKCS12 (.pfx) 形式の場合は、openssl pkcs12 -in file.pfx -out file.pem -nodesして X.509 (.pem) 形式に変換できます。拇印は、アプリの登録Azure portalで使用できます。 または、 拇印を計算することもできます。 public_certificate (省略可能) は、'x5c' JWT ヘッダーを介して送信される公開キー証明書です。 これは、証明書のローテーションを容易にする方法である サブジェクト名/発行者認証 を使用する場合に便利です。 仕様ごとに、「JWS のデジタル署名に使用されるキーに対応する公開キーを含む証明書は、最初の証明書でなければなりません。 この後に追加の証明書が続き、後続の各証明書が前の証明書の認定に使用される場合があります。"ただし、証明書の発行者が別の順序を使用する場合があります。 そのため、試行がエラー AADSTS700027 - "指定された署名値が予想される署名値と一致しませんでした" というエラーが発生した場合は、代わりにリーフ証明書 (PEM/str 形式) のみを使用してみてください。

バージョン 1.13.0 で追加された他の場所から取得した生アサーションのサポート:

また、自分で組み立てた完全に署名されたアサーションにすることもできます。 次のように、キー "client_assertion" のみを含むコンテナーを渡すだけです。


   {
       "client_assertion": "...a JWT with claims aud, exp, iss, jti, nbf, and sub..."
   }

PFX ファイルからのクライアント証明書の読み取りをサポートします。この使用法では、証明書の SHA-256 拇印が自動的に使用されます。バージョン 1.29.0 で追加:

PFX ファイルへのパスを含むディクショナリ内のフィード:


   {
       "private_key_pfx_path": "/path/to/your.pfx",  # Added in version 1.29.0
       "public_certificate": True,  # Only needed if you use Subject Name/Issuer auth. Added in version 1.30.0
       "passphrase": "Passphrase if the private_key is encrypted (Optional)",
   }

次のコマンドを実行すると、.keyと .pem ファイルから .pfx ファイルが生成されます。


   openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.pem

サブジェクト名/発行者認証 は、証明書のローテーションを容易にするアプローチです。 .pfx ファイルに秘密キーと公開証明書の両方が含まれている場合は、"public_certificate" を True に設定してサブジェクト名/発行者認証をオプトインできます。

規定値: None
client_claims

バージョン 0.5.0 で追加: この ConfidentialClientApplication の秘密キーによって署名される追加の要求のディクショナリです。 たとえば、{"client_ip": "x.x.x.x"} を使用できます。 次の既定の要求のいずれかをオーバーライドすることもできます。


   {
       "aud": the_token_endpoint,
       "iss": self.client_id,
       "sub": same_as_issuer,
       "exp": now + 10_min,
       "iat": now,
       "jti": a_random_uuid
   }
規定値: None
authority
str

トークン機関を識別する URL。 形式にする必要があります https://login.microsoftonline.com/your_tenant 既定では、次の値を使用します。 https://login.microsoftonline.com/common

バージョン 1.17 で変更: 定義済みの定数と次のようなビルダーを使用することもできます。


   from msal.authority import (
       AuthorityBuilder,
       AZURE_US_GOVERNMENT, AZURE_CHINA, AZURE_PUBLIC)
   my_authority = AuthorityBuilder(AZURE_PUBLIC, "contoso.onmicrosoft.com")
   # Now you get an equivalent of
   # "https://login.microsoftonline.com/contoso.onmicrosoft.com"

   # You can feed such an authority to msal's ClientApplication
   from msal import PublicClientApplication
   app = PublicClientApplication("my_client_id", authority=my_authority, ...)
規定値: 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
str

(省略可能)Entra リージョン トークン サービスを使用するように MSAL に指示します。 このレガシ機能は、ファースト パーティのアプリケーションでのみ使用できます。 acquire_token_for_client() のみがサポートされています。

4 つの値をサポートします。

  1. azure_region=None - この既定値は、リージョンが構成されていないことを意味します。 MSAL では、env var MSAL_FORCE_REGIONで定義されている領域が使用されます。

  2. azure_region="some_region" - 指定した領域が使用されていることを意味します。

  3. azure_region=True - MSAL がリージョンを自動検出することを意味します。 これはお勧めしません。

  4. azure_region=False - MSAL ではリージョンが使用されません。

Note

リージョンの自動検出は、VM とAzure Functionsでテストされています。 信頼性が低い。

このオプションを使用するアプリケーションでは、短いタイムアウトを構成する必要があります。

詳細とリージョン文字列の値については、

見る https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting

バージョン 1.12.0 の新機能。

規定値: None
exclude_scopes

(省略可能)これまで、MSAL は スコープoffline_access ハードコードします。これにより、アプリはユーザーのデータに長時間アクセスできるようになります。 アプリで不要または望ましくない場合は、このパラメーターを使用して、 exclude_scopes = ["offline_access"]などのスコープの除外リストを指定できます。

規定値: None
http_cache

MSAL は長い間、 token_cacheでトークンをキャッシュしてきました。 最近、MSAL では、トークン以外の http 応答の有限量を自動的にキャッシュすることで、http_cacheの概念も導入しました。そのため、一部の状況では、有効期間が長くPublicClientApplicationConfidentialClientApplicationのパフォーマンスが向上し、応答性が向上します。

この http_cache パラメーターは、dict のようなオブジェクトを受け入れます。 指定しない場合、MSAL はインメモリ ディクテーションを使用します。

アプリがコマンド ライン アプリ (CLI) の場合は、異なる CLI の実行間でhttp_cacheを保持する必要があります。 永続化されたファイルの形式は、 不安定なプロトコルが原因で変更される可能性があります。そのため、実装では予期しない読み込みエラーが許容されます。 次のレシピは、これを行う方法を示しています。


   # Just add the following lines at the beginning of your CLI script
   import sys, atexit, pickle, logging
   http_cache_filename = sys.argv[0] + ".http_cache"
   try:
       with open(http_cache_filename, "rb") as f:
           persisted_http_cache = pickle.load(f)  # Take a snapshot
   except (
           FileNotFoundError,  # Or IOError in Python 2
           pickle.UnpicklingError,  # A corrupted http cache file
           AttributeError,  # Cache created by a different version of MSAL
           ):
       persisted_http_cache = {}  # Recover by starting afresh
   except:  # Unexpected exceptions
       logging.exception("You may want to debug this")
       persisted_http_cache = {}  # Recover by starting afresh
   atexit.register(lambda: pickle.dump(
       # When exit, flush it back to the file.
       # It may occasionally overwrite another process's concurrent write,
       # but that is fine. Subsequent runs will reach eventual consistency.
       persisted_http_cache, open(http_cache_file, "wb")))

   # And then you can implement your app as you normally would
   app = msal.PublicClientApplication(
       "your_client_id",
       ...,
       http_cache=persisted_http_cache,  # Utilize persisted_http_cache
       ...,
       #token_cache=...,  # You may combine the old token_cache trick
           # Please refer to token_cache recipe at
           # https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
       )
   app.acquire_token_interactive(["your", "scope"], ...)

http_cache内のコンテンツは入手が安価です。 異なるアプリ間でそれらを共有する必要はありません。

http_cache内のコンテンツには、トークンも個人を特定できる情報 (PII) も含まれません。 暗号化は不要です。

バージョン 1.16.0 の新機能。

規定値: None
instance_discovery
<xref:boolean>

これまで、MSAL は、特に未知の機関を使用する場合に、 https://login.microsoftonline.com にある中央エンドポイントに接続してメタデータを取得していました。 この動作は、インスタンス検出と呼ばれます。

このパラメーターの既定値は None で、インスタンス検出を有効にします。

MSAL が as-isで動作することを許可する一部の機関がわかっている場合は、インスタンスの検出を必要とせずに、次のパターンをお勧めします。


   known_authorities = frozenset([  # Treat your known authorities as const
       "https://contoso.com/adfs", "https://login.azs/foo"])
   ...
   authority = "https://contoso.com/adfs"  # Assuming your app will use this
   app1 = PublicClientApplication(
       "client_id",
       authority=authority,
       # Conditionally disable Instance Discovery for known authorities
       instance_discovery=authority not in known_authorities,
       )

一部の機関を事前に把握していないが、提供する機関を MSAL が引き続き受け入れることを望んでいる場合は、 False を使用してインスタンス検出を無条件に無効にすることができます。

バージョン 1.19.0 の新機能。

規定値: None
allow_broker
<xref:boolean>

Deprecated. 代わりに、enable_broker_on_windows を使用してください。

規定値: None
enable_pii_log
<xref:boolean>

有効にすると、ログに PII (個人を特定できる情報) が含まれる場合があります。 これは、ブローカーの動作のトラブルシューティングに役立ちます。 既定の動作は False です。

バージョン 1.24.0 の新機能。

規定値: None
oidc_authority
str

バージョン 1.28.0 で追加: 形式 https://contoso.com/tenantの OpenID Connect (OIDC) 機関を識別する URL です。 MSAL は、".well-known/openid-configuration" を機関に追加し、そこから OIDC メタデータを取得してエンドポイントを特定します。

注: ブローカーは 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

返品

説明
  • "access_token" や "id_token" を含むディクテーションは、使用されたスコープによって異なります。 ( https://tools.ietf.org/html/rfc6749#section-5.1を参照)

  • "error"、必要に応じて "error_description"、"error_uri" を含むディクテーション。 ( これそれか)

  • ほとんどのクライアント側のデータ エラーでは、ValueError 例外が発生します。 そのため、使用パターンにはプロトコルの詳細が含まれていない可能性があります。

    
       def authorize():  # A controller in a web app
           try:
               result = msal_app.acquire_token_by_auth_code_flow(
                   session.get("flow", {}), request.args)
               if "error" in result:
                   return render_template("error.html", result)
               use(result)  # Token(s) are available in result and cache
           except ValueError:  # Usually caused by CSRF
               pass  # Simply ignore them
           return redirect(url_for("index"))
    

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 応答を表すディクテーション:

  • 成功した応答には、"access_token" キーが含まれます。

  • エラー応答には、"error" と通常は "error_description" が含まれます。

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
必須
str

文字列としての古い更新トークン。

scopes
必須

スコープは、この古い RT に関連付けられます。 各スコープは、Microsoft ID プラットフォーム (v2) 形式である必要があります。 リソースではなくスコープを参照してください。

返品

説明
  • エラーが発生した場合、dict には "error" とその他のキーが含まれます。

  • dict に "エラー" キーが含まれなかった場合は、移行が成功したことを意味します。

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
必須
str

通常、電子メール アドレスの形式の UPN。

password
必須
str

パスワード。

scopes
必須

保護された API (リソース) へのアクセスを要求されたスコープ。

claims_challenge

claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求の一覧を含む JSON オブジェクトの文字列です。

規定値: None
auth_scheme

MSAL が所有証明 (POP) トークンを取得できるように、 msal.auth_scheme.PopAuthScheme オブジェクトを指定できます。

バージョン 1.26.0 の新機能。

規定値: None

返品

説明

Microsoft Entraからの json 応答を表すディクテーション:

  • 成功した応答には、"access_token" キーが含まれます。

  • エラー応答には、"error" と通常は "error_description" が含まれます。

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

返品

説明
  • キャッシュ検索が成功した場合、"エラー" キーを含まないディクテーション。通常は "access_token" キーが含まれます。

  • キャッシュ参照でトークンが生成されない場合は 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 以降では、None入力は NO-OP になり、常にNoneが返されます。

force_refresh

True の場合、アクセス トークンの検索はスキップされ、更新トークンを検索して新しいアクセス トークンを取得しようとします。

規定値: False
claims_challenge

claims_challenge パラメーターは、リソース プロバイダーによって要求された特定の要求を、www-authenticate ヘッダーの claims_challenge ディレクティブの形式で、UserInfo エンドポイントまたは ID トークンまたはアクセス トークンから返されるように要求します。 これは、これらの場所から要求される要求の一覧を含む JSON オブジェクトの文字列です。

規定値: None
auth_scheme

MSAL が所有証明 (POP) トークンを取得できるように、 msal.auth_scheme.PopAuthScheme オブジェクトを指定できます。

バージョン 1.26.0 の新機能。

規定値: None
authority
規定値: None

返品

説明
  • キャッシュ検索が成功した場合、"エラー" キーを含まないディクテーション。通常は "access_token" キーが含まれます。

  • キャッシュにトークンがない場合はなし。

  • トークンの更新に失敗した場合の "エラー" キーを含むディクテーション。

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
str

CSRF 保護のために OAuth2 によって推奨されます。

規定値: None
login_hint
str

ユーザーの識別子。 通常はユーザー プリンシパル名 (UPN) です。

規定値: None
redirect_uri
str

機関からの応答を受信したときに戻るアドレス。

規定値: None
response_type
str

OAuth2 承認コード付与の既定値は "code" です。

"id_token" や "token" などの他のコンテンツを使用することもできます。これにより暗黙的な許可がトリガーされますが、 これは推奨されません

規定値: code
prompt
str

既定では、プロンプト値は送信されず、文字列 "none"も送信されません。 値を明示的に指定する必要があります。 有効な値は、 <xref:msal.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
str

オプション。 指定しない場合、サーバーは事前登録されたサーバーを使用します。

規定値: None
state
str

要求とコールバックの間の状態を維持するためにクライアントによって使用される不透明な値。 存在しない場合、このライブラリは内部的に自動的に生成されます。

規定値: None
prompt
str

既定では、プロンプト値は送信されず、文字列 "none"も送信されません。 値を明示的に指定する必要があります。 有効な値は、 <xref:msal.Prompt>で定義されている定数です。

規定値: None
login_hint
str

オプション。 ユーザーの識別子。 通常はユーザー プリンシパル名 (UPN) です。

規定値: None
domain_hint

"コンシューマー" または "組織" のいずれか、またはテナント ドメイン "contoso.com" のいずれかです。 含まれている場合、ユーザーがサインイン ページを通過する電子メール ベースの検出プロセスがスキップされ、ユーザー エクスペリエンスが少し簡素化されます。 認証コード フローのドキュメントdomain_hintドキュメントで使用可能な値の詳細を確認します。

規定値: None
max_age
int

省略可能。 最大認証期間。 End-User がアクティブに認証された最後の時刻から許容される経過時間を秒単位で指定します。 経過時間がこの値を超える場合、Microsoft ID プラットフォームはエンド ユーザーをアクティブに再認証します。

MSAL Pythonでは、ID トークン内のauth_timeも自動的に検証されます。

バージョン 1.15 の新機能。

規定値: None
response_mode
str

省略可能。 応答パラメーターを返すメソッドを指定します。 既定値はqueryと同じです。MSAL Pythonで十分にセキュリティ保護されていました (MSAL Pythonは、最初にクエリ パラメーターを使用してトークンを転送しないため)。 セキュリティをさらに向上するために、 form_post値を使用することをお勧めします。 "form_post" モードでは、応答パラメーターは、HTTP POST メソッドを介して送信され、アプリケーション/x-www-form-urlencoded 形式を使用して本文でエンコードされる HTML フォーム値としてエンコードされます。 有効な値は、HTTP POST からコールバック URI への "form_post" か、クエリ文字列でエンコードされたパラメーターを含む HTTP GET の場合は "query" (既定値) のいずれかです。 使用可能な値の詳細については、https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModesここのhttps://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

クエリ応答ではなく、form_post応答を受け入れるように Web フレームワークを構成する必要があります。

このパラメーターは引き続き機能しますが、今後のバージョンでは削除される予定です。

クエリ ベースの応答モードの使用は安全性が低く、避ける必要があります。

規定値: None
claims_challenge
規定値: None

返品

説明

認証コード フロー。 これは次の形式のディクテーションです。


   {
       "auth_uri": "https://...",  // Guide user to visit this
       "state": "...",  // You may choose to verify it by yourself,
                        // or just let acquire_token_by_auth_code_flow()
                        // do that for you.
       "...": "...",  // Everything else are reserved and internal
   }

呼び出し元は次の操作を行う必要があります。

  1. 何らかの形でこのコンテンツを保存します。通常は、現在のセッション内で、

  2. エンド ユーザー (つまり、リソース所有者) がそのauth_uriにアクセスするようにガイドします。

  3. 次に、このディクテーションとその後の認証応答を acquire_token_by_auth_code_flowにリレーします。

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'