国内クラウド環境で MSAL を使用する
[アーティクル] 10/25/2023
18 人の共同作成者
フィードバック
この記事の内容
ソブリン クラウドとも呼ばれる国内クラウド は、物理的に分離された Azure インスタンスです。 Azure のこれらのリージョンは、データの保存場所、主権、およびコンプライアンス要件を地理的な境界内で確実に守るために役立ちます。
Microsoft の世界的なクラウドに加え、Microsoft Authentication Library (MSAL) では、国内クラウドのアプリケーション開発者が、セキュリティで保護された Web API を認証して呼び出すためのトークンを取得できます。 これらの Web API には、Microsoft Graph またはその他の Microsoft API が可能です。
グローバル Azure クラウドを含め、Microsoft Entra ID は次の各国のクラウドにデプロイされています。
このガイドでは、Azure Government クラウド 環境で、職場および学校アカウントにサインインし、アクセス トークンを取得し、Microsoft Graph API を呼び出す方法を示します。
Azure Germany (Microsoft Cloud Deutschland)
警告
Azure Germany (Microsoft Cloud Deutschland) は 2021 年 10 月 29 日に終了します 。 その日より前にグローバル Azure のリージョンに移行 "しない " サービスとアプリケーションにはアクセスできなくなります。
アプリケーションを Azure Germany から移行していない場合は、Azure Germany からの移行に関する Microsoft Entra の情報 に関するページに従って行うようにしてください。
前提条件
開始する前に、次の前提条件を満たしていることを確認します。
適切な ID を選択する
Azure Government アプリケーションでは、ユーザーの認証に Microsoft Entra Government ID と Microsoft Entra Public ID を使うことができます。 これらの ID のどちらも使用できるため、自分のシナリオにどの機関のエンドポイントを選択すべきかを決定します。
Microsoft Entra Public: 組織が Microsoft 365 (Public または GCC) または別のアプリケーションをサポートする Microsoft Entra Public テナントを既に持っている場合によく使用されます。
Microsoft Entra Government: 組織が Office 365 (GCC High または DoD) をサポートする Microsoft Entra Government テナントを既に持っている場合、または Microsoft Entra Government で新しいテナントを作成する場合によく使用されます。
決定したら、特別な考慮事項は、アプリの登録をどこで実行するかです。 Azure Government アプリケーションで Microsoft Entra Public ID を選択した場合は、Microsoft Entra Public テナントにそのアプリケーションを登録する必要があります。
Azure Government サブスクリプションを取得する
Azure Government サブスクリプションを取得するには、「Managing and connecting to your subscription in Azure Government (Azure Government でのサブスクリプションの管理と接続) 」を参照してください。
Azure Government サブスクリプションをお持ちでない場合は、開始する前に無料アカウント を作成してください。
特定のプログラミング言語で国内クラウドを使用する方法の詳細については、お使いの言語に一致するタブを選択してください。
MSAL.NET を使用して、国内クラウドへのユーザーのサインインを実行し、トークンを取得し、Microsoft Graph API を呼び出すことができます。
次のチュートリアルでは、ASP.NET Core Web アプリをビルドする方法を示します。 このアプリでは、OpenID Connect を使用して、国内クラウドに属する組織のユーザーの職場および学校アカウントでのサインインを実行します。
ソブリン クラウド用の MSAL.js アプリケーションを有効にするには、次のようにします。
機関の例は次のとおりです。
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
次に示すのは、Microsoft Graph エンドポイントとスコープの例です。
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
ソブリン クラウドでユーザーを認証し、Microsoft Graph を呼び出すための最小限のコードは次のようになります。
const msalConfig = {
auth: {
clientId: "Enter_the_Application_Id_Here",
authority: "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here",
redirectUri: "/",
}
};
// Initialize MSAL
const msalObj = new PublicClientApplication(msalConfig);
// Get token using popup experience
try {
const graphToken = await msalObj.acquireTokenPopup({
scopes: ["User.Read"]
});
} catch(error) {
console.log(error)
}
// Call the Graph API
const headers = new Headers();
const bearer = `Bearer ${graphToken}`;
headers.append("Authorization", bearer);
fetch("https://graph.microsoft.us/v1.0/me", {
method: "GET",
headers: headers
})
ソブリン クラウド用の MSAL Python アプリケーションを有効にするには、次のようにします。
クラウドに応じて、特定のポータルでアプリケーションを登録します。 ポータルの選択方法の詳細については「アプリ登録エンドポイント 」を参照してください
リポジトリにあるサンプル のいずれかを、クラウドに応じて構成にいくつかの変更を加えて使用します (次で説明します)。
アプリケーションを登録したクラウドに応じて、特定の機関を使用します。 さまざまなクラウド用の機関の詳細については、「Microsoft Entra の認証エンドポイント 」を参照してください。
機関の例は次のとおりです。
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
Microsoft Graph API を呼び出すには、使用しているクラウドに固有のエンドポイント URL が必要です。 すべての国内クラウド用の Microsoft Graph エンドポイントを見つけるには、「Microsoft Graph および Graph エクスプローラー サービスのルート エンドポイント 」を参照してください。
次に示すのは、Microsoft Graph エンドポイントとスコープの例です。
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
ソブリン クラウド用の MSAL for Java アプリケーションを有効にするには、次のようにします。
クラウドに応じて、特定のポータルでアプリケーションを登録します。 ポータルの選択方法の詳細については「アプリ登録エンドポイント 」を参照してください
リポジトリにあるサンプル のいずれかを、クラウドに応じて構成にいくつかの変更を加えて使用します (次で説明します)。
アプリケーションを登録したクラウドに応じて、特定の機関を使用します。 さまざまなクラウド用の機関の詳細については、「Microsoft Entra の認証エンドポイント 」を参照してください。
機関の例は次のとおりです。
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
次に示すのは、Graph エンドポイントとスコープの例です。
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
iOS および macOS 用の MSAL は、各国のクラウドでトークンを取得するために使用できますが、MSALPublicClientApplication
を作成する場合は追加の構成が必要です。
たとえば、お使いのアプリケーションを国内クラウド (ここでは米国政府) のマルチテナント アプリケーションにする場合、次のように記述できます。
MSALAADAuthority *aadAuthority =
[[MSALAADAuthority alloc] initWithCloudInstance:MSALAzureUsGovernmentCloudInstance
audienceType:MSALAzureADMultipleOrgsAudience
rawTenant:nil
error:nil];
MSALPublicClientApplicationConfig *config =
[[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"
redirectUri:@"<your-redirect-uri-here>"
authority:aadAuthority];
NSError *applicationError = nil;
MSALPublicClientApplication *application =
[[MSALPublicClientApplication alloc] initWithConfiguration:config error:&applicationError];
iOS および macOS 用の MSAL は、各国のクラウドでトークンを取得するために使用できますが、MSALPublicClientApplication
を作成する場合は追加の構成が必要です。
たとえば、お使いのアプリケーションを国内クラウド (ここでは米国政府) のマルチテナント アプリケーションにする場合、次のように記述できます。
let authority = try? MSALAADAuthority(cloudInstance: .usGovernmentCloudInstance, audienceType: .azureADMultipleOrgsAudience, rawTenant: nil)
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>", redirectUri: "<your-redirect-uri-here>", authority: authority)
if let application = try? MSALPublicClientApplication(configuration: config) { /* Use application */}
次のステップ
各クラウドの Azure portal の URL とトークン エンドポイントの一覧については、国内クラウドの認証エンドポイント に関する記事を参照してください。
国内クラウドのドキュメント: