macOS での認証ブローカーでの MSAL Pythonの使用

Note

macOS 認証ブローカーのサポートは、 msal バージョン 1.31.0 で導入されています。

macOS で認証ブローカーを使用すると、ユーザーがアプリケーションからMicrosoft Entra IDを使用して認証する方法を簡略化したり、Microsoft Entra ID更新トークンを流出や誤用から保護する将来の機能を利用したりできます。

認証ブローカーは macOS にはプレインストールされませんが、Microsoftによって開発されたアプリケーション (ポータル サイト など) です。 これらのアプリケーションは、通常、macOS コンピューターが、Microsoft Intuneなどのエンドポイント管理ソリューションを介して会社のデバイスフリートに登録されている場合にインストールされます。 Microsoft Identity Platform を使用して設定された Apple デバイスの詳細については、Apple デバイス用の Microsoft Enterprise SSO プラグインを参照してください。

使用方法

ブローカーを使用するには、PyPI のコア MSAL に加えて、ブローカー関連のパッケージをインストールする必要があります。

pip install msal[broker]>=1.31,<2

Important

ブローカー関連のパッケージがインストールされておらず、認証ブローカーを使用しようとすると、 ImportError: You need to install dependency by: pip install "msal[broker]>=1.31,<2"というエラーが表示されます。

通常、macOS では、パブリック クライアント Python アプリケーションはシステム ブラウザーを介してトークンを取得します。 代わりに macOS システムにインストールされている認証ブローカーを使用するには、 PublicClientApplication コンストラクターに追加の引数を渡す必要があります。 enable_broker_on_mac

from msal import PublicClientApplication
 
app = PublicClientApplication(
    "CLIENT_ID",
    authority="https://login.microsoftonline.com/common",
    enable_broker_on_mac =True)

Important

クロスプラットフォーム アプリケーションを作成する場合は、「enable_broker_on_windows」の記事で説明されているように、も使用する必要があります。

コンストラクターの変更に加えて、アプリケーションではブローカー固有のリダイレクト URI をサポートする必要があります。 署名されていないアプリケーションの場合、URI は次のようになります。

msauth.com.msauth.unsignedapp://auth 

署名されたアプリケーションの場合、リダイレクト URI は次のようになります。

msauth.BUNDLE_ID://auth

Entra ポータル内のアプリ構成でリダイレクト URI が正しく設定されていない場合は、次のようなエラーが表示されます。

Error detected... 
tag=508170375
context=AADSTS50011 Description: (pii), Domain: MSAIMSIDOAuthErrorDomain.Error was thrown in location: Broker 
errorCode=-51411 
status=Response_Status.Status_Unexpected 

構成したら、 acquire_token_interactive を呼び出してトークンを取得できます。

result = app.acquire_token_interactive(["User.ReadBasic.All"],
                    parent_window_handle=app.CONSOLE_WINDOW_HANDLE)

Note

macOS では使用されていない場合でも、 parent_window_handle パラメーターが必要です。 GUI アプリケーションの場合、ログイン プロンプトの場所はアドホックで決定され、現在は特定のウィンドウにバインドできません。 今後の更新では、このパラメーターを使用して 実際 の親ウィンドウが決定されます。

トークンのキャッシュ

認証ブローカーは、更新とアクセス トークンのキャッシュを処理します。 カスタム キャッシュを設定する必要はありません。

サポートされている macOS のバージョンとアーキテクチャ

macOS ブローカーでは、次の構成がサポートされています。

コンポーネント サポートされているバージョン
Architecture ARM64 (Apple Silicon) と x64 (Intel)
macOS バージョン macOS 10.15 (Catalina) 以降

Tip

最新のセキュリティ機能とブローカー機能との互換性を確保するために、最新の macOS バージョンに更新することをお勧めします。