設定可呼叫 Web API 的行動應用程式
適用於:具有白色複選標記符號的 員工租戶
外部租戶(深入瞭解)
建立應用程式之後,您將瞭解如何使用應用程式註冊參數來設定程式碼。 行動應用程式會帶來一些與建立架構相關的複雜性。
支援行動應用程式的 Microsoft 程式庫
下列 Microsoft 程式庫支援行動應用程式:
平台 | 專案進行中 GitHub |
套件 | 獲取 開始 |
登入使用者 | 存取 Web API | 正式發行 (GA) 或 公開預覽1 |
---|---|---|---|---|---|---|
Android (Java) | MSAL Android | MSAL | 快速入門 |
![]() |
![]() |
GA |
Android (Kotlin) | MSAL Android | MSAL | — |
![]() |
![]() |
GA |
iOS (Swift/Obj-C) | 適用於 iOS 和 macOS 的 MSAL | MSAL | 教學課程 |
![]() |
![]() |
GA |
1在線服務的通用授權條款適用於公開預覽中的圖書館。
具現化應用程式
Android
行動應用程式會使用 PublicClientApplication
類別。 以下是如何將其具現化:
PublicClientApplication sampleApp = new PublicClientApplication(
this.getApplicationContext(),
R.raw.auth_config);
iOS
iOS 上的行動應用程式需要具現化 MSALPublicClientApplication
類別。 若要具現化類別,請使用下列程式碼。
NSError *msalError = nil;
MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
if let application = try? MSALPublicClientApplication(configuration: config){ /* Use application */}
其他 MSALPublicClientApplicationConfig 屬性可以覆蓋預設權威、指定重新導向 URI,或變更 MSAL 權杖快取的行為。
UWP(通用Windows平台)
本節說明如何具現化 UWP app 的應用程式。
具現化應用程式
在UWP中,具現化應用程式最簡單的方式是使用下列程序代碼。 在此程式碼中,ClientId
是已註冊應用程式的 GUID。
var app = PublicClientApplicationBuilder.Create(clientId)
.Build();
其他 With<Parameter>
方法會設定使用者介面的父項、覆寫預設的授權機構、指定遙測的用戶端名稱和版本、指定重新導向的 URI,以及指定要使用的 HTTP 工廠。 例如,您可以使用 HTTP 工廠來處理代理伺服器,以及設置遙測與日誌記錄功能。
下列各節提供有關具現化應用程式的詳細資訊。
指定父 UI、視窗或活動
在 Android 上,請先傳遞父活動,然後再進行互動式驗證。 當您在 iOS 上使用代理時,會傳遞 ViewController
。 在 UWP 上也是如此,您可能會想將父視窗傳遞到內部。 您會在取得權杖時加以傳遞。 但是,當您建立應用程式時,您也可以將回呼函式指定為傳回 UIParent
的委派。
IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
.ParentActivityOrWindowFunc(() => parentUi)
.Build();
我們建議您在 Android 上使用 CurrentActivityPlugin
。 產生的 PublicClientApplication
建立器程式碼看起來會與這個範例類似:
// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
.Create("<your-client-id-here>")
.WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
.Build();
尋找更多應用程式建立參數
如需 PublicClientApplicationBuilder
上所有可用方法清單,請參閱方法清單。
如需 PublicClientApplicationOptions
中公開之所有選項的說明,請參閱參考文件。
適用於 iOS 和 macOS 的 MSAL 任務
當您使用適用於 iOS 和 macOS 的 MSAL 時,必須執行下列工作:
UWP 的任務
在 UWP 上,您可以使用公司網路。 下列各節說明您應該在公司情節中完成的工作。
如需詳細資訊,請參閱使用 MSAL.NET 的 UWP 特定考量。
配置應用程式以使用代理程式
在 Android 和 iOS 上,中介程式會啟用:
- 單一登入 (SSO):您可以對使用 Microsoft entra ID 註冊的裝置使用 SSO。 使用 SSO 時,使用者不需要登入每個應用程式。
- 裝置識別:此設定可啟用與 Microsoft Entra 裝置相關的條件式存取原則。 驗證程序會使用裝置加入工作場所時所建立的裝置憑證。
- 應用程式識別驗證:當應用程式呼叫訊息代理程式時,會傳遞其重新導向 URL。 然後,仲介驗證它。
為 Android 啟用 MSAL 代理程式
如需有關在 Android 上啟用訊息代理程式的詳細資訊,請參閱 Android 上的代理驗證。
啟用 iOS 和 macOS 的 MSAL 代理程式
預設情況下,對於適用於 iOS 和 macOS 的 MSAL 中的 Microsoft Entra 案例啟用代理驗證。
下列各節提供針對 iOS 和 macOS 的代理驗證支援設定應用程式的指示。 在這兩組指示中,部分步驟不同。
適用於 iOS 和 macOS 的 MSAL 代理驗證
預設會為 Microsoft Entra 案例啟用代理驗證。
步驟 1:更新 AppDelegate 以處理回撥
當適用於 iOS 和 macOS 的 MSAL 呼叫訊息代理程式時,訊息代理程式會使用 openURL
方法重新呼叫您的應用程式。 因為 MSAL 會等候來自訊息代理程式的回應,所以應用程式必須合作來重新呼叫 MSAL。 如以下程式碼範例所示,您可以藉由更新 AppDelegate.m
檔案來覆寫方法,以設定此功能。
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [MSALPublicClientApplication handleMSALResponse:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
guard let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String else {
return false
}
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
}
如果您在 iOS 13 或更新版本上使用 UISceneDelegate
,請改將 MSAL 回撥放入 scene:openURLContexts:
的 UISceneDelegate
。 每個 URL 都只能呼叫一次 MSAL handleMSALResponse:sourceApplication:
。
如需詳細資訊,請參閱 Apple 文件。
步驟 2︰註冊 URL 配置
適用於 iOS 和 macOS 的 MSAL 會使用 URL 叫用訊息代理程式,然後將訊息代理程式回應傳回給應用程式。 若要完成來回行程,請在 Info.plist
檔案中註冊應用程式的 URL 配置。
若要為您的應用程式註冊方案:
使用
msauth
作為自訂 URL 方案的前綴。將您的套件識別碼新增至方案的結尾。 遵循此模式:
$"msauth.(BundleId)"
在這裡,
BundleId
可唯一識別裝置。 例如,如果BundleId
是yourcompany.xforms
,則 URL 配置為msauth.com.yourcompany.xforms
。此 URL 結構將成為重新導向 URI 的一部分,當收到代理程式的回應時,可唯一識別您的應用程式。 請確定已為應用程式註冊格式為
msauth.(BundleId)://auth
的重新導向 URI。<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.[BUNDLE_ID]</string> </array> </dict> </array>
步驟 3:新增 LSApplicationQueriesSchemes
新增 LSApplicationQueriesSchemes
以允許對 Microsoft Authenticator 應用程式的呼叫 (如果已安裝)。
注意
使用 Xcode 11 和更新版本編譯應用程式時,需要 msauthv3
配置。
以下是如何新增 LSApplicationQueriesSchemes
的範例:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
下一步
繼續移動到這個情境中的下一篇文章:取得代幣。