Share via


Webes API-kat hívó mobilalkalmazás konfigurálása

Az alkalmazás létrehozása után megtanulhatja, hogyan konfigurálhatja a kódot az alkalmazásregisztrációs paraméterek használatával. A mobilalkalmazások a létrehozási keretrendszerükbe való illesztéssel kapcsolatos összetettségeket mutatnak be.

Mobilalkalmazásokat támogató Microsoft-kódtárak

A következő Microsoft-kódtárak támogatják a mobilalkalmazásokat:

Platform Projekt bekapcsolva
GitHub
Csomag Szerzés
közül
Felhasználók bejelentkezése Webes API-k elérése Általánosan elérhető (GA) vagy
1. nyilvános előzetes verzió
Android (Java) MSAL Android MSAL Gyors útmutató A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Android (Kotlin) MSAL Android MSAL A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
iOS (Swift/Obj-C) MSAL iOS-hez és macOS-hez MSAL Oktatóanyag A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE
Xamarin (.NET) MSAL.NET Microsoft.Identity.Client A kódtár azonosító jogkivonatokat kérhet a felhasználói bejelentkezéshez. A kódtár hozzáférési jogkivonatokat kérhet védett webes API-khoz. FE

1Az online szolgáltatásokra vonatkozó univerzális licencfeltételek nyilvános előzetes verziójú kódtárakra vonatkoznak.

Az alkalmazás példányosítása

Android

A mobilalkalmazások az osztályt PublicClientApplication használják. Példányosítása az alábbiak szerint:

PublicClientApplication sampleApp = new PublicClientApplication(
                    this.getApplicationContext(),
                    R.raw.auth_config);

iOS

Az iOS-en futó mobilalkalmazások példányosítaniuk kell az osztályt MSALPublicClientApplication . Az osztály példányosításához használja az alábbi kódot.

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 */}

Az MSALPublicClientApplicationConfig további tulajdonságai felülbírálhatják az alapértelmezett szolgáltatót, átirányítási URI-t adhatnak meg, vagy módosíthatják az MSAL-jogkivonat gyorsítótárazásának viselkedését.

Xamarin vagy UWP

Ez a szakasz bemutatja, hogyan példányosíthatja az alkalmazást Xamarin.iOS, Xamarin.Android és UWP-alkalmazásokhoz.

Az alkalmazás példányosítása

Xamarin vagy UWP esetén az alkalmazás példányosításának legegyszerűbb módja az alábbi kód használata. Ebben a kódban ClientId a regisztrált alkalmazás GUID azonosítója.

var app = PublicClientApplicationBuilder.Create(clientId)
                                        .Build();

A további With<Parameter> metódusok beállítják a felhasználói felület szülőfelületét, felülbírálják az alapértelmezett szolgáltatót, megadják a telemetriai ügyfél nevét és verzióját, megadják az átirányítási URI-t, és megadják a használni kívánt HTTP-előállítót. A HTTP-gyár például a proxyk kezelésére, valamint a telemetria és a naplózás megadására használható.

Az alábbi szakaszok további információt nyújtanak az alkalmazás példányosításáról.

Adja meg a szülő felhasználói felületet, ablakot vagy tevékenységet

Android rendszeren az interaktív hitelesítés előtt adja át a szülőtevékenységet. iOS rendszeren, ha közvetítőt használ, jelentkezzen be ViewController. Az UWP-hez hasonlóan érdemes lehet a szülőablakot is átengedni. A jogkivonat beszerzésekor adja át. Az alkalmazás létrehozásakor azonban delegáltként is megadhat visszahívást UIParent.

IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
  .ParentActivityOrWindowFunc(() => parentUi)
  .Build();

Androidon azt javasoljuk, hogy használja CurrentActivityPlugina . Az eredményként kapott PublicClientApplication szerkesztőkód a következő példához hasonlóan néz ki:

// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
  .Create("<your-client-id-here>")
  .WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
  .Build();
