Partilhar via


Aplicativo de área de trabalho que chama APIs da Web: chame uma API da Web

Aplica-se a: círculo verde com um símbolo de marca de seleção branco que indica que o conteúdo a seguir se aplica aos locatários da força de trabalho. Inquilinos da força de trabalho (saiba mais)

Agora que você tem um token, pode chamar uma API da Web protegida.

Chamar uma API Web

AuthenticationResult propriedades em MSAL.NET

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

Em MSAL.NET, AuthenticationResult expõe:

  • AccessToken para a API da Web acessar recursos. Este parâmetro é uma cadeia de caracteres, geralmente um JWT codificado em Base-64. O cliente nunca deve olhar para dentro do token de acesso. Não é garantido que o formato permaneça estável e pode ser criptografado para o recurso. Escrever 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 utilizador. Este 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 no qual o usuário foi encontrado. Para 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 clientes confidenciais em que os tokens são solicitados sem usuário para o aplicativo, essas informações do usuário são nulas.
  • O Scopes para o qual o token foi emitido.
  • O ID exclusivo para o usuário.

IAccount

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

Estrutura da interface IAccount

A AccountId classe 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 e ObjectId separada TenantId por uma vírgula. Eles não são codificados na Base 64.

A IAccount interface 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 exibível no formato UPN (UserPrincipalName), por exemplo, john.doe@contoso.com. Essa cadeia de caracteres pode ser null, ao contrário de HomeAccountId e HomeAccountId.Identifier, que não serão nulos. Esta propriedade substitui a DisplayableId propriedade de IUser em versões anteriores do MSAL.NET.
Environment Uma cadeia de caracteres que contém o provedor de identidade para essa conta, por exemplo, login.microsoftonline.com. Esta propriedade substitui a IdentityProvider propriedade da , exceto que IUser também tinha informações sobre o inquilino, além do ambiente de IdentityProvidernuvem. Aqui, o valor é apenas o host.
HomeAccountId O ID da conta inicial do usuário. Essa propriedade identifica exclusivamente o usuário entre os locatários do Microsoft Entra.

Usar o token para chamar uma API protegida

Depois AuthenticationResult de ser retornado pelo MSAL no 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óximos passos