Aplicativo de desktop que chama APIs Web: chamar uma API Web

Agora que você tem um token, é possível chamar uma API Web protegida.

Chamar uma API da Web

Propriedades de AuthenticationResult em MSAL.NET

Os métodos para adquirir retorno de tokens AuthenticationResult. Para métodos assíncronos, Task<AuthenticationResult> retorna.

No MSAL.NET, AuthenticationResult expõe:

  • AccessToken para a API da web acessar recursos. Este parâmetro é uma cadeia de caractere, geralmente um JWT codificado em Base 64. O cliente nunca deve olhar dentro do token de acesso. Não há garantia de que o formato permaneça estável e pode ser criptografado para o recurso. A gravação de código que depende do conteúdo do token de acesso no cliente é uma das maiores fontes de erros e quebras de lógica do cliente. Para obter mais informações, consulte Tokens de acesso.
  • IdToken para o usuário. Esse parâmetro é um JWT codificado. Para obter mais informações, consulte Tokens de ID.
  • ExpiresOn informa a data e a hora em que o token expira.
  • TenantId contém o locatário em que o usuário foi encontrado. Para os usuários convidados em cenários B2B do Microsoft Entra, a ID do locatário é o locatário convidado, não o locatário exclusivo. Quando o token é entregue para um usuário, AuthenticationResult também contém informações sobre esse usuário. Para fluxos de cliente confidenciais em que tokens são solicitados sem nenhum usuário para o aplicativo, essas informações do usuário são nulas.
  • O Scopes para o qual o token foi emitido.
  • A ID exclusiva para o usuário.

IAccount

MSAL.NET define a noção de uma conta por meio da interface IAccount. Essa alteração significativa fornece a semântica certa. O mesmo usuário pode ter várias contas, em diferentes diretórios do Microsoft Entra. Além disso, o MSAL.NET fornece melhores informações no caso de cenários de convidado porque as informações da conta doméstica são fornecidas. O diagrama a seguir mostra a estrutura daIAccount interface.

IAccount interface structure

A classe AccountId identifica uma conta em um locatário específico com as propriedades mostradas na tabela a seguir.

Propriedade Descrição
TenantId Uma representação de cadeia de caracteres para um GUID, que é a ID do locatário onde a conta reside.
ObjectId Uma representação de cadeia de caracteres para um GUID, que é a ID do usuário que possui a conta no locatário.
Identifier Identificador exclusivo da conta. Identifier é a concatenação de ObjectId e TenantId separada por uma vírgula. Eles não são codificados em Base 64.

A interface IAccount representa informações sobre uma única conta. O mesmo usuário pode estar presente em diferentes locatários, o que significa que um usuário pode ter várias contas. Seus membros são mostrados na tabela a seguir.

Propriedade Descrição
Username Uma cadeia de caracteres que contém o valor de exibição no formato UserPrincipalName (UPN), por exemplo, john.doe@contoso.com. Essa cadeia de caracteres pode ser nula, ao contrário de HomeAccountId e HomeAccountId.Identifier, que não será nula. Esta propriedade substitui a propriedade DisplayableId de IUser nas versões anteriores do MSAL.NET.
Environment Uma cadeia de caracteres que contém o provedor de identidade para esta conta, por exemplo, login.microsoftonline.com. Esta propriedade substitui aIdentityProvider propriedade de IUser, exceto que IdentityProvidertambém tinha informações sobre o locatário, além do ambiente de nuvem. Aqui, o valor é apenas o host.
HomeAccountId A ID da conta inicial do usuário. Essa propriedade identifica exclusivamente o usuário nos locatários do Microsoft Entra.

Use o token para chamar uma API protegida

Depois de AuthenticationResult ser retornado pelo MSAL em result, adicione-o ao cabeçalho de autorização HTTP antes de fazer a chamada para acessar a API da web protegida.

httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

// Call the web API.
HttpResponseMessage response = await _httpClient.GetAsync(apiUri);
...
}

Próximas etapas

Vá para o próximo artigo neste cenário, vá para produção.