Powershell - New-AzureRmADServicePrincipal - получение секретного свойства не работает? - PullRequest
1 голос
/ 29 января 2020

Когда я пытаюсь запустить код ниже

$ServicePrincipalName = "MY SPN name"
$ScopeSubscriptionId = "Subscription ID"

$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com" -ErrorAction Stop

$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop

Я не могу получить секретное свойство из объекта "$ sp". Я полностью знаю, что это секретная строка и должна приниматься следующим образом:

$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret)
$UnsecureSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

Когда я удаляю параметр ApplicationId из второй строки, все работает правильно.

$sp = New-AzADServicePrincipal -DisplayName $ServicePrincipalName -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop

Есть идеи, почему это так работает? Хотя я заметил, что такое поведение имело место в последние дни.

1 Ответ

2 голосов
/ 29 января 2020

Поскольку при использовании двух приведенных ниже команд он не создаст для вас секрет автоматически.

$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com" -ErrorAction Stop    
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop

enter image description here

Вы также можете проверить это в портале:

enter image description here

Когда вы используете команду без -ApplicationId для создания субъекта службы, он создаст субъект службы вместе с Приложение AD (регистрация приложения), и оно также автоматически создаст для вас секрет.

$sp = New-AzADServicePrincipal -DisplayName $ServicePrincipalName -Scope /subscriptions/$ScopeSubscriptionId -ErrorAction Stop

enter image description here

Проверьте его на портале:

enter image description here


Если вы хотите использовать команду с -ApplicationId, вы можете создать секрет для своего приложения AD вручную, вы можете использовать New-AzADAppCredential, вы можете установить секретное значение самостоятельно, в моем примере секрет password01!.

$AzureAdApplication = New-AzADApplication -DisplayName $ServicePrincipalName -HomePage "https://$ServicePrincipalName.local" -IdentifierUris "https://$ServicePrincipalName.com"
$sp = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Scope /subscriptions/$ScopeSubscriptionId 

$SecureStringPassword = ConvertTo-SecureString -String "password01!" -AsPlainText -Force
New-AzADAppCredential -ApplicationId $AzureAdApplication.ApplicationId -Password $SecureStringPassword -EndDate (Get-Date).AddYears(1)

enter image description here

Помимо , если вы просто хотите сгенерировать случайное значение для секрета, вам нужно использовать New-AzureADApplicationPasswordCredential в AzureAD модуле, см. Эту ссылку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...