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.
Ter o consentimento do usuário antecipado para vários recursos
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 escoposcustomer.read
ecustomer.write
https://mytenant.onmicrosoft.com/vendorapi
com os escoposvendor.read
evendor.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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de