Skip to content
Go back

Tipos de Aplicações

Published:  at  10:00 AM

Tipos de Aplicações no Microsoft Entra ID

O Entra ID suporta diversos tipos de aplicações, cada um com características e fluxos de autenticação específicos:

Aplicações Confidenciais vs. Públicas

Por Padrão de Arquitetura

Identificação via Microsoft Graph

Para listar e categorizar aplicações no diretório:

# Conectar ao Microsoft Graph
Connect-MgGraph -Scopes "Application.Read.All"

# Obter todas as aplicações
$apps = Get-MgApplication -All

# Classificar aplicações por tipo
$appTypes = @()

foreach ($app in $apps) {
    # Determinar se é confidencial ou pública
    $isConfidential = $false
    if ($app.PasswordCredentials.Count -gt 0 -or $app.KeyCredentials.Count -gt 0) {
        $isConfidential = $true
    }
    
    # Determinar o tipo de plataforma
    $isSPA = $false
    $isNative = $false
    $isWeb = $false
    $isDaemon = $false
    
    # Verificar pela plataforma registada
    foreach ($redirect in $app.Spa.RedirectUris) {
        if (-not [string]::IsNullOrEmpty($redirect)) {
            $isSPA = $true
            break
        }
    }
    
    foreach ($redirect in $app.PublicClient.RedirectUris) {
        if (-not [string]::IsNullOrEmpty($redirect)) {
            $isNative = $true
            break
        }
    }
    
    foreach ($redirect in $app.Web.RedirectUris) {
        if (-not [string]::IsNullOrEmpty($redirect)) {
            $isWeb = $true
            break
        }
    }
    
    # Identificar aplicações daemon pela permissão de aplicação
    $appPermissions = $app.RequiredResourceAccess | 
        ForEach-Object { $_.ResourceAccess } | 
        Where-Object { $_.Type -eq "Role" }
    
    if ($appPermissions.Count -gt 0 -and $isConfidential) {
        $isDaemon = $true
    }
    
    # Determinar o tipo principal
    $primaryType = "Indeterminado"
    if ($isDaemon) { $primaryType = "Daemon/Serviço" }
    elseif ($isSPA) { $primaryType = "SPA" }
    elseif ($isNative) { $primaryType = "Nativa" }
    elseif ($isWeb) { $primaryType = "Web" }
    
    $appTypes += [PSCustomObject]@{
        DisplayName = $app.DisplayName
        AppId = $app.AppId
        IsConfidential = $isConfidential
        IsSPA = $isSPA
        IsNative = $isNative
        IsWeb = $isWeb
        IsDaemon = $isDaemon
        PrimaryType = $primaryType
        CreatedDateTime = $app.CreatedDateTime
    }
}

# Exibir aplicações por tipo
$appTypes | Format-Table DisplayName, AppId, PrimaryType, IsConfidential -AutoSize

Resumo de Tipos de Aplicações no Diretório

Para gerar um resumo dos tipos de aplicações:

# Contagem por tipo principal
$typeCounts = $appTypes | Group-Object -Property PrimaryType | Select-Object Name, Count

# Contagem por característica
$confidentialCount = ($appTypes | Where-Object { $_.IsConfidential }).Count
$publicCount = ($appTypes | Where-Object { -not $_.IsConfidential }).Count

# Exibir resumo
Write-Output "=== Resumo de Tipos de Aplicações ==="
Write-Output "Total de Aplicações: $($apps.Count)"
Write-Output ""
Write-Output "Por Categoria de Segurança:"
Write-Output "- Aplicações Confidenciais: $confidentialCount"
Write-Output "- Aplicações Públicas: $publicCount"
Write-Output ""
Write-Output "Por Tipo de Plataforma:"
foreach ($type in $typeCounts) {
    Write-Output "- $($type.Name): $($type.Count)"
}

Boas Práticas por Tipo de Aplicação

Aplicações Web (Confidenciais)

Aplicações SPA (Públicas)

Aplicações Nativas (Públicas)

Aplicações Daemon/Serviço (Confidenciais)

Recomendações de Governança de Aplicações


Suggest Changes

Previous Post
Usuários Comprometidos
Next Post
Fluxo Device Code