2016-11-14 3 views
0
  • У меня есть веб-приложение, которое вызывается от имени пользователя службой.
  • У меня есть идентификатор пользователя, но не его токен аутентификации.

Моя цель, чтобы проверить, принадлежит ли данный пользователь определенной группе.Запрос API диаграммы AAD как конкретного пользователя

Я пытаюсь подключиться к графике с учетной записью службы, но я не знаю, как. Я пробовал смотреть на UserPasswordCredential, но AcquireTokenAsync не принимает это как аргумент, но он принимает UserAssertion У меня возникли проблемы с поиском документации по правильной конструкции этого объекта.

Любая помощь будет оценена по достоинству.

+0

Почему вы хотите запросить как этот пользователь? почему вы не можете просто запросить getMemberGroups? https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/functions-and-actions#getMemberGroups – 4c74356b41

+0

@ 4c74356b41 Я хочу запросить в качестве моей учетной записи службы, чтобы проверить, принадлежит ли этот пользователь к группа. Я не хочу запрашивать этот пользователь. – ohmusama

ответ

2

Если вы разрабатывали с .Net Framework, то AcquireTokenAsync действительно обеспечивают обмен данными с помощью UserPasswordCredential.

Вот пример кода для справки:

AuthenticationContext authenticationContext = new AuthenticationContext(UserModeConstants.AuthString, false); 
string resrouce = ""; 
string clientId = ""; 
string userName = ""; 
string password = ""; 
UserPasswordCredential userPasswordCredential = new UserPasswordCredential(userName, password); 
var token= authenticationContext.AcquireTokenAsync(resrouce, clientId, userPasswordCredential).Result.AccessToken; 

Я использую версию 3.13.5.907 Microsoft.IdentityModel.Clients.ActiveDirectory. И этот метод работает только для собственного клиентского приложения, которое вы регистрируете на Azure AD, поскольку оно не предоставляет учетные данные. Если вы хотите, чтобы он работал в веб-приложении/веб-API, вы можете сделать HTTP-запрос, как показано ниже:

POST: https://login.microsoftonline.com/xxxxx.onmicrosoft.com/oauth2/token 

Content-Type: application/x-www-form-urlencoded 
resource={resource}&client_id={clientId}&grant_type=password&username={userName}&password={password}&scope=openid&client_secret={clientSecret} 
+0

Это работает, за исключением того, что мне нужна моя учетная запись службы, чтобы предоставить разрешение на приложение. Любые мысли о том, как это сделать просто. – ohmusama

+0

Вы имели в виду, что вы хотите, чтобы приложение обращалось к ресурсу как к самому себе, а не к учетной записи службы? Если я правильно понял, вместо использования ** Credentials Password Owner Owner **, нам необходимо использовать ** Client Credentials **. Более подробно об этом потоке вы можете сослаться на ссылку [здесь] (https://graph.microsoft.io/en-us/docs/authorization/app_only). –

+0

О, нет, у моего приложения нет необходимых делегированных разрешений для выполнения необходимых действий, поэтому я пытался войти в систему как учетную запись службы, но учетная запись службы не разрешала приложению действовать от ее имени. :) – ohmusama

Смежные вопросы