我試圖在Azure的這種方式註冊應用(運行在C#應用程序這個腳本,一些變量與運行文本模板生成,<#=#>是常數則):Azure AD應用程序 - 如何從C#或Powershell設置一些參數?
Import-Module AzureRM.Resources
Login-AzureRmAccount
$cert = New-SelfSignedCertificate -CertStoreLocation "cert:\CurrentUser\My" -Subject "CN=Test" -KeySpec KeyExchange
$keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$app = New-AzureRmADApplication -DisplayName "<#= Model.ManageApplicationName #>" -HomePage "https://<#= Model.Domain #>/<#= Model.ManageApplicationName #>" -IdentifierUris "https://<#= Model.Domain #>/<#= Model.ManageApplicationName #>" -AvailableToOtherTenants $true -CertValue $keyValue -EndDate $cert.NotAfter -StartDate $cert.NotBefore
$app.ApplicationId
New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId
Start-Sleep -s 30
New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId.Guid
這工作不錯,我可以在門戶網站看到應用程序...
然後,我需要獲取訪問令牌,以便在Microsoft.Azure.Management.Resources庫中使用它來管理一些資源。
因此,我需要獲取應用程序密鑰/客戶端密鑰,通過ClientCredentials獲取令牌,是否可以在Powershell或通過API執行此操作?
然後我試着以另一種方式做到這一點。我跟着從文件本教程:https://azure.microsoft.com/en-us/documentation/articles/resource-manager-api-authentication/
我發現這個問題致電https://login.microsoftonline.com/ {租戶ID}/OAuth2用戶/授權的教程,當然有我自己的價值觀:
AADSTS65005:客戶端應用程序已請求訪問資源....此請求失敗,因爲客戶端未在其requiredResourceAccess列表中指定此資源。
- 當我在門戶網站中設置Windows Azure服務管理API權限時,此問題已得到解決 - 可以通過C#或Powershell完成嗎?
AADSTS50011:沒有爲應用程序註冊回覆地址。
- 當我設置回覆URL時 - 這可以從C#或Powershell完成嗎?
我很困惑,因爲在文檔中沒有關於這個額外的手動設置。問題是需要使整個過程自動化。所以我需要在AD中創建應用程序並在Portal中沒有任何點擊的情況下獲取訪問令牌。希望這是可能的。
謝謝你的幫助。
嗯,我可以讓用戶輸入或在最壞的情況下給我他的登錄名和密碼。我仍然需要一些註冊的應用程序?我真的需要以某種方式做到這一點,該用戶只是給我他的信譽,其他一切都是爲他完成的...... – Enemim
是的,你是對的。要使用Azure AD Graph授予權限,我們仍然需要一個已註冊且有權允許我們執行此操作的應用程序。 –
好吧,我明白圖想。任何機會以另一種方式做到這一點,就像一些Powershell腳本一樣?或圖是我如何設置權限的唯一方式? – Enemim