Como utilizar o Azure AD para aceder às APIs do Intune no Microsoft Graph
A Microsoft Graph API suporta agora o Microsoft Intune com APIs específicas e funções de permissão. A API do Microsoft Graph utiliza o Azure Active Directory (Azure AD) para a autenticação e o controlo de acesso.
O acesso às APIs do Intune no Microsoft Graph exige:
Um ID de aplicação com:
- Permissão para chamar o Azure AD e as APIs do Microsoft Graph.
- Âmbitos de permissão relevantes para as tarefas da aplicação específica.
Credenciais de utilizador com:
- Permissão para aceder ao inquilino do Azure AD associado à aplicação.
- Permissões de função necessárias para suportar os âmbitos de permissão da aplicação.
O utilizador final para conceder permissão à aplicação para executar as tarefas de aplicações para o respetivo inquilino do Azure.
Este artigo:
Mostra como registar uma aplicação com acesso à API do Microsoft Graph e às funções de permissão relevantes.
Descreve as funções de permissão da API do Intune.
Fornece exemplos de autenticação da API do Intune para o C# e o PowerShell.
Descreve como suportar vários inquilinos.
Para saber mais, veja:
- Authorize access to web applications using OAuth 2.0 and Azure Active Directory (Autorizar o acesso a aplicações Web com OAuth 2.0 e o Azure Active Directory)
- Introdução à autenticação do Azure AD
- Integrar aplicações com o Azure Active Directory
- Compreender o OAuth 2.0
Registar aplicações para utilizar a API do Microsoft Graph
Para registar uma aplicação para utilizar a API do Microsoft Graph:
Inscreva-se no centro de administração Microsoft Endpoint Manager usando credenciais administrativas.
Conforme adequado, pode utilizar:
- A conta de administrador de inquilino.
- Uma conta de utilizador inquilino com a definição Os utilizadores podem registar aplicações ativada.
Selecione Todos os serviços > M365 Azure Ative Directory > Azure Ative Directory > Registos da App.
Escolha novo registo para criar uma nova aplicação ou escolha uma aplicação existente. (Se escolher uma aplicação existente, avance o próximo passo.)
No painel de inscrição do Registo, especifique o seguinte:
Um Nome para a aplicação (apresentado quando os utilizadores iniciam sessão).
O tipo de conta suportada.
Um valor URI de redirecionamento. Este valor é opção.
Nota
Azure Ative Directory (Azure AD) Authentication Library (ADAL) e Azure AD Graph API serão depreciadas. Para obter mais informações, consulte Update your applications to use Microsoft Authentication Library (MSAL) and Microsoft Graph API.
Para saber mais, consulte Cenários de Autenticação do Azure AD.
Do painel de aplicações:
Note o valor de ID de aplicação (cliente).
Selecione permissões API.
A partir do painel de permissões da API, escolha Adicionar uma permissão > microsoft APIs > Microsoft Graph. Em seguida, selecione o tipo de permissões que a sua aplicação requer.
Escolha as funções necessárias para a sua aplicação ao colocar uma marca de verificação à esquerda dos nomes relevantes. Para saber mais sobre os âmbitos de permissão específicos do Intune, veja Âmbitos de permissão do Intune. Para saber mais sobre outros âmbitos de permissão da Graph API, veja Microsoft Graph permissions reference (Referência de permissões do Microsoft Graph).
Para obter melhores resultados, escolha as funções mínimas necessárias para implementar a sua aplicação.
Permissões de armazém de dados e de reporte
Quando adiciona uma aplicação através do centro de administração Azure Ative Directory, pode escolher as permissões intune da API com base nos requisitos da sua aplicação.
- get_data_warehouse - Utilize esta permissão da API para conceder acesso à API do armazém de dados Intune a partir de Microsoft Intune. Para obter mais informações, consulte utilizar o Microsoft Intune Data Warehouse.
APIs de solução de parceiro
As seguintes permissões intune API estão disponíveis ao adicionar uma aplicação através do centro de administração Azure Ative Directory:
- get_device_compliance - Esta permissão da API é usada para obter informações de estado do dispositivo e conformidade de Microsoft Intune. Esta permissão API é utilizada pelos parceiros de Controlo de Acesso à Rede. Para obter mais informações, consulte a integração do Controlo de Acesso à Rede com o Intune.
- manage_partner_compliance_policy - Esta permissão da API é usada para gerir políticas de conformidade de parceiros com Microsoft Intune. Esta permissão da API permite que a app envie políticas de conformidade dos parceiros e a sua atribuição do Grupo AD Azure para Microsoft Intune sem um utilizador inscrito. É utilizado por parceiros de conformidade do dispositivo. Para obter mais informações, consulte parceiros de conformidade com dispositivos de terceiros.
- pfx_cert_provider - Esta permissão API é utilizada para enviar certificados PFX para o Intune para um utilizador específico. A Intune entrega o certificado a todos os dispositivos matriculados pelo utilizador. Para mais informações, consulte a PFX Import Powershell.
- scep_challenge_provider - Esta permissão da API é utilizada para enviar desafios SCEP ao Intune para validação de pedido de certificado. É utilizado por parceiros da Autoridade de Certificação. Para mais informações, consulte a Autoridade de Certificação de Parceiros.
- send_data_usage - Esta permissão da API é usada para desencadear alterações de política para dispositivos baseados em limiares de gestão de despesas de telecomunicações. É utilizado para integrações de parceiros de gestão de despesas de telecomunicações. Para obter mais informações, consulte a gestão de despesas da Telecom no Intune.
- update_device_attributes - Esta permissão da API é usada para enviar informações do dispositivo para o Intune a partir da conformidade do dispositivo e parceiros de defesa de ameaças móveis. Para obter mais informações, consulte a integração da Mobile Threat Defense com parceiros de conformidade do dispositivo Intune e terceiros.
- update_device_health - Esta permissão da API é usada para enviar informações sobre saúde e estado de ameaça do dispositivo à Intune de parceiros de defesa de ameaças móveis. Para mais informações, consulte a integração da Mobile Threat Defense com o Intune.
Se você é um parceiro interessado em integrar-se com Intune usando estas permissões API, contacte a equipa da Microsoft Intelligent Security Association] para obter informações.
Quando terminar, escolha Adicionar permissões para poupar-lhe alterações.
Neste ponto, também poderá:
Escolher conceder permissão a todas as contas de inquilinos para utilizar a aplicação sem fornecer credenciais.
Para tal, pode conceder permissões e aceitar o pedido de confirmação.
Quando executar a aplicação pela primeira vez, será pedido para conceder a permissão de aplicação para executar as funções selecionadas.
Tornar a aplicação disponível para utilizadores fora do seu inquilino. (Normalmente, tal é apenas necessário para suportar vários inquilinos/organizações.)
Para tal:
Escolha Manifesto no painel de aplicações.
Altere o valor da definição
availableToOtherTenants
paratrue
.Guarde as alterações.
Âmbitos de permissão do Intune
O Azure AD e o Microsoft Graph utilizam âmbitos de permissão para controlarem o acesso aos recursos empresariais.
Os âmbitos de permissão (também chamados âmbitos do OAuth) controlam o acesso a entidades específicas do Intune e às respetivas propriedades. Esta secção resume os âmbitos de permissão das funcionalidades da API do Intune.
Para saber mais:
Quando concede permissão ao Microsoft Graph, pode especificar os seguintes âmbitos para controlar o acesso às funcionalidades do Intune: a tabela seguinte resume os âmbitos de permissão da API do Intune. A primeira coluna mostra o nome da função exibida no centro de administração Microsoft Endpoint Manager e a segunda coluna fornece o nome do âmbito de permissão.
Definição Ativar Acesso | Nome do âmbito |
---|---|
Executar ações remotas que afetam o utilizador em dispositivos do Microsoft Intune | DeviceManagementManagedDevices.Operações privilegiadas.Todas as operações |
Leitura e escrita de dispositivos do Microsoft Intune | DeviceManagementManagedDevices.ReadWrite.all |
Leitura de dispositivos do Microsoft Intune | DeviceManagementManagedDevices.Read.All |
Leitura e escrita de definições de RBAC do Microsoft Intune | DeviceManagementRBAC.ReadWrite.All |
Leitura de definições de RBAC do Microsoft Intune | DeviceManagementRBAC.Read.All |
Leitura e escrita de aplicações do Microsoft Intune | DeviceManagementApps.ReadWrite.All |
Leitura de aplicações do Microsoft Intune | DeviceManagementApps.Read.All |
Leitura e escrita da Configuração e Políticas de Dispositivos do Microsoft Intune | DeviceManagementConfiguration.ReadWrite.All |
Leitura da Configuração e Políticas de Dispositivos do Microsoft Intune | Configuração de Gestão de Dispositivos.Ler.Todos |
Leitura e escrita da configuração do Microsoft Intune | DeviceManagementServiceConfig.ReadWrite.All |
Leitura da configuração do Microsoft Intune | DeviceManagementServiceConfig.Read.All |
A tabela lista as definições tal como aparecem no centro de administração Microsoft Endpoint Manager. As secções a seguir descrevem os âmbitos por ordem alfabética.
Neste momento, todos os âmbitos de permissão do Intune exigem acesso de administrador. Isto significa que precisa de ter credenciais correspondentes ao executar aplicações ou scripts que acedam aos recursos da API do Intune.
DeviceManagementApps.Read.All
Definição Ativar Acesso: leitura de aplicações do Microsoft Intune
Permite o acesso de leitura às seguintes propriedades e estado da entidade:
- Aplicações Cliente
- Categorias de Aplicações Móveis
- Políticas de Proteção de Aplicações
- Configurações de Aplicações
DeviceManagementApps.ReadWrite.All
Definição Ativar Acesso: leitura e escrita de aplicações do Microsoft Intune
Permite as mesmas operações de DeviceManagementApps.Read.All
Também permite alterações às entidades a seguir:
- Aplicações Cliente
- Categorias de Aplicações Móveis
- Políticas de Proteção de Aplicações
- Configurações de Aplicações
DeviceManagementConfiguration.Read.All
Definição Ativar Acesso: leitura da configuração e políticas de dispositivos do Microsoft Intune
Permite o acesso de leitura às seguintes propriedades e estado da entidade:
- Configuração do Dispositivo
- Política de Conformidade de Dispositivos
- Mensagens de Notificação
DeviceManagementConfiguration.ReadWrite.All
Definição Ativar Acesso: leitura e escrita da configuração e políticas de dispositivos do Microsoft Intune
Permite as mesmas operações de DeviceManagementConfiguration.Read.All
As aplicações também podem criar, atribuir, eliminar e alterar as entidades a seguir:
- Configuração do Dispositivo
- Política de Conformidade de Dispositivos
- Mensagens de Notificação
DeviceManagementManagedDevices.PrivilegedOperations.All
Definição Ativar Acesso: Executar ações remotas que afetam o utilizador em dispositivos do Microsoft Intune
Permite as seguintes ações remotas num dispositivo gerido:
- Extinguir
- Eliminação
- Repor/Recuperar Código de Acesso
- Bloqueio Remoto
- Ativar/Desativar o Modo Perdido
- Limpar o PC
- Reiniciar
- Eliminar o Utilizador do Dispositivo Partilhado
DeviceManagementManagedDevices.Read.All
Definição Ativar Acesso: leitura de dispositivos do Microsoft Intune
Permite o acesso de leitura às seguintes propriedades e estado da entidade:
- Dispositivo Gerido
- Categoria de Dispositivo
- Aplicação Detetada
- Ações remotas
- Informações de malware
DeviceManagementManagedDevices.ReadWrite.All
Definição Ativar Acesso: leitura e escrita de dispositivos do Microsoft Intune
Permite as mesmas operações de DeviceManagementManagedDevices.Read.All
As aplicações também podem criar, eliminar e alterar as entidades a seguir:
- Dispositivo Gerido
- Categoria de Dispositivo
As seguintes ações remotas também são permitidas:
- Localizar dispositivos
- Desativar o Bloqueio de Ativação
- Pedir assistência remota
DeviceManagementRBAC.Read.All
Definição Ativar Acesso: leitura de definições de RBAC do Microsoft Intune
Permite o acesso de leitura às seguintes propriedades e estado da entidade:
- Atribuições de Funções
- Definições de Função
- Operações de Recursos
DeviceManagementRBAC.ReadWrite.All
Definição Ativar Acesso: leitura e escrita de definições de RBAC do Microsoft Intune
Permite as mesmas operações de DeviceManagementRBAC.Read.All
As aplicações também podem criar, atribuir, eliminar e alterar as entidades a seguir:
- Atribuições de Funções
- Definições de Função
DeviceManagementServiceConfig.Read.All
Definição Ativar Acesso: leitura da configuração do Microsoft Intune
Permite o acesso de leitura às seguintes propriedades e estado da entidade:
- Inscrição de Dispositivos
- Certificado Apple Push Notification
- Programa de Inscrição de Dispositivos Apple
- Apple Volume Purchase Program
- Exchange Connector
- Terms and Conditions
- Gestão de Despesas de Telecomunicações
- PKI na Cloud
- Imagem corporativa
- Defesa Contra Ameaças para Dispositivos Móveis
DeviceManagementServiceConfig.ReadWrite.All
Definição Ativar Acesso: leitura e escrita da configuração do Microsoft Intune
Permite as mesmas operações que o DeviceManagementServiceConfig.Read.All
As aplicações também podem configurar as seguintes funcionalidades do Intune:
- Inscrição de Dispositivos
- Certificado Apple Push Notification
- Programa de Inscrição de Dispositivos Apple
- Apple Volume Purchase Program
- Exchange Connector
- Terms and Conditions
- Gestão de Despesas de Telecomunicações
- PKI na Cloud
- Imagem corporativa
- Defesa Contra Ameaças para Dispositivos Móveis
Exemplos de autenticação do Azure AD
Esta secção mostra como incorporar o Azure AD com seus projetos do C# e PowerShell.
Em cada exemplo, precisará de especificar um ID de aplicação que tenha pelo menos o DeviceManagementManagedDevices.Read.All
âmbito de permissão (discutido anteriormente).
Ao testar o exemplo, poderá receber erros de estado HTTP 403 (Proibido) semelhantes ao seguinte:
{
"error": {
"code": "Forbidden",
"message": "Application is not authorized to perform this operation - Operation ID " +
"(for customer support): 00000000-0000-0000-0000-000000000000 - " +
"Activity ID: cc7fa3b3-bb25-420b-bfb2-1498e598ba43 - " +
"Url: https://example.manage.microsoft.com/" +
"Service/Resource/RESTendpoint?" +
"api-version=2017-03-06 - CustomApiErrorPhrase: ",
"innerError": {
"request-id": "00000000-0000-0000-0000-000000000000",
"date": "1980-01-0112:00:00"
}
}
}
Caso tal aconteça, verifique se:
Atualizou o ID da aplicação para um autorizado para utilizar a API do Microsoft Graph e o âmbito de permissão
DeviceManagementManagedDevices.Read.All
.As suas credenciais de inquilino suportam funções administrativas.
O seu código é semelhante aos exemplos apresentados.
Autenticação do Azure AD no C#
Este exemplo mostra como utilizar o C# para recuperar uma lista de dispositivos associados à sua conta do Intune.
Nota
Azure Ative Directory (Azure AD) Authentication Library (ADAL) e Azure AD Graph API serão depreciadas. Para obter mais informações, consulte Update your applications to use Microsoft Authentication Library (MSAL) and Microsoft Graph API.
Inicie o Visual Studio e, em seguida, crie um novo projeto de aplicação da Consola do Visual C# (.NET Framework).
Introduza um nome para o seu projeto e forneça outros detalhes conforme pretendido.
Utilize o Solution Explorer para adicionar o pacote Microsoft ADAL NuGet ao projeto:
- Clique com o botão direito do rato no Explorador de Soluções.
- Escolha Gerir Pacotes NuGet... >Procurar.
- Selecione
Microsoft.IdentityModel.Clients.ActiveDirectory
e, em seguida, Instalar.
Adicione as seguintes instruções para a parte superior do Program.cs:
using Microsoft.IdentityModel.Clients.ActiveDirectory; using System.Net.Http;
Adicione um método para criar o cabeçalho de autorização:
private static async Task<string> GetAuthorizationHeader() { string applicationId = "<Your Application ID>"; string authority = "https://login.microsoftonline.com/common/"; Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob"); AuthenticationContext context = new AuthenticationContext(authority); AuthenticationResult result = await context.AcquireTokenAsync( "https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto)); return result.CreateAuthorizationHeader();
Lembre-se de alterar o valor de
application_ID
para corresponder a pelo menos umDeviceManagementManagedDevices.Read.All
âmbito de permissão concedido, conforme descrito anteriormente.Adicione um método para recuperar a lista de dispositivos:
private static async Task<string> GetMyManagedDevices() { string authHeader = await GetAuthorizationHeader(); HttpClient graphClient = new HttpClient(); graphClient.DefaultRequestHeaders.Add("Authorization", authHeader); return await graphClient.GetStringAsync( "https://graph.microsoft.com/beta/me/managedDevices"); }
Atualize Principal para chamar GetMyManagedDevices:
string devices = GetMyManagedDevices().GetAwaiter().GetResult(); Console.WriteLine(devices);
Compile e execute o programa.
Ao executar o programa pela primeira vez, deve receber dois pedidos. O primeiro pede as suas credenciais e o segundo concede permissões para o managedDevices
pedido.
Para referência, eis o programa concluído:
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace IntuneGraphExample
{
class Program
{
static void Main(string[] args)
{
string devices = GetMyManagedDevices().GetAwaiter().GetResult();
Console.WriteLine(devices);
}
private static async Task<string> GetAuthorizationHeader()
{
string applicationId = "<Your Application ID>";
string authority = "https://login.microsoftonline.com/common/";
Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
AuthenticationContext context = new AuthenticationContext(authority);
AuthenticationResult result = await context.AcquireTokenAsync("https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
return result.CreateAuthorizationHeader();
}
private static async Task<string> GetMyManagedDevices()
{
string authHeader = await GetAuthorizationHeader();
HttpClient graphClient = new HttpClient();
graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
return await graphClient.GetStringAsync("https://graph.microsoft.com/beta/me/managedDevices");
}
}
}
Autenticar o Azure AD (PowerShell)
O script do PowerShell a seguir utiliza o módulo AzureAD PowerShell para autenticação. Para saber mais, veja Azure Active Directory PowerShell Version 2 (Versão 2 do Azure Active Directory PowerShell) e os Exemplos do Intune PowerShell.
Neste exemplo, atualize o valor de $clientID
para corresponder a um ID de aplicação válido.
function Get-AuthToken {
[cmdletbinding()]
param
(
[Parameter(Mandatory = $true)]
$User
)
$userUpn = New-Object "System.Net.Mail.MailAddress" -ArgumentList $User
$tenant = $userUpn.Host
Write-Host "Checking for AzureAD module..."
$AadModule = Get-Module -Name "AzureAD" -ListAvailable
if ($AadModule -eq $null) {
Write-Host "AzureAD PowerShell module not found, looking for AzureADPreview"
$AadModule = Get-Module -Name "AzureADPreview" -ListAvailable
}
if ($AadModule -eq $null) {
write-host
write-host "AzureAD Powershell module not installed..." -f Red
write-host "Install by running 'Install-Module AzureAD' or 'Install-Module AzureADPreview' from an elevated PowerShell prompt" -f Yellow
write-host "Script can't continue..." -f Red
write-host
exit
}
# Getting path to ActiveDirectory Assemblies
# If the module count is greater than 1 find the latest version
if ($AadModule.count -gt 1) {
$Latest_Version = ($AadModule | select version | Sort-Object)[-1]
$aadModule = $AadModule | ? { $_.version -eq $Latest_Version.version }
$adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
}
else {
$adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
}
[System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
[System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null
$clientId = "<Your Application ID>"
$redirectUri = "urn:ietf:wg:oauth:2.0:oob"
$resourceAppIdURI = "https://graph.microsoft.com"
$authority = "https://login.microsoftonline.com/$Tenant"
try {
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
# https://msdn.microsoft.com/library/azure/microsoft.identitymodel.clients.activedirectory.promptbehavior.aspx
# Change the prompt behaviour to force credentials each time: Auto, Always, Never, RefreshSession
$platformParameters = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters" -ArgumentList "Auto"
$userId = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier" -ArgumentList ($User, "OptionalDisplayableId")
$authResult = $authContext.AcquireTokenAsync($resourceAppIdURI, $clientId, $redirectUri, $platformParameters, $userId).Result
# If the accesstoken is valid then create the authentication header
if ($authResult.AccessToken) {
# Creating header for Authorization token
$authHeader = @{
'Content-Type' = 'application/json'
'Authorization' = "Bearer " + $authResult.AccessToken
'ExpiresOn' = $authResult.ExpiresOn
}
return $authHeader
}
else {
Write-Host
Write-Host "Authorization Access Token is null, please re-run authentication..." -ForegroundColor Red
Write-Host
break
}
}
catch {
write-host $_.Exception.Message -f Red
write-host $_.Exception.ItemName -f Red
write-host
break
}
}
$authToken = Get-AuthToken -User "<Your AAD Username>"
try {
$uri = "https://graph.microsoft.com/beta/me/managedDevices"
Write-Verbose $uri
(Invoke-RestMethod -Uri $uri –Headers $authToken –Method Get).Value
}
catch {
$ex = $_.Exception
$errorResponse = $ex.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($errorResponse)
$reader.BaseStream.Position = 0
$reader.DiscardBufferedData()
$responseBody = $reader.ReadToEnd();
Write-Host "Response content:`n$responseBody" -f Red
Write-Error "Request to $Uri failed with HTTP Status $($ex.Response.StatusCode) $($ex.Response.StatusDescription)"
write-host
break
}
Suportar vários inquilinos e parceiros
Se a sua organização suportar organizações com os seus próprios inquilinos do Azure AD, poderá querer permitir que os seus clientes utilizem a sua aplicação com os respetivos inquilinos.
Para tal:
Verifique se a conta de cliente existe no inquilino do Azure AD de destino.
Verifique se a sua conta de inquilino permite que os utilizadores registem aplicações (consulte Configurações do utilizador).
Estabeleça uma relação entre cada inquilino.
Para tal:
a. Utilize o Microsoft Partner Center para definir uma relação com o cliente e o respetivo endereço de e-mail.
b. Convide utilizadores para se tornarem um convidado do seu inquilino.
Para convidar o utilizador para ser um convidado do seu inquilino:
Escolha Adicionar um utilizador convidado no painel Tarefas rápidas.
Introduza o endereço de e-mail do cliente e (opcionalmente) adicione uma mensagem personalizada para o convite.
Escolha Convidar.
Este procedimento envia um convite ao utilizador.
O utilizador precisa de escolher a ligação Começar Agora para aceitar o convite.
Quando a relação for estabelecida (ou o seu convite tiver sido aceite), adicione a conta de utilizador à Função de diretório.
Lembre-se de adicionar o utilizador a outras funções, conforme necessário. Por exemplo, para permitir ao utilizador gerir as definições do Intune, aquele precisa de ser um Administrador Global ou um Administrador de Serviço do Intune.
Além disso:
Utilize https://admin.microsoft.com para atribuir uma licença do Intune à sua conta de utilizador.
Atualize o código da aplicação para autenticar o domínio de inquilino do Azure AD do cliente em vez do seu próprio.
Por exemplo, suponha que o seu domínio de inquilino é
contosopartner.onmicrosoft.com
e o domínio de inquilino do cliente énorthwind.onmicrosoft.com
, deve atualizar o seu código para autenticar o inquilino do cliente.Para fazer isso numa aplicação do C# com base no exemplo anterior, altere o valor da variável
authority
:string authority = "https://login.microsoftonline.com/common/";
para
string authority = "https://login.microsoftonline.com/northwind.onmicrosoft.com/";