在國家雲端環境中使用 MSAL
國家雲端也稱為主權雲端,是 Azure 的實體隔離實例。 Azure 的這些區域可協助確保地理界限內遵守數據落地、主權和合規性需求。
除了 Microsoft 全球雲端之外,Microsoft 驗證連結庫 (MSAL) 還可讓國家雲端中的應用程式開發人員取得令牌,以便驗證和呼叫受保護的 Web API。 這些 Web API 可以是 Microsoft Graph 或其他 Microsoft API。
包括全域 Azure 雲端,Microsoft Entra ID 會部署在下列國家/地區雲端中:
本指南示範如何登入公司與學校帳戶、取得存取令牌,以及在 Azure Government 雲端環境中呼叫 Microsoft Graph API。
Azure 德國 (Microsoft Cloud Deutschland)
警告
Azure 德國(Microsoft Cloud Deutschland)將於 2021 年 10 月 29 日關閉。 您選擇 不要 在該日期之前移轉至全域 Azure 中的區域的服務與應用程式將無法存取。
如果您尚未從 Azure 德國移轉應用程式,請遵循 Microsoft Entra 資訊,從 Azure 德國 移轉以開始使用。
必要條件
開始之前,請確定您符合這些必要條件。
選擇適當的身分識別
Azure Government 應用程式可以使用 Microsoft Entra Government 身分識別和 Microsoft Entra 公用身分識別來驗證使用者。 因為您可以使用其中任何一個身分識別,因此決定您應該為案例選擇哪一個授權端點:
- Microsoft Entra Public:如果您的組織已經有 Microsoft Entra Public 租用戶來支援 Microsoft 365(公用或 GCC)或其他應用程式,則通常使用。
- Microsoft Entra Government:如果您的組織已經有 Microsoft Entra Government 租用戶來支援 Office 365(GCC High 或 DoD),或在 Microsoft Entra Government 中建立新租使用者,通常使用。
決定之後,特殊考慮是執行應用程式註冊的位置。 如果您選擇 Azure Government 應用程式的 Microsoft Entra 公用身分識別,您必須在 Microsoft Entra Public 租用戶中註冊應用程式。
取得 Azure Government 訂用帳戶
若要取得 Azure Government 訂用帳戶,請參閱 在 Azure Government 中管理和連線到您的訂用帳戶。
如果您沒有 Azure Government 訂用帳戶,請在開始之前建立 免費帳戶 。
如需搭配特定程式設計語言使用國家雲端的詳細資訊,請選擇符合您語言的索引標籤:
您可以使用 MSAL.NET 來登入使用者、取得令牌,並在國家雲端中呼叫 Microsoft Graph API。
下列教學課程示範如何建置 ASP.NET Core Web 應用程式。 應用程式會使用 OpenID 連線,在屬於國家雲端的組織中使用公司與學校帳戶登入使用者。
若要啟用主權雲端的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 Explorer 服務根端點。
以下是 Microsoft Graph 端點的範例,範圍如下:
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
若要為主權雲端啟用適用於 Java 應用程式的 MSAL:
- 視雲端而定,在特定入口網站中註冊您的應用程式。 如需如何選擇入口網站的詳細資訊,請參閱 應用程式註冊端點
- 視接下來提及的雲端而定,使用存放庫的任何 範例 ,對組態進行一些變更。
- 根據您在 中註冊應用程式的雲端而定,使用特定授權單位。 如需不同雲端授權單位的詳細資訊,請參閱 Microsoft Entra 驗證端點。
以下是範例授權單位:
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
以下是圖形端點的範例,範圍如下:
"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 入口網站 URL 和令牌端點清單,請參閱國家雲端驗證端點。
國家雲端檔: