Hämta ett befintligt tjänsthuvudnamn

Lista tjänstens huvudnamn

Om du redan har ett befintligt huvudnamn för tjänsten som du vill använda förklarar det här steget hur du hämtar det befintliga tjänstens huvudnamn.

En lista över tjänstens huvudnamn i en klientorganisation kan hämtas med az ad sp-listan. Som standard returnerar det här kommandot de första 100 huvudnamnen för tjänsten för klientorganisationen. Använd parametern --all för att hämta alla klientorganisationens tjänsthuvudnamn. Det kan ta lång tid att hämta den här listan, så vi rekommenderar att du filtrerar listan med någon av följande parametrar:

  • --display-name begär tjänstens huvudnamn som har ett prefix som matchar det angivna namnet. Visningsnamnet för tjänstens huvudnamn är värdet som anges med parametern --name när du skapar. Om du inte angav --name när tjänstens huvudnamn skapades är azure-cli-namnprefixet .
  • --spn filter för exakt matchning av tjänstens huvudnamn. Tjänstens huvudnamn börjar alltid med https://. Om värdet du använde för --name inte var en URI följs det här värdet https:// av visningsnamnet.
  • --show-mine begär endast tjänstens huvudnamn som skapats av den inloggade användaren.
  • --filter tar ett OData-filter och utför filtrering på serversidan . Den här metoden rekommenderas för filtrering av klientsidan med CLI-parametern --query . Mer information om OData-filter finns i OData-uttryckssyntax för filter.

Informationen som returneras för objekt för tjänstens huvudnamn är utförlig. Om du bara vill hämta den information som krävs för inloggning använder du frågesträngen [].{id:appId, tenant:appOwnerOrganizationId}. Här är ett exempel som hämtar inloggningsinformationen för alla tjänsthuvudnamn som skapats av den inloggade användaren:

az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table

Om du arbetar i en stor organisation med många tjänsthuvudnamn kan du prova följande kommandoexempel:

# get service principals containing a keyword
az ad sp list --display-name mySearchWord --output table

# get service principals using an OData filter
az ad sp list --filter "displayname eq 'myExactServicePrincipalName'" --output json

# get a service principal having a certain servicePrincipalNames property value
az ad sp list --spn https://spURL.com

Viktigt!

Både användaren och klientorganisationen kan hämtas med az ad sp-listan och az ad sp show, men autentiseringshemligheter eller autentiseringsmetoden är inte tillgänglig. Hemligheter för certifikat i Azure Key Vault kan hämtas med az keyvault secret show, men inga andra hemligheter lagras som standard. Om du glömmer en autentiseringsmetod eller hemlighet återställer du autentiseringsuppgifterna för tjänstens huvudnamn.

Egenskaper för tjänstens huvudnamn

När du får en lista över tjänstens huvudnamn med hjälp az ad sp listav finns det många utdataegenskaper som du kan referera till i skriptet.

[
  {
    "accountEnabled": true,
    "addIns": [],
    "alternativeNames": [],
    "appDescription": null,
    "appDisplayName": "myServicePrincipalName",
    "appId": "00000000-0000-0000-0000-000000000000",
    "appOwnerOrganizationId": "00000000-0000-0000-0000-000000000000",
    "appRoleAssignmentRequired": false,
    "appRoles": [],
    "applicationTemplateId": null,
    "createdDateTime": null,
    "deletedDateTime": null,
    "description": null,
    "disabledByMicrosoftStatus": null,
    "displayName": "myServicePrincipalName",
    "homepage": "https://myURL.com",
    "id": "00000000-0000-0000-0000-000000000000",
    "info": {
      "logoUrl": null,
      "marketingUrl": null,
      "privacyStatementUrl": null,
      "supportUrl": null,
      "termsOfServiceUrl": null
    },
    "keyCredentials": [],
    "loginUrl": null,
    "logoutUrl": null,
    "notes": null,
    "notificationEmailAddresses": [],
    "oauth2PermissionScopes": [
      {
        "adminConsentDescription": "my admin description",
        "adminConsentDisplayName": "my admin display name",
        "id": "00000000-0000-0000-0000-000000000000",
        "isEnabled": true,
        "type": "User",
        "userConsentDescription": "my user description",
        "userConsentDisplayName": "my user display name",
        "value": "user_impersonation"
      }
    ],
    "passwordCredentials": [],
    "preferredSingleSignOnMode": null,
    "preferredTokenSigningKeyThumbprint": null,
    "replyUrls": [],
    "resourceSpecificApplicationPermissions": [],
    "samlSingleSignOnSettings": null,
    "servicePrincipalNames": [
      "00000000-0000-0000-0000-000000000000",
      "https://myURL.com"
    ],
    "servicePrincipalType": "Application",
    "signInAudience": null,
    "tags": [
      "WindowsAzureActiveDirectoryIntegratedApp"
    ],
    "tokenEncryptionKeyId": null,
    "verifiedPublisher": {
      "addedDateTime": null,
      "displayName": null,
      "verifiedPublisherId": null
    }
  }
]

Använd parametern --query för att hämta och lagra egenskaper för tjänstens huvudnamn i variabler.

# Bash script
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
userConsentDescr=$(az ad sp list --display-name myServicePrincipalName --query "[].{ucs:oauth2PermissionScopes.userConsentDescription[0]}" --output tsv)
echo "Using appId $spID in tenant $tenantID for $userConsentDescr"

Nästa steg

Nu när du har lärt dig hur du hämtar ditt befintliga huvudnamn för tjänsten går du vidare till nästa steg för att lära dig hur du hanterar tjänstens huvudnamnsroller.