共用方式為


設定可呼叫 Web API 的行動應用程式

適用於:具有白色複選標記符號的 綠色圓圈。 員工租戶 具有灰色 X 符號的白色圓圈。 外部租戶(深入瞭解

建立應用程式之後,您將瞭解如何使用應用程式註冊參數來設定程式碼。 行動應用程式會帶來一些與建立架構相關的複雜性。

支援行動應用程式的 Microsoft 程式庫

下列 Microsoft 程式庫支援行動應用程式:

平台 專案進行中
GitHub
套件 獲取
開始
登入使用者 存取 Web API 正式發行 (GA)
公開預覽1
Android (Java) MSAL Android MSAL 快速入門 函式庫可以要求供使用者登入的 ID 權杖。 程式庫可以要求受保護的網路應用程式介面的存取權杖。 GA
Android (Kotlin) MSAL Android MSAL 軟體庫可以要求用於使用者登入的識別權杖。 程式庫可以要求受保護的網路應用程式介面的存取權杖。 GA
iOS (Swift/Obj-C) 適用於 iOS 和 macOS 的 MSAL MSAL 教學課程 函式庫可以要求供使用者登入的 ID 權杖。 程式庫可以要求受保護的網路應用程式介面的存取權杖。 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 配置。

若要為您的應用程式註冊方案:

  1. 使用 msauth 作為自訂 URL 方案的前綴。

  2. 將您的套件識別碼新增至方案的結尾。 遵循此模式:

    $"msauth.(BundleId)"

    在這裡,BundleId 可唯一識別裝置。 例如,如果 BundleIdyourcompany.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>

下一步

繼續移動到這個情境中的下一篇文章:取得代幣