Я создаю сценарий PowerShell, который создает самозаверяющий сертификат и добавляет его в регистрацию приложения клиента Azure.
Я хочу назначить разрешения на использование разрешения на чтениеgraph.api.
Я собираюсь использовать аутентификацию на основе сертификата. Я смог пройти аутентификацию с помощью сертификата, но мне все еще нужно выяснить, как добавить группу ресурсов или идентификатор подписки, который я предполагаю, к регистрации этого приложения через PS.
$cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject $applicationName -KeySpec KeyExchange -NotAfter (Get-Date).AddYears(1)
$keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$application = New-AzADApplication -DisplayName $applicationName
$objectId = $application.Id
$applicationId = $application.AppId
Write-Host "ID: $($objectId) - AppID: $($applicationId)"
Write-Host "Going to Sleep"
Start-Sleep -Seconds 2
Write-Host "Awake"
$sp = New-AzADServicePrincipal -ApplicationId $applicationId -CertValue $keyValue -StartDate $cert.NotBefore -EndDate $cert.NotAfter
Start-Sleep 5
Add-AzADAppPermission -ObjectId $objectId -ApiId "00000003-0000-0000-c000-000000000000" -PermissionId "5f8c59db-677d-491f-a6b8-5f174b11ec1d"
Write-Host "Generated Thumbprint: $($cert.Thumbprint)"
# Export the certificate to a PFX file
$cert | Export-PfxCertificate -FilePath $certFilePath -Password (ConvertTo-SecureString -String $certPassword -Force -AsPlainText)
Write-Host "Certificate Created and placed in: $($certFilePath)"
Start-Sleep -Seconds 2
Вот какую ошибку я получил.
Новый-AzADServicePrincipal: линия | 53 | $sp = New-AzADServicePrincipal -ApplicationId $applicationId -CertVal … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ | Набор параметров невозможно разрешить с помощью указанных именованных параметров. Один или несколько выданных параметров не могут использоваться вместе, или было предоставлено недостаточное количество параметров.
От: -StartDate $cert.NotBefore -EndDate $cert.NotAfter Кому: -StartDate Get-Date -EndDate (Get-Date).AddYears(1)
Когда я попытался воспроизвести ваш сценарий PowerShell в своей среде, я получил ту же ошибку:
Чтобы устранить ошибку, используйте приведенный ниже сценарий Powershell:
Создание приложения Microsoft Entra ID:
$tenantId = "your_tenant_id"
$applicationName = "your_app_name"
# Create a self-signed certificate
$cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject $applicationName -KeySpec KeyExchange -NotAfter (Get-Date).AddYears(1)
# Get the certificate thumbprint
$thumbprint = $cert.Thumbprint
# Create a new Azure AD application
$app = New-AzADApplication -DisplayName $applicationName
Добавлен сертификат в приложение:
New-AzADAppCredential -ApplicationId $app.AppId -CertValue ([System.Convert]::ToBase64String($cert.GetRawCertData())) -StartDate $cert.NotBefore -EndDate $cert.NotAfter
Колонка разрешения API перед добавлением разрешения API:
Для добавления субъекта-службы и User.Read
разрешения API делегированного типа:
$servicePrincipal = New-AzADServicePrincipal -ApplicationId <application_id>
#For adding delegated type User.Read permission
Add-AzADAppPermission -ObjectId <object_id> -ApiId 00000003-0000-0000-c000-000000000000 -PermissionId e1fe6dd8-ba31-4d61-89e7-88639da4683d
Экспортный сертификат:
$certFilePath = "<FilePath>"
$certPassword = "<YourPassword>"
#Exporting certificate
$cert | Export-PfxCertificate -FilePath $certFilePath -Password (ConvertTo-SecureString -String $certPassword -Force -AsPlainText)
Write-Host "Certificate Created and placed in: $($certFilePath)"
Ссылка:
Создайте самозаверяющий общедоступный сертификат для аутентификации вашего приложения.
Спасибо за ваш ответ. Я очень близко. Единственная ошибка сейчас: Add-AzADAppPermission -ObjectId $app. -Пид "00000003-0000-0000-C000-000000000000" -PermissionId "E1FE6DD8-BA31-4D61-89E7-88639DA4683D" PS C: \ users \ Andrew> $ App = Get-Azadapppermiss Users\Andrew> Add-AzADAppPermission -ObjectId $app.AppId -ApiId "00000003-0000-0000-c000-000000000000" -PermissionId "e1fe6dd8-ba31-4d61-89e7-88639da4683d" Add-AzADAppPermission: невозможно обработать аргумент преобразование по параметру ' Идентификатор объекта». Невозможно преобразовать значение null в тип «System.Guid».
Попробуйте Add-AzADAppPermission -ObjectId $app.Id -ApiId 00000003-0000-0000-c000-000000000000 -PermissionId e1fe6dd8-ba31-4d61-89e7-88639da4683d
Выход
Спасибо! за ваш ответ, который преодолел мое препятствие!
Можете ли вы отредактировать вопрос, поделившись скриншотом сообщения об ошибке?