Hantera appar

En app måste registreras i Microsoft Entra ID innan Microsofts identitetsplattform kan ge den behörighet att komma åt data som lagras i Microsoft Entra eller Microsoft 365 klienter. Det här villkoret gäller för appar som du utvecklar själv, som din klientorganisation äger eller som du får åtkomst till via en aktiv prenumeration.

Många inställningar för appar registreras som objekt som kan nås, uppdateras eller tas bort med hjälp av Microsoft Entra PowerShell. Dessa objekt omfattar program, tjänstens huvudnamn och approlltilldelningar.

I den här artikeln får du lära dig att hantera appregistreringar och tjänsthuvudobjekt med hjälp av Microsoft Entra PowerShell. Den omfattar registrering av program, konfiguration av egenskaper, tilldelning av behörigheter och hantering av appägarskap.

Förutsättningar

Om du vill hantera appar med Microsoft Entra PowerShell behöver du:

Registrera en app

Följande begäran skapar en app genom att endast ange den obligatoriska displayName egenskapen.

Connect-Entra -Scopes 'Application.ReadWrite.All'
New-EntraApplication -DisplayName 'My new application'

DisplayName        Id                                   AppId                                SignInAudience PublisherDomain
-----------        --                                   -----                                -------------- -----------
My new application aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb bbbbbbbb-1111-2222-3333-cccccccccccc MyOrg

Programmet tilldelas ett ID som är unikt för appar i klientorganisationen och ett appId som är globalt unikt i Microsoft Entra ekosystemet.

Skapa ett huvudnamn för tjänsten för ett program

Connect-Entra -Scopes 'Application.ReadWrite.All'
$myApp = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
New-EntraServicePrincipal  -AppId $myApp.AppId -DisplayName 'My new service principal'
DisplayName Id       AppId                                SignInAudience                       ServicePrincipalType
----------- --       -----                                --------------                       --------------------
My new application   bbbbbbbb-1111-2222-3333-cccccccccccc 00001111-aaaa-2222-bbbb-3333cccc4444 MyOrg Application

Konfigurera grundläggande egenskaper för din app

Du kan konfigurera flera egenskaper för din app. I följande exempel visas hur du uppdaterar visningsnamnet för ett program.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraApplication -ApplicationId $application.Id -DisplayName 'Contoso application'

Du kan också använda pipelining för att uppdatera egenskaperna för ett program.

Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraApplication -Filter "DisplayName eq 'My new application'" | Set-EntraApplication -DisplayName 'Contoso application'

Mer information finns i Set-EntraApplication.

Begränsa appinloggning till endast tilldelade identiteter

Att begränsa appinloggningar till endast tilldelade identiteter med hjälp av Microsoft Entra PowerShell säkerställer att endast behöriga användare kan komma åt dina program, vilket ökar säkerheten och kontrollen.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
Set-EntraServicePrincipal -ServicePrincipalId $application.Id -AppRoleAssignmentRequired $true

Tilldela behörigheter till en app

Du tilldelar behörigheter till en app via Microsoft Entra administrationscenter eller med hjälp av Microsoft Entra PowerShell. I PowerShell uppdaterar du appens requiredResourceAccess egenskap, inklusive både befintliga och nya behörigheter. Om du bara skickar nya behörigheter tas alla befintliga behörigheter bort som inte godkänns.

Tilldelning av behörigheter beviljar dem inte automatiskt till appen. Du måste fortfarande bevilja administratörsmedgivande med hjälp av Microsoft Entra administrationscenter.

Connect-Entra -Scopes 'Application.ReadWrite.All'
$application = Get-EntraApplication -Filter "DisplayName eq 'My new application'"
$requiredResourceAccess = @(
    @{resourceAppId    = '00000003-0000-0000-c000-000000000000'
        resourceAccess = @(
            @{
                id   = 'c79f8feb-a9db-4090-85f9-90d820caa0eb'
                type = 'Scope'
            }
            @{
                id   = '9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30'
                type = 'Role'
            } )
    })
Set-EntraApplication -ApplicationId $application.Id -RequiredResourceAccess $requiredResourceAccess 

Hantera ägare

Hämta ägaren till ett huvudnamn för tjänsten

Connect-Entra -Scopes 'Application.ReadWrite.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalOwner -ServicePrincipalId $servicePrincipal.Id -All | Select-Object Id, DisplayName, '@odata.type'

