PublicClientApplication クラス

<xref:ClientApplication.__init__>と同じですが、パラメーターclient_credentialNone残る点が異なります。

Note

ブローカーとは何か、なぜそれを使用するのですか?

ブローカーは、デバイスにインストールされているコンポーネントです。

ブローカーは、デバイスに ID を暗黙的に付与します。 ブローカーを使用して、

デバイスが MFA (多要素認証) を満たすことができる要素になります。

この要素は必須になります

テナントの管理者が対応する条件付きアクセス (CA) ポリシーを有効にする場合は >。

ブローカーのプレゼンスにより、Microsoft ID プラットフォーム

トークンがデバイスに発行されているという信頼度を高めるために、

より安全です。

ブローカーの追加の利点は、

お使いのデバイスの OS で有効期間が長いプロセスとして実行されます。

独自のキャッシュを保持します。

ブローカー対応アプリ (CLI でも)

は、以前に確立されたサインイン セッションから自動的に SSO を実行できます。

ブローカーの使用をオプトインする方法

次のオプトイン パラメーターの任意の組み合わせを true に設定できます。

オプトイン フラグ

アプリが実行される場合

アプリでこれをデスクトップ プラットフォームリダイレクト URI として登録Azure portal

enable_broker_on_windows

Windows 10+

ms-appx-web://Microsoft。Aad。BrokerPlugin/your_client_id

enable_broker_on_wsl

WSL

ms-appx-web://Microsoft。Aad。BrokerPlugin/your_client_id

enable_broker_on_mac

ポータル サイトがインストールされている Mac

msauth.com.msauth.unsignedapp://auth

enable_broker_on_linux

Intune がインストールされている Linux

https://login.microsoftonline.com/common/oauth2/nativeclient (有効にする必要があります)

ブローカーの依存関係をインストールする

例: pip install msal[broker]>=1.33,<2.

acquire_token_interactive() と acquire_token_silent() を使用してテストします。

MSAL Pythonのブローカー サポートのフォールバック動作

MSAL はエラーアウトするか、非ブローカー フローにサイレント フォールバックします。

MSAL はenable_broker_を無視します...およびバイパス ブローカー

ブローカーでサポートされていないことがわかっている認証フローに対して行われます。

これには、ADFS、B2C などが含まれます。

その他の "could-use-broker" シナリオについては、以下を参照してください。

アプリ開発者がブローカーを使用することをオプトインしたときに MSAL エラーが発生する

ただし、直接依存関係 "中間層" パッケージはインストールされていません。

エラー メッセージは、アプリ開発者が正しい依存関係を宣言するようにガイドします

msal[broker].

エラーはアプリ開発者に対して実行可能であるため、ここでエラーが発生します。

MSAL は自動的にブローカーを "非アクティブ化" し、非ブローカーにフォールバックします。

オプトインすると、依存関係がインストールされたが初期化に失敗しました。

これは、OS が古すぎるデバイスで発生する可能性があります

または、基になるブローカー コンポーネントが何らかの理由で使用できません。

アプリ開発者やエンド ユーザーがここでできることはあまりありません。

最終的に、条件付きアクセス ポリシーは

ユーザーに別のデバイスへの切り替えを強制します。

ブローカーのオプトイン、インストール、初期化時に MSAL エラーが発生する

ただし、後続のトークン要求は失敗しました。

コンストラクター

PublicClientApplication(client_id, client_credential=None, *, enable_broker_on_windows=None, enable_broker_on_mac=None, enable_broker_on_linux=None, enable_broker_on_wsl=None, **kwargs)

パラメーター

名前 説明
enable_broker_on_windows
必須
<xref:boolean>

この設定は、アプリが Windows 10 以降で実行されている場合にのみ有効です。 このパラメーターの既定値は None です。つまり、MSAL はブローカーを使用しません。

MSAL Python 1.25.0 の新機能。

enable_broker_on_mac
必須
<xref:boolean>

この設定は、アプリが Mac で実行されている場合にのみ有効です。 このパラメーターの既定値は None です。つまり、MSAL はブローカーを使用しません。

MSAL Python 1.31.0 の新機能。

enable_broker_on_linux
必須
<xref:boolean>

この設定は、アプリが WSL を含む Linux で実行されている場合にのみ有効です。 このパラメーターの既定値は None です。つまり、MSAL はブローカーを使用しません。

MSAL Python 1.33.0 の新機能。

enable_broker_on_wsl
必須
<xref:boolean>

この設定は、アプリが WSL で実行されている場合にのみ有効です。 このパラメーターの既定値は None です。つまり、MSAL はブローカーを使用しません。

MSAL Python 1.33.0 の新機能。

client_id
必須
client_credential
規定値: None

キーワードのみのパラメーター

名前 説明
enable_broker_on_windows
規定値: None
enable_broker_on_mac
規定値: None
enable_broker_on_linux
規定値: None
enable_broker_on_wsl
規定値: None

