Desktopová aplikace, která volá webová rozhraní API: Přechod do produkčního prostředí

V tomto článku se dozvíte, jak přesunout desktopovou aplikaci, která volá webová rozhraní API do produkčního prostředí.

Zpracování chyb v desktopových aplikacích

V různých tocích jste se naučili, jak zpracovávat chyby pro tiché toky, jak je znázorněno v fragmentech kódu. Viděli jste také, že existují případy, kdy je potřeba interakce, jako je přírůstkový souhlas a podmíněný přístup.

Poznámka:

Získání souhlasu pro několik prostředků funguje pro platformu Microsoft Identity Platform, ale ne pro Azure Active Directory (Azure AD) B2C. Azure AD B2C podporuje jenom souhlas správce, nikoli souhlas uživatele.

Pomocí platformy Microsoft Identity Platform nemůžete získat token pro několik prostředků najednou. Parametr scopes může obsahovat obory pouze pro jeden prostředek. Pomocí parametru extraScopesToConsent můžete zajistit, aby uživatel předem souhlasil s několika prostředky.

Můžete mít například dva prostředky, které mají dva obory:

  • https://mytenant.onmicrosoft.com/customerapi s rozsahy customer.read a customer.write
  • https://mytenant.onmicrosoft.com/vendorapi s rozsahy vendor.read a vendor.write

V tomto příkladu .WithExtraScopesToConsent použijte modifikátor, který má extraScopesToConsent parametr.

Například:

V MSAL.NET

string[] scopesForCustomerApi = new string[]
{
  "https://mytenant.onmicrosoft.com/customerapi/customer.read",
  "https://mytenant.onmicrosoft.com/customerapi/customer.write"
};
string[] scopesForVendorApi = new string[]
{
 "https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
 "https://mytenant.onmicrosoft.com/vendorapi/vendor.write"
};

var accounts = await app.GetAccountsAsync();
var result = await app.AcquireTokenInteractive(scopesForCustomerApi)
                     .WithAccount(accounts.FirstOrDefault())
                     .WithExtraScopesToConsent(scopesForVendorApi)
                     .ExecuteAsync();

V MSAL pro iOS a macOS

Objective-C:

NSArray *scopesForCustomerApi = @[@"https://mytenant.onmicrosoft.com/customerapi/customer.read",
                                @"https://mytenant.onmicrosoft.com/customerapi/customer.write"];

NSArray *scopesForVendorApi = @[@"https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
                              @"https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]

MSALInteractiveTokenParameters *interactiveParams = [[MSALInteractiveTokenParameters alloc] initWithScopes:scopesForCustomerApi webviewParameters:[MSALWebviewParameters new]];
interactiveParams.extraScopesToConsent = scopesForVendorApi;
[application acquireTokenWithParameters:interactiveParams completionBlock:^(MSALResult *result, NSError *error) { /* handle result */ }];

Swift:

let scopesForCustomerApi = ["https://mytenant.onmicrosoft.com/customerapi/customer.read",
                            "https://mytenant.onmicrosoft.com/customerapi/customer.write"]

let scopesForVendorApi = ["https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
                          "https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]

let interactiveParameters = MSALInteractiveTokenParameters(scopes: scopesForCustomerApi, webviewParameters: MSALWebviewParameters())
interactiveParameters.extraScopesToConsent = scopesForVendorApi
application.acquireToken(with: interactiveParameters, completionBlock: { (result, error) in /* handle result */ })

Toto volání vám získá přístupový token pro první webové rozhraní API.

Při volání druhého webového rozhraní API zavolejte AcquireTokenSilent rozhraní API.

AcquireTokenSilent(scopesForVendorApi, accounts.FirstOrDefault()).ExecuteAsync();

Osobní účet Microsoft vyžaduje opětovné přihlášení při každém spuštění aplikace.

Pro uživatele osobního účtu Microsoft je zamýšlené chování, které žádá o vyjádření souhlasu u každého nativního klienta (desktopové nebo mobilní aplikace). Nativní identita klienta je ze své podstaty nezabezpečená, což je v rozporu s důvěrnou identitou klientské aplikace. Důvěrné klientské aplikace si vyměňují tajný kód s platformou Microsoft Identity Platform, aby prokázaly svou identitu. Platforma Microsoft Identity Platform se rozhodla zmírnit tuto nejistotu pro služby příjemců tím, že uživatele vyzve k vyjádření souhlasu při každém autorizaci aplikace.

Povolit protokolování

Knihovna Microsoft Authentication Library poskytuje integrovanou podporu protokolování, která pomáhá při řešení potíží s laděním a selháním ověřování. Protokolování v každé knihovně je popsané v následujících článcích:

Tady je několik návrhů pro shromažďování dat:

  • Uživatelé můžou požádat o pomoc, když mají problémy. Osvědčeným postupem je zachytávat a dočasně ukládat protokoly. Zadejte umístění, kam můžou uživatelé protokoly nahrát. MSAL poskytuje rozšíření protokolování pro zachycení podrobných informací o ověřování.

  • Pokud je k dispozici telemetrie, povolte ji prostřednictvím KNIHOVNY MSAL a shromážděte data o tom, jak se uživatelé přihlašují k vaší aplikaci.

Ověření integrace

Otestujte integraci pomocí kontrolního seznamu integrace platformy Microsoft Identity Platform.

Sestavení pro zajištění odolnosti

Zjistěte, jak v aplikaci zvýšit odolnost. Podrobnosti najdete v tématu Zvýšení odolnosti aplikací pro ověřování a autorizaci, které vyvíjíte.

Další kroky

Další ukázky si můžete vyzkoušet v tématu Desktopové veřejné klientské aplikace.