2

В настоящее время я создаю свои приложения в каталоге Azure Active вручную, когда есть запрос на новую среду. Я изучал способы создания этих приложений из кода через REST API. Я добился успеха в создании пользователей и групп в существующих приложениях, используя «client_credentials», как показано.Как программно создавать приложения в Azure AD

ClientCredential clientCred = new ClientCredential(clientID, clientSecret); 
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resAzureGraphAPI, clientCred); 

Подобным же образом я пытался использовать 'access_token' генерируется сверху, чтобы создать новое приложение adClient.Applications.AddApplicationAsync (NewApplication) .Wait()

Но это бросает error- " Недостаточно привилегий для завершения операции. "

Я смотрел другие темы и страницу Azure AD msdn и получается, что поток client_credentials не поддерживает создание/обновление приложений.

Adding Applications programmatically in Azure AD using Client Credentials Flow

выше нить также отметил, что способ, чтобы обойти это с помощью «grant_type = пароль» поток. Я попробовал это, как было предложено, но я продолжаю получать следующую ошибку, которая не имеет смысла для меня.

"error": "invalid_grant", 
    "error_description": "AADSTS50034: To sign into this application the account must be added to the 1283y812-2u3u-u293u91-u293u1 directory.\r\nTrace ID: 66da9cf9-603f-4f4e-817a-cd4774619631\r\nCorrelation ID: 7990c26f-b8ef-4054-9c0b-a346aa7b5035\r\nTimestamp: 2016-02-21 23:36:52Z", 
    "error_codes": [ 
     50034 
    ], 

Вот полезная нагрузка и конечная точка, на которую я нажимаю. Пользователь, который передается является владельцем нашей эры, где я хочу, чтобы создать приложение

endpoint:https://login.windows.net/mytenantID/oauth2/token 

post data 
resource 00000002-0000-0000-c000-000000000000 
client_id id 
client_secret secret 
grant_type password 
username [email protected] 
password password 
scope  openid 

Любые мысли или предложения о том, где я мог бы идти неправильно было бы оценено.

ответ

0

Вы можете использовать PowerShell для создания приложения:

$servicePrincipalName =”Your Client App Name” 
$sp = New-MsolServicePrincipal -ServicePrincipalNames $servicePrincipalName -DisplayName $servicePrincipalName -AppPrincipalId “Your Client ID" 
New-MsolServicePrincipalCredential -ObjectId $sp.ObjectId -Type Password -Value “Your client secret” 
Add-MsolRoleMember -RoleObjectId “62e90394-69f5-4237-9190-012177145e10" -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId 

Роль обозначается 62e90394-69f5-4237-9190-012177145e10 является администратором роль, и это может быть отрегулировано в соответствии с требованиями к ObjectId любого другой роли. Запустите Get-MsolRole, чтобы получить список ролей и ObjectIds.

Затем вы можете запустить этот код из своего приложения или запустить его вручную. Вам также необходимо будет запустить код подключения до вышеуказанного, что-то вроде:

$loginAsUserName = "Your Tenancy Admin Account" 
$loginAsPassword = "Your Tenancy Admin Account Password" 

$secpasswd = ConvertTo-SecureString $loginAsPassword -AsPlainText -Force 
$creds = New-Object System.Management.Automation.PSCredential ($loginAsUserName, $secpasswd) 

Connect-MsolService -Credential $creds 
+0

Я первый связан вход с 'Connect-MsolService'. «Get-MsolRole» перечисляет кучу ролей и их имена. Затем я хотел проверить свою роль. поэтому я уволил «Get-MsolUserRole -UserPrincipalName test @ mydomain.com». Это было пусто. Когда я добрался до создания «New-MsolServicePrinicpal», я всегда получаю ошибку - _Access denied. у вас нет разрешения на доступ к этому командлету. – Srikanth

0

Мне удалось создать приложение в моем арендаторе. Арендатор AD, который я использовал для создания приложения, был проверен для другого домена. В основном я включил пользователя из этого домена, и с помощью потока resource_type = password удалось создать токен доступа.Далее, запуская следующие строки кода сделал трюк

ActiveDirectoryClient adClient = new ActiveDirectoryClient(
       serviceRoot, 
       AccessToken); 
adClient.Applications.AddApplicationAsync(newApplication).Wait(); 
0

Проверьте следующие вещи, которые кажутся немного не в вашем POST к OAuth маркеров конечной точки:

  • При желании доступ к Graph API вашего Azure AD, вам необходимо передать https://graph.windows.net в качестве параметра тела resource; это (imho) недостаточно хорошо документировано, но это то, что вам нужно сделать
  • Как client_id и client_secret вам необходимо передать идентификатор клиента и ключ предопределенного приложения внутри вашего Azure AD, который, в свою очередь, предоставил разрешения на на пользовательский уровень; они должны быть достаточно, чтобы добавить приложения
  • Параметр scope не используется, я думаю; вы получите требования, которые вы определили в управлении AD портала Azure назад (назначенные разрешения для приложения)

Это должно оказать вам маркер доступа вы можете впоследствии использовать на https://graph.windows.net/tenantId/ конечных точек.

Надежда, что помогает, Мартин