További alkalmazásépítési paraméterek keresése

Az összes elérhető PublicClientApplicationBuildermetódus listáját a Metódusok listában találja.

A rendelkezésre álló lehetőségek leírását a referenciadokumentációban PublicClientApplicationOptionstalálja.

Feladatok xamarin iOS-hez

Ha MSAL.NET használ Xamarin iOS rendszeren, végezze el a következő feladatokat.

További információ: Xamarin iOS-szempontok.

Feladatok az iOS és macOS MSAL-hez

Ezekre a feladatokra akkor van szükség, ha az MSAL-t iOS-hez és macOS-hez használja:

Xamarin.Android-feladatok

Ha Xamarin.Androidot használ, végezze el a következő feladatokat:

További információkért tekintse meg a Xamarin.Android szempontjait.

Az Android böngészőkkel kapcsolatos szempontokért lásd a Xamarin.Android-specifikus szempontokat a MSAL.NET.

Feladatok az UWP-hez

Az UWP-n vállalati hálózatokat használhat. A következő szakaszok ismertetik a vállalati forgatókönyvben el kell végeznie a feladatokat.

További információ: UWP-specifikus szempontok a MSAL.NET.

Az alkalmazás konfigurálása a közvetítő használatára

Android és iOS rendszeren a közvetítők a következőket teszik lehetővé:

  • Egyszeri bejelentkezés (SSO): Az egyszeri bejelentkezést a Microsoft Entra ID azonosítóval regisztrált eszközökhöz használhatja. Egyszeri bejelentkezés használatakor a felhasználóknak nem kell bejelentkezni az egyes alkalmazásokba.
  • Eszközazonosítás: Ez a beállítás lehetővé teszi a Microsoft Entra-eszközökhöz kapcsolódó feltételes hozzáférési szabályzatokat. A hitelesítési folyamat az eszköz munkahelyi csatlakoztatásakor létrehozott eszköztanúsítványt használja.
  • Alkalmazásazonosítás ellenőrzése: Amikor egy alkalmazás meghívja a közvetítőt, átadja az átirányítási URL-címét. Ezután a közvetítő ellenőrzi.

A közvetítő engedélyezése a Xamarinon

Ha engedélyezni szeretné a közvetítőt a Xamarinon, használja a WithBroker() paramétert, amikor meghívja a metódust PublicClientApplicationBuilder.CreateApplication . Alapértelmezés szerint .WithBroker() igaz értékre van állítva.

A Xamarin.iOS közvetítőalapú hitelesítésének engedélyezéséhez kövesse a cikk Xamarin.iOS szakaszának lépéseit.

A közvetítő engedélyezése androidos MSAL-hez

A közvetítő androidos engedélyezésével kapcsolatos információkért lásd : Közvetítőalapú hitelesítés Androidon.

Az mSAL-közvetítő engedélyezése iOS-hez és macOS-hez

A közvetítőalapú hitelesítés alapértelmezés szerint engedélyezve van a Microsoft Entra-forgatókönyvek esetében az iOS és a macOS MSAL rendszerben.

Az alábbi szakaszok útmutatást nyújtanak az alkalmazás közvetítőalapú hitelesítési támogatásának konfigurálásához a Xamarin.iOS MSAL vagy az iOS és macOS rendszerhez készült MSAL esetében. A két utasításkészletben a lépések némelyike eltér.

Közvetítőalapú hitelesítés engedélyezése xamarin iOS-hez

Az ebben a szakaszban ismertetett lépéseket követve engedélyezheti, hogy a Xamarin.iOS-alkalmazás kommunikáljon a Microsoft Authenticator alkalmazással.

1. lépés: Közvetítői támogatás engedélyezése

A közvetítő támogatása alapértelmezés szerint le van tiltva. Ezt egy külön PublicClientApplication osztályhoz engedélyezheti. Az osztály létrehozásakor használja a WithBroker() paramétert PublicClientApplicationPublicClientApplicationBuilder. A WithBroker() paraméter alapértelmezés szerint igaz értékre van állítva.

