デスクトップまたはモバイル アプリケーションがWindows上で実行され、Windows ドメインに接続されているコンピューター (Active Directoryまたは参加Microsoft Entra) で実行されている場合は、統合Windows認証 (IWA) を使用してトークンをサイレントで取得できます。 アプリケーションを使用するときに UI は必要ありません。
final String AUTHORITY;
final String APP_ID;
String userName;
List<String> scopes;
PublicClientApplication app = PublicClientApplication.builder(APP_ID)
.authority(AUTHORITY)
.build();
IntegratedWindowsAuthenticationParameters parameters =
IntegratedWindowsAuthenticationParameters.builder(scope, userName).build();
IAuthenticationResult future = app.acquireToken(parameters).get();
制約
- フェデレーション* ユーザーのみ。つまり、認証がオンプレミス機関 (ADFS など) にフェデレーションされている場合、またはシームレス SSO が有効になっている ハイブリッド シナリオ 。 ユーザーがMicrosoft Entra IDに直接存在する純粋なクラウド テナントでは、Active Directoryバッキングなしでは、このフローを使用できません。
- IWA は MFA (多要素認証) をバイパスしません。 MFA が構成されている状況では、MFA チャレンジが必要な場合に IWA が失敗する可能性があります。これは、MFA でユーザーの操作が必要になるためです。
これは難しいです。 IWA は非対話型ですが、2FA にはユーザーの対話機能が必要です。 ID プロバイダーが 2FA の実行を要求するタイミングは制御しません。テナント管理者は実行します。 私たちの観察から、2FAは、あなたが別の国/地域からログインするとき、VPN経由で企業ネットワークに接続されていない場合、時にはVPN経由で接続されている場合でも必要です。 決定論的な一連のルールを想定しないでください。Microsoft Entra IDは AI を使用して、2FA が必要かどうかを継続的に学習します。 IWA が失敗した場合は、ユーザー プロンプトにフォールバックする必要があります
PublicApplicationで渡される権限は、次のようにする必要があります。- テナント指定(
https://login.microsoftonline.com/{tenant}/の形式。ここで、tenantはテナント ID を表す GUID、またはテナントに関連付けられたドメインのいずれかです。) - 任意の職場および学校アカウントの場合 (
https://login.microsoftonline.com/organizations/)
Microsoft の個人用アカウントはサポート対象外です(/common または /consumers テナントは使用できません)
- テナント指定(
統合Windows認証はサイレント フローであるため、
- アプリケーションのユーザーは、アプリケーションの使用に以前に同意している必要があります
- または、テナント管理者が、アプリケーションを使用するためにテナント内のすべてのユーザーに以前に同意している必要があります。
- これは、次のことを意味します。
- 開発者が自分用に Azure portal 上の [許可] ボタンをクリックしておきます。
- または、テナント管理者が、アプリケーションの登録の [API アクセス許可] タブにある {tenant domain} に対する管理者の同意の付与/取り消しボタンを押しました
- または、ユーザーがアプリケーションに同意する方法を提供している
- または、テナント管理者がアプリケーションに同意する方法を提供している