Recuperación de una entidad de servicio existente
Enumerar entidades de servicio
Si ya tiene una entidad de servicio existente que desea usar, en este artículo se detalla cómo recuperar la entidad de servicio existente.
Para obtener una lista de las entidades de servicio de un inquilino, use az ad sp list. De forma predeterminada, este comando devuelve las primeras 100 entidades de servicio del inquilino. Para obtener todas las entidades de servicio del inquilino, use el parámetro --all
. Generar esta lista puede tardar tiempo, por lo que se recomienda filtrarla con uno de los parámetros siguientes:
--display-name
solicita las entidades de servicio que tengan un prefijo que coincida con el nombre proporcionado. El nombre para mostrar de una entidad de servicio es el valor que se establece con el parámetro--name
durante la creación. Si no ha configurado--name
durante la creación de la entidad de servicio, el prefijo del nombre esazure-cli-
.--spn
filtra por los nombres de entidad de servicio que coincidan exactamente. El nombre de la entidad de servicio siempre empieza conhttps://
. Si el valor utilizado para--name
no era un URI, este valorhttps://
, seguido por el nombre para mostrar.--show-mine
solicita solo las entidades de servicio creadas por el usuario que ha iniciado sesión.--filter
toma un filtro OData y filtra en el lado del servidor. Se recomienda este método frente al filtrado en el lado del cliente con el parámetro--query
de la CLI. Para más información acerca de los filtros OData, consulte la sintaxis de expresiones OData para filtros.
La información que se devuelve para los objetos de entidad de servicio es detallada. Para obtener solo la información necesaria para iniciar sesión, use la cadena de consulta [].{id:appId, tenant:appOwnerOrganizationId}
. Este es un ejemplo que obtiene la información de inicio de sesión de todas las entidades de servicio creadas por el usuario que haya iniciado la sesión actual:
az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table
Si trabaja en una organización grande con muchas entidades de servicio, pruebe estos ejemplos de comandos:
# 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
Importante
Tanto el usuario como el inquilino se pueden recuperar con az ad sp list y az ad sp show, pero los secretos de autenticación o el método de autenticación no están disponibles. Los secretos de los certificados de Azure Key Vault se pueden recuperar con az keyvault secret show, pero no otros secretos que se almacenen de forma predeterminada. Si olvida un método de autenticación o un secreto, restablezca las credenciales de la entidad de servicio.
Propiedades de la entidad de servicio
Al obtener una lista de las entidades de servicio que usan az ad sp list
, hay muchas propiedades de salida a las que puede hacer referencia en el script.
[
{
"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
}
}
]
Use el parámetro --query
para recuperar y almacenar las propiedades de la entidad de servicio en variables.
# 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"
Pasos siguientes
Ahora que ha aprendido a recuperar la entidad de servicio existente, continúe con el paso siguiente para aprender a administrar los roles de entidad de servicio.