var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithReplyUri(redirectUriOnIos) // $"msauth.{Bundle.Id}://auth" (see step 6 below)
                .Build();

2. lépés: Az AppDelegate frissítése a visszahívás kezeléséhez

Amikor MSAL.NET meghívja a közvetítőt, a közvetítő visszahívja az alkalmazást. A metódus használatával visszahívja a AppDelegate.OpenUrl hívást. Mivel az MSAL megvárja a közvetítő válaszát, az alkalmazásnak együtt kell működnie a MSAL.NET visszahívásához. Ezt a viselkedést úgy állíthatja be, hogy frissíti a fájlt úgy AppDelegate.cs , hogy felülbírálja a metódust, ahogy az alábbi kód is mutatja.

public override bool OpenUrl(UIApplication app, NSUrl url,
                             string sourceApplication,
                             NSObject annotation)
{
 if (AuthenticationContinuationHelper.IsBrokerResponse(sourceApplication))
 {
  AuthenticationContinuationHelper.SetBrokerContinuationEventArgs(url);
  return true;
 }
 else if (!AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url))
 {
  return false;
 }
 return true;
}

Ezt a metódust az alkalmazás minden indításakor meghívja a program. Lehetőség van a közvetítő válaszának feldolgozására és az MSAL.NET által elindított hitelesítési folyamat befejezésére.

3. lépés: UIViewController() beállítása

Xamarin iOS esetén általában nem kell objektumablakot beállítania. Ebben az esetben azonban be kell állítania, hogy elküldhesse és megkaphassa a válaszokat egy közvetítőtől. Objektumablak beállításához be AppDelegate.cskell állítania egy ViewController.

Az objektumablak beállításához kövesse az alábbi lépéseket:

  1. A be AppDelegate.csvan állítva egy App.RootViewController új UIViewController(). Ez a beállítás biztosítja, hogy a közvetítő hívása tartalmazza a következőket: UIViewController. Ha nincs megfelelően beállítva, a következő hibaüzenet jelenhet meg:

    "uiviewcontroller_required_for_ios_broker":"UIViewController is null, so MSAL.NET cannot invoke the iOS broker. See https://aka.ms/msal-net-ios-broker."

  2. A híváshoz használja a AcquireTokenInteractive következőt .WithParentActivityOrWindow(App.RootViewController): . Adja meg a használni kívánt objektumablakra mutató hivatkozást. Példa:

    A App.cs-ben:

       public static object RootViewController { get; set; }
    

    A AppDelegate.cs-ben:

       LoadApplication(new App());
       App.RootViewController = new UIViewController();
    

    A hívásban:AcquireToken

    result = await app.AcquireTokenInteractive(scopes)
                 .WithParentActivityOrWindow(App.RootViewController)
                 .ExecuteAsync();
    

4. lépés: URL-séma regisztrálása

MSAL.NET URL-címekkel hívja meg a közvetítőt, majd adja vissza a közvetítő válaszát az alkalmazásnak. A körút befejezéséhez regisztrálja az alkalmazás URL-sémáját a Info.plist fájlban.

Az alkalmazás URL-sémájának regisztrálásához kövesse az alábbi lépéseket:

  1. Előtag CFBundleURLSchemes a .msauth

  2. Hozzáadás CFBundleURLName a végéhez. Kövesse a következő mintát:

    $"msauth.(BundleId)"

    BundleId Itt egyedileg azonosíthatja az eszközt. Ha például BundleId azyourcompany.xforms, akkor az URL-séma .msauth.com.yourcompany.xforms

    Ez az URL-séma az átirányítási URI része lesz, amely egyedileg azonosítja az alkalmazást, amikor megkapja a közvetítő válaszát.

     <key>CFBundleURLTypes</key>
        <array>
          <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>com.yourcompany.xforms</string>
            <key>CFBundleURLSchemes</key>
            <array>
              <string>msauth.com.yourcompany.xforms</string>
            </array>
          </dict>
        </array>
    

