Я создаю Azure Function (размещенную в плане обслуживания приложений), которая будет перечислять активы в моей подписке и что-то делать с ними.Функции Azure & Powershell - не удалось войти в AzureRmAccount с помощью сертификата
У меня есть сайт создан таким образом, что я ожидаю, что это работает, но Login-AzureRmAccount ошибки каждый раз, когда с уведомлением
Login-AzureRmAccount : No certificate was found in the certificate store with thumbprint xxxxxxxx
Вот некоторые важные детали:
Сначала я создать сертификат:
$cert = New-SelfSignedCertificate -CertStoreLocation cert:\currentuser\my -Subject "cn=$appCommonName" ...etc...
$keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$aNewApp = New-AzureRmADApplication -DisplayName $AzureADApplicationName -HomePage $AppHomePage -IdentifierUris $appIDUri -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
#export the cert for use future upload to Azure
$password = ConvertTo-SecureString -String "supersecrettpassword" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "Export-cert.pfx" -Password $password
Export-Certificate -Type CERT -Cert $cert -FilePath "Export-cert.cer"
Позже я резерва Моя_служба Principal и дать ему доступ на чтение
$theSvcPrincipal = New-AzureRmADServicePrincipal -ApplicationId $ApplicationId
$testRole = Get-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName $ApplicationId
Через магию ARM развертывания я в конечном итоге с двумя настройками приложения в веб-сайт, который размещен лазурное функцию: WEBSITE_LOAD_CERTIFICATES
со значением * и CertThumbprint
со значением отпречаток сертификата, который я» ve загрузил область SSL certificates
.
Наконец, после того, как шаблон ARM развернут, я загрузить сертификат, следуя инструкциям из this Stack Overflow post
Учитывая все, что подготовительные работы, я бы ожидать, чтобы это работало в моей функции:
Login-AzureRmAccount -ServicePrincipal -CertificateThumbprint $env:CertThumbprint -ApplicationId $env:ApplicationId -TenantId $env:TenantId
но когда эта строка выполняется, несмотря на то, что у меня есть сертификат на веб-сайте с соответствующим отпечатком пальца, я получаю ошибку no cert found wiht matching thumbprint
.
В сценарии назначения роли вы используете Get-AzureRmRoleAssignment. Чтобы установить роль читателя, я считаю, что командлет для использования - New-AzureRmRoleAssignment. –
Вы правы. Этот фрагмент был несколько выключен - это часть моего кода повтора, ожидая, пока ServicePrincipal будет распространяться по Azure. – Josh
Вам нужно использовать сертификаты? Вот пример, который не требует сертификатов. http://stackoverflow.com/questions/40838619/azure-function-role-like-permissions-to-stop-azure-virtual-machines/40883318#40883318 –