2017-02-10 12 views
1

Я пытаюсь получить токен доступа без кода auth, поэтому, используя метод ниже, вы можете его получить. но я столкнулся вопрос как «тело запроса должно содержать следующий параметр„client_secret или client_assertion“»Попытка получить токен доступа с помощью AcquireTokenAsync, но получение неудачных с параметрами тела исключения должно содержать «client_secret или client_assertion»

Вы можете предложить необходимые указатели на это. Запуск этого в console application.

try 
{ 
    // Use the 'Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory' Nuget package for auth. 
    AuthenticationContext authContext = new AuthenticationContext(authority); 
    AuthenticationResult authResult = authContext.AcquireTokenAsync(resourceId, clientId, new UserCredential(crmAdminUserName, crmAdminPassword)).Result; 
} 
catch (Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 
+0

Может ли это ответить на ваш вопрос: http://stackoverflow.com/a/41159005/1658906? – juunas

+0

Проблема в том, что эта версия ADAL не поддерживает корректный поток паролей. Он также должен отправить секрет клиента в звонок. Вот почему вы получаете сообщение об ошибке. Но я уже дал решение этому в ответ, который я связал, поэтому я не буду писать его здесь снова. – juunas

+0

глядя в него –

ответ

0

Есть два вида клиентов на Azure AD, один является общедоступным, а другой является конфиденциальной, которая требует обеспечить тайну, когда мы получаем токен.

Чтобы устранить эту проблему, вы можете зарегистрировать публичный клиент (собственное клиентское приложение) в этом сценарии.

Here - полезный документ об интеграции приложений с активным каталогом Azure.

0

Предполагая app is registered на портале, и вы знаете идентификатор клиента, клиент секретный ключ/ключ приложения, авторитет и аудитории

Затем этот фрагмент кода поможет вам доступ токенов

AuthenticationContext authContext = new AuthenticationContext(authority); ClientCredential clientCredential = new ClientCredential(clientId, clientkey); AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(ResourceUrl, clientCredential);

Идентификатор ресурса/URL ресурса, например https://manage.windowsazure.com/ {заполнителем-для-вашего-лазурного-ад-арендатор-имя} .onmicrosoft.com

AcquireTokenAsync документация доступна документации класса here

AuthenticationContext доступен из here

+0

аудитория? – DannyThunder

+0

@ DannyThunder Я отредактировал фрагмент кода, это URL ресурса для вас Azure AD Tenant. См. Отредактированный текст –