5. lépés: Hozzáadás az LSApplicationQueriesSchemes szakaszhoz

Az MSAL annak ellenőrzésére használja –canOpenURL: , hogy a közvetítő telepítve van-e az eszközön. Az iOS 9-ben az Apple zárolta az alkalmazás által lekérdezhető sémákat.

Adja hozzá msauthv2 a LSApplicationQueriesSchemesInfo.plist fájl szakaszához, ahogyan az alábbi kód példában is látható:

<key>LSApplicationQueriesSchemes</key>
    <array>
      <string>msauthv2</string>
    </array>

Közvetített hitelesítés iOS-hez és macOS-hez készült MSAL-hez

A közvetítőalapú hitelesítés alapértelmezés szerint engedélyezve van a Microsoft Entra-forgatókönyvekben.

1. lépés: Az AppDelegate frissítése a visszahívás kezeléséhez

Amikor az iOS-hez és macOS-hez készült MSAL meghívja a közvetítőt, a közvetítő a metódus használatával visszahívja az openURL alkalmazást. Mivel az MSAL megvárja a közvetítő válaszát, az alkalmazásnak együtt kell működnie az MSAL visszahívásához. Ezt a képességet úgy állíthatja be, hogy a AppDelegate.m fájlt úgy frissíti, hogy felülírja a metódust, ahogy az alábbi példakódok is mutatják.

- (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)
    }

Ha az iOS 13-at vagy újabb verziót használjaUISceneDelegate, helyezze az MSAL visszahívást UISceneDelegate helyettescene:openURLContexts:. Az MSAL-t handleMSALResponse:sourceApplication: minden URL-címhez csak egyszer kell meghívni.

További információkért tekintse meg az Apple dokumentációját.

2. lépés: URL-séma regisztrálása

Az iOS-hez és macOS-hez készült MSAL URL-címekkel hívja meg a közvetítőt, majd visszaadja a közvetítő válaszát az alkalmazásnak. A körút befejezéséhez regisztráljon egy URL-sémát az alkalmazáshoz a Info.plist fájlban.

Séma regisztrálása az alkalmazáshoz:

  1. Az egyéni URL-séma előtagja a msauth.

  2. Adja hozzá a csomagazonosítót a séma végéhez. Kövesse a következő mintát:

    $"msauth.(BundleId)"

    BundleId Itt egyedileg azonosíthatja az eszközt. Ha például BundleId azyourcompany.xforms, akkor az URL-séma .msauth.com.yourcompany.xforms

    Ez az URL-séma az átirányítási URI része lesz, amely egyedileg azonosítja az alkalmazást, amikor megkapja a közvetítő válaszát. Győződjön meg arról, hogy a formátumbeli msauth.(BundleId)://auth átirányítási URI regisztrálva van az alkalmazáshoz.

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>msauth.[BUNDLE_ID]</string>
            </array>
        </dict>
    </array>
    

3. lépés: LSApplicationQueriesSchemes hozzáadása

Adja hozzá LSApplicationQueriesSchemes a Microsoft Authenticator alkalmazás hívásainak engedélyezéséhez, ha telepítve van.

Feljegyzés

A msauthv3 sémára akkor van szükség, ha az alkalmazás az Xcode 11-et vagy újabb verzióját használja.

Íme egy példa a hozzáadásra LSApplicationQueriesSchemes:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>msauthv2</string>
  <string>msauthv3</string>
</array>

Közvetített hitelesítés Xamarin.Android esetén

A közvetítő androidos engedélyezéséről további információt a Xamarin.Android közvetítőalapú hitelesítés című témakörben talál.

Következő lépések

Lépjen tovább ebben a forgatókönyvben a következő cikkre, amely egy jogkivonat beszerzését ismerteti.