Du kan också använda pipelining för att hämta tjänstens huvudnamns ägare.

Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'" | Get-EntraServicePrincipalOwner | Select-Object Id, DisplayName, '@odata.type'

Tilldela en ägare till ett huvudnamn för tjänsten

Connect-Entra -Scopes 'Application.ReadWrite.All', 'Application.ReadWrite.OwnedBy'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
$owner = Get-EntraUser -UserId 'SawyerM@contoso.com'
Add-EntraServicePrincipalOwner -ServicePrincipalId $servicePrincipal.Id -OwnerId $owner.Id

Det här exemplet visar hur du lägger till en ägare till tjänstens huvudnamn.

  • -ServicePrincipalId – anger den unika identifieraren (ObjectId) för tjänstens huvudnamn som du vill lägga till en ägare till.
  • -OwnerId – anger den unika identifieraren (ObjectId) för den användare eller grupp som du vill lägga till som ägare till det angivna tjänstens huvudnamn.

Hämta en lista över alla program utan användartilldelning

Använd följande kommando för att hämta en lista över alla program som inte kräver användartilldelning.

Connect-Entra -Scopes 'Application.ReadWrite.All'
Get-EntraServicePrincipal -All | Where-Object {$_.appRoleAssignmentRequired -ne 'True'}
DisplayName                          Id                                     AppId                                  SignInAudience       ServicePrincipalType
-----------------------------------  -----------------------------------    ---------------------------------      -----------------    ------------------
Microsoft password reset service     00aa00aa-bb11-cc22-dd33-44ee44ee44ee   93625bc8-bfe2-437a-97e0-3d0060024faa   AzureADMultipleOrgs  Application
Microsoft.Azure.SyncFabric           11bb11bb-cc22-dd33-ee44-55ff55ff55ff   00000014-0000-0000-c000-000000000000   AzureADMultipleOrgs  Application
Azure Security Insights              22cc22cc-dd33-ee44-ff55-66aa66aa66aa   98785600-1bb7-4fb9-b9fa-19afe2c8a360   AzureADMultipleOrgs  Application

Hämta objekt som ägs av eller har skapats av ett tjänsthuvudnamn

Objekt som skapats av tjänsthuvudnamn

Connect-Entra -Scopes 'Application.Read.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalCreatedObject -ServicePrincipalId $servicePrincipal.Id

Objekt som ägs av ett service principal

Connect-Entra -Scopes 'Application.Read.All'
$servicePrincipal = Get-EntraServicePrincipal -Filter "displayName eq 'Helpdesk Application'"
Get-EntraServicePrincipalOwnedObject -ServicePrincipalId $servicePrincipal.Id -All | Select-Object Id, DisplayName, '@odata.type'

Program med hemligheter och certifikat som håller på att gå ut

Upphörande av programhemligheter eller lösenord

$expirationThreshold = (Get-Date).AddDays(30)
$appsWithExpiringPasswords = Get-EntraApplication -All | Where-Object { $_.PasswordCredentials } | 
ForEach-Object {
    $app = $_
    $app.PasswordCredentials | Where-Object { $_.EndDate -le $expirationThreshold } | 
    ForEach-Object {
        [PSCustomObject]@{
            DisplayName       = $app.DisplayName
            AppId             = $app.AppId
            SecretDisplayName = $_.DisplayName
            KeyId             = $_.KeyId
            ExpiringSecret    = $_.EndDate
        }
    }
}
$appsWithExpiringPasswords | Format-Table DisplayName, AppId, SecretDisplayName, KeyId, ExpiringSecret -AutoSize

Certifikat som upphör att gälla

$expirationThreshold = (Get-Date).AddDays(30)
$appsWithExpiringKeys = Get-EntraApplication -All | Where-Object { $_.KeyCredentials } | 
ForEach-Object {
    $app = $_
    $app.KeyCredentials | Where-Object { $_.EndDate -le $expirationThreshold } | 
    ForEach-Object {
        [PSCustomObject]@{
            DisplayName            = $app.DisplayName
            AppId                  = $app.AppId
            CertificateDisplayName = $_.DisplayName
            KeyId                  = $_.KeyId
            ExpiringKeys           = $_.EndDate
        }
    }
}
$appsWithExpiringKeys | Format-Table DisplayName, AppId, CertificateDisplayName, KeyId, ExpiringKeys -AutoSize