メソッド

acquire_token_by_device_flow

カスタマイズ可能なポーリング効果を使用して、デバイス フロー オブジェクトによってトークンを取得します。

acquire_token_interactive

ローカル ブラウザーを使用して、対話形式でトークンを取得します。

前提条件: Azure portalで、"モバイルおよびデスクトップ アプリケーション" のリダイレクト URI をhttp://localhostとして構成します。 PublicClientApplicationの作成時にブローカーを使用することを選択した場合、アプリには次のリダイレクト URI も必要です。ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

initiate_device_flow

acquire_token_by_device_flowで使用される Device Flow インスタンスを開始します。

acquire_token_by_device_flow

カスタマイズ可能なポーリング効果を使用して、デバイス フロー オブジェクトによってトークンを取得します。

acquire_token_by_device_flow(flow, claims_challenge=None, **kwargs)

パラメーター

名前 説明
flow
必須

以前に initiate_device_flowによって生成されたディクテーション。 既定では、このメソッドのポーリング効果は現在のスレッドをブロックします。 フローの "expires_at" キーの値を 0 に変更することで、ポーリング ループはいつでも中止できます。

claims_challenge

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

規定値: None

返品

説明

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

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

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

acquire_token_interactive

ローカル ブラウザーを使用して、対話形式でトークンを取得します。

前提条件: Azure portalで、"モバイルおよびデスクトップ アプリケーション" のリダイレクト URI をhttp://localhostとして構成します。 PublicClientApplicationの作成時にブローカーを使用することを選択した場合、アプリには次のリダイレクト URI も必要です。ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

acquire_token_interactive(scopes, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, timeout=None, port=None, extra_scopes_to_consent=None, max_age=None, parent_window_handle=None, on_before_launching_ui=None, auth_scheme=None, **kwargs)

パラメーター

名前 説明
scopes
必須

大文字と小文字を区別する文字列の一覧です。

prompt
str

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

規定値: None
login_hint
str

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

規定値: None
domain_hint

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

規定値: None
claims_challenge

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

規定値: None
timeout
int

このメソッドは、現在のスレッドをブロックします。 このパラメーターは、タイムアウト値を秒単位で指定します。 既定値 None は、無期限に待機を意味します。

規定値: None
port
int

受信認証応答をリッスンするために使用されるポート。 既定では、システム割り当てポートを使用します。 (残りのredirect_uriは、 http://localhostとしてハード コーディングされています)。

規定値: None
extra_scopes_to_consent

"同意する追加のスコープ" は、Microsoft Entraでのみ使用できる概念です。 これは、同じ操作で同意を求める他のリソースを指しますが、この特定の操作ではトークンを取得しません。

規定値: None
max_age
int

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

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

バージョン 1.15 の新機能。

規定値: None
parent_window_handle
int

省略可能。

  • アプリがブローカーの使用をオプトインしていない場合は、ここで parent_window_handle を提供する必要はありません。

  • アプリでブローカーの使用をオプトインする場合は、 parent_window_handle が必要です。

    • アプリがWindowsまたは Mac システムで実行されている GUI アプリの場合は、ウィンドウの上にサインイン ウィンドウがポップアップ表示されるように、そのウィンドウ ハンドルも指定する必要があります。

    • アプリが Windows または Mac システムで実行されているコンソール アプリの場合は、プレースホルダー PublicClientApplication.CONSOLE_WINDOW_HANDLEを使用できます。

ほとんどのPythonスクリプトはコンソール アプリです。

バージョン 1.20.0 の新機能。

規定値: None
on_before_launching_ui
<xref:function>

lambda ui="xyz", **kwargs: print("A {} will be launched".format(ui))形式のコールバック。ここで、uiは "browser" または "broker" になります。 これを使用して、ポップアップ ウィンドウを期待するようにエンド ユーザーに通知できます。

バージョン 1.20.0 の新機能。

規定値: None
auth_scheme

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

バージョン 1.26.0 の新機能。

規定値: None

返品

説明
  • "エラー" キーを含まないディクテーションで、通常は "access_token" キーが含まれています。

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

initiate_device_flow

acquire_token_by_device_flowで使用される Device Flow インスタンスを開始します。

initiate_device_flow(scopes=None, *, claims_challenge=None, **kwargs)

パラメーター

名前 説明
scopes

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

規定値: None

キーワードのみのパラメーター

名前 説明
claims_challenge
規定値: None

返品

説明

新しく作成された Device Flow オブジェクトを表すディクテーション。

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

  • エラー応答には、他の読み取り可能なキーと値のペアが含まれます。

属性

CONSOLE_WINDOW_HANDLE

CONSOLE_WINDOW_HANDLE = <object object>

DEVICE_FLOW_CORRELATION_ID

DEVICE_FLOW_CORRELATION_ID = '_correlation_id'