Share via


Gerenciar um aplicativo Microsoft Entra usando o Microsoft Graph

Seu aplicativo deve ser registrado em Microsoft Entra ID antes que o plataforma de identidade da Microsoft possa autorizá-lo a acessar dados armazenados em locatários do Microsoft Entra ou do Microsoft 365. Essa condição se aplica a aplicativos que você desenvolve sozinho, que seu locatário possui ou que você acessa por meio de uma assinatura ativa.

Muitas configurações para aplicativos são registradas como objetos que podem ser acessados, atualizados ou excluídos usando o Microsoft Graph. Neste artigo, você aprenderá a usar o Microsoft Graph para gerenciar objetos de entidade de serviço e aplicativo, incluindo as propriedades, permissões e atribuições de função.

Pré-requisitos

Para testar as operações de API, você precisa dos seguintes recursos e privilégios:

  • Um locatário Microsoft Entra funcionando.
  • Entre no Graph Explorer como um usuário com privilégios permitidos para criar e gerenciar aplicativos no locatário.
  • Conceda a si mesmo a menor permissão delegada de privilégio indicada para a operação.

Registrar um aplicativo com Microsoft Entra ID

A solicitação a seguir cria um aplicativo especificando apenas a propriedade displayName necessária.

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/applications
Content-type: application/json

{
  "displayName": "My application"
}

A solicitação retorna uma 201 Created resposta com o objeto do aplicativo no corpo da resposta. O aplicativo recebe uma ID exclusiva para aplicativos no locatário e um appId globalmente exclusivo no ecossistema Microsoft Entra ID.

Create uma entidade de serviço para um aplicativo

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json

{
  "appId": "fc876dd1-6bcb-4304-b9b6-18ddf1526b62"
}

A solicitação retorna uma 201 Created resposta com o objeto da entidade de serviço no corpo da resposta.

Abordando um aplicativo ou um objeto de entidade de serviço

Você pode abordar um aplicativo ou uma entidade de serviço por sua ID ou por seu appId, em que a ID é chamada de ID de Objeto e appId é chamada de ID do aplicativo (cliente) no centro de administração do Microsoft Entra. Essas sintaxes têm suporte para todas as operações HTTP CRUD em aplicativos e entidades de serviço.

Para abordar um aplicativo ou uma entidade de serviço por sua ID.

https://graph.microsoft.com/v1.0/applications/{applicationObjectId}
https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalObjectId}

Para abordar um aplicativo ou uma entidade de serviço por seu appId.

https://graph.microsoft.com/v1.0/applications(appId='appId')
https://graph.microsoft.com/v1.0/servicePrincipals(appId='appId')

Configurar outras propriedades básicas para seu aplicativo

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

Você configura as seguintes propriedades básicas para o aplicativo.

  • Adicione marcas para categorização na organização. Além disso, use a HideApp marca para ocultar o aplicativo do Meus Aplicativos e do Microsoft 365 Launcher.
  • Adicione informações básicas, incluindo o logotipo, os termos de serviço e a instrução de privacidade.
  • Armazenar informações de contato sobre o aplicativo
PATCH https://graph.microsoft.com/v1.0/applications/0d0021e2-eaab-4b9f-a5ad-38c55337d63e/
Content-type: application/json

{
    "tags": [
        "HR",
        "Payroll",
        "HideApp"
    ],
    "info": {
        "logoUrl": "https://cdn.pixabay.com/photo/2016/03/21/23/25/link-1271843_1280.png",
        "marketingUrl": "https://www.contoso.com/app/marketing",
        "privacyStatementUrl": "https://www.contoso.com/app/privacy",
        "supportUrl": "https://www.contoso.com/app/support",
        "termsOfServiceUrl": "https://www.contoso.com/app/termsofservice"
    },
    "web": {
        "homePageUrl": "https://www.contoso.com/",
        "logoutUrl": "https://www.contoso.com/frontchannel_logout",
        "redirectUris": [
            "https://localhost"
        ]
    },
    "serviceManagementReference": "Owners aliases: Finance @ contosofinance@contoso.com; The Phone Company HR consulting @ hronsite@thephone-company.com;"
}

Limitar a entrada do aplicativo a identidades atribuídas apenas

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/servicePrincipals/89473e09-0737-41a1-a0c3-1418d6908bcd

{
    "appRoleAssignmentRequired": true
}

Atribuir permissões a um aplicativo

Embora você possa atribuir permissões a um aplicativo por meio do centro de administração do Microsoft Entra, você também atribui permissões por meio do Microsoft Graph atualizando a propriedade requiredResourceAccess do objeto do aplicativo. Você deve passar permissões existentes e novas. A passagem apenas de novas permissões substitui e remove as permissões existentes que ainda não foram consentidas.

