Compartilhar via


Aplicativo da área de trabalho que chama APIs Web: mover para produção

Neste artigo, você vai aprender a mover seu aplicativo da área de trabalho que chama APIs Web para produção.

Tratar erros em aplicativos de área de trabalho

Nos fluxos diferentes, você aprendeu a tratar os erros dos fluxos silenciosos, conforme mostrado nos snippets de código. Você também viu que há casos em que a interação é necessária, como no consentimento incremental e no Acesso Condicional.

Observação

A obtenção de consentimento para vários recursos funciona para a plataforma de identidade da Microsoft, mas não para o Azure AD (Azure Active Directory) B2C. O Azure AD B2C dá suporte apenas ao consentimento do administrador, não ao consentimento do usuário.

Você não pode obter um token para vários recursos de uma vez com a plataforma de identidade da Microsoft. O parâmetro scopes pode conter escopos para um único recurso. Você pode garantir que o usuário dê um consentimento prévio a vários recursos usando o parâmetro extraScopesToConsent.

Por exemplo, você pode ter dois recursos que têm dois escopos cada:

  • https://mytenant.onmicrosoft.com/customerapi com os escopos customer.read e customer.write
  • https://mytenant.onmicrosoft.com/vendorapi com os escopos vendor.read e vendor.write

Neste exemplo, use o modificador .WithExtraScopesToConsent que tem o parâmetro extraScopesToConsent.

Por exemplo:

No 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();

Na MSAL para iOS e 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 */ })

Essa chamada fornece um token de acesso para a primeira API Web.

Quando você chamar a segunda API Web, chame a API AcquireTokenSilent.

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

A conta Microsoft pessoal requer consentimento sempre que o aplicativo é executado

Para usuários de contas Microsoft pessoais, solicitar consentimento novamente para cada chamada de cliente nativo (área de trabalho ou aplicativo móvel) para autorização é o comportamento pretendido. A identidade nativa do cliente é inerentemente insegura, o que é contrário à identidade confidencial do aplicativo cliente. Os aplicativos cliente confidenciais trocam um segredo com a plataforma de identidade da Microsoft para provar sua identidade. A plataforma de identidade da Microsoft optou por mitigar essa insegurança para os serviços de consumidor solicitando o consentimento do usuário sempre que o aplicativo for autorizado.

Habilitar o registro em log

Para ajudar em cenários de solução de problemas de falha de depuração e autenticação, a Biblioteca de Autenticação da Microsoft fornece suporte de log interno. O registro em log em cada biblioteca é abordada nos seguintes artigos:

Aqui estão algumas sugestões para a coleta de dados:

  • Os usuários podem pedir ajuda quando tiverem problemas. Uma prática recomendada é capturar e armazenar logs temporariamente. Forneça um local onde os usuários possam carregar os logs. O MSAL fornece extensões de registro em log para capturar informações detalhadas sobre a autenticação.

  • Se a telemetria estiver disponível, habilite-a por meio do MSAL para coletar dados sobre como os usuários entram no seu aplicativo.

Validar sua integração

Teste sua integração seguindo a lista de verificação de integração da plataforma de identidade da Microsoft.

Criação para resiliência

Saiba como aumentar a resiliência no seu aplicativo. Para obter detalhes, confira Aumentar a resiliência dos aplicativos de autenticação e de autorização desenvolvidos por você

Próximas etapas

Para experimentar exemplos adicionais, confira Aplicativos cliente públicos e de área de trabalho.