Atribuir permissões não as concede automaticamente ao aplicativo. Você ainda deve conceder o consentimento do administrador usando o centro de administração do Microsoft Entra. Para conceder permissões sem consentimento interativo, consulte Conceder ou revogar permissões de API programaticamente.

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

PATCH https://graph.microsoft.com/v1.0/applications/581088ba-83c5-4975-b8af-11d2d7a76e98
Content-Type: application/json

{
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "311a71cc-e848-46a1-bdf8-97ff7156d8e6",
                    "type": "Scope"
                },
                {
                    "id": "3afa6a7d-9b1a-42eb-948e-1650a849e176",
                    "type": "Role"
                }
            ]
        }
    ]
}

Create funções de aplicativo

Create funções de aplicativo em um objeto de aplicativo

Para manter todas as funções de aplicativo existentes, inclua-as na solicitação. Caso contrário, eles são substituídos pelo novo objeto.

PATCH https://graph.microsoft.com/v1.0/applications/bbd46130-e957-4c38-a116-d4d02afd1057
Content-Type: application/json

{
    "appRoles": [
        {
            "allowedMemberTypes": [
                "User",
                "Application"
            ],
            "description": "Survey.Read",
            "displayName": "Survey.Read",
            "id": "7a9ddfc4-cc8a-48ea-8275-8ecbffffd5a0",
            "isEnabled": false,
            "origin": "Application",
            "value": "Survey.Read"
        }
    ]
}

Gerenciar proprietários

Identificar entidades de serviço sem proprietário e entidades de serviço com um proprietário

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

Esta solicitação exige o cabeçalho ConsistencyLevel definido como eventual porque $count está na solicitação. Para obter mais informações sobre o uso de ConsistencyLevel e $count, consulte Recursos avançados de consulta em objetos de diretório.

Essa solicitação também retorna a contagem dos aplicativos que correspondem à condição de filtro.

GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=owners/$count eq 0 or owners/$count eq 1&$count=true
ConsistencyLevel: eventual

Atribuir um proprietário a um aplicativo

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

Na solicitação a seguir, 8afc02cb-4d62-4dba-b536-9f6d73e9be26 é a ID do objeto para um usuário ou entidade de serviço.

POST https://graph.microsoft.com/v1.0/applications/7b45cf6d-9083-4eb2-92c4-a7e090f1fc40/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Atribuir um proprietário a uma entidade de serviço

Permissão delegada de privilégio mínimo: Application.ReadWrite.All.

A solicitação a seguir faz referência à entidade de serviço usando seu appId. 8afc02cb-4d62-4dba-b536-9f6d73e9be26 é a ID do objeto para um usuário ou entidade de serviço.

POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='46e6adf4-a9cf-4b60-9390-0ba6fb00bf6b')/owners/$ref
Content-Type: application/json

{
    "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/8afc02cb-4d62-4dba-b536-9f6d73e9be26"
}

Bloquear propriedades confidenciais para entidades de serviço

O recurso de bloqueio de instância de aplicativo permite que você proteja propriedades confidenciais de seus aplicativos multilocatário contra adulteração não autorizada. As seguintes propriedades do objeto da entidade de serviço podem ser bloqueadas:

  • keyCredentials em que o tipo de uso é Sign ou Verify.
  • passwordCredentials em que o tipo de uso é Sign ou Verify.
  • propriedade tokenEncryptionKeyId.

Você gerencia o recurso de bloqueio de instância de aplicativo por meio da propriedade servicePrincipalLockConfiguration do objeto de aplicativo do aplicativo multilocatário.

Para bloquear todas as propriedades confidenciais de uma entidade de serviço

Quando isEnabled e allProperties são definidos como true, mesmo que outras propriedades do objeto servicePrincipalLockConfiguration sejam null, todas as propriedades confidenciais da entidade de serviço serão bloqueadas.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "allProperties": true
    }
}

Para bloquear propriedades confidenciais específicas de uma entidade de serviço

O exemplo a seguir bloqueia as propriedades keyCredentials e passwordCredentials da entidade de serviço e permite o recurso de bloqueio da instância do aplicativo.

PATCH https://graph.microsoft.com/beta/applications/a0b7f39e-3139-48aa-9397-f46fb63102f7

{
    "servicePrincipalLockConfiguration": {
        "isEnabled": true,
        "credentialsWithUsageSign": true,
        "credentialsWithUsageVerify": true
    }
}