Доступ к API Graph при входе в систему в качестве гостя для внешнего клиента (B2B) - PullRequest
0 голосов
/ 16 мая 2019

Я выполняю упражнение UWP в этом примере приложения , и оно работает.Я немного подправил его, потому что приложение, которое я разрабатываю, зарегистрировано в каталоге, отличном от того, к которому принадлежит моя учетная запись AAD (я гость в каталоге).Я внес следующие изменения:

PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                                                .WithAuthority(AzureCloudInstance.AzurePublic, TenantId)
                                                .Build();

, где TenantId - это идентификатор каталога, в котором зарегистрировано приложение и где я являюсь гостем, а не моего домашнего каталога.

Вызов https://graph.microsoft.com/v1.0/me, включенный в учебное пособие, работает нормально и возвращает информацию о моем профиле в приложение UWP.

Я хотел бы перетащить фотографию своего профиля в приложение, поэтому я изменил URL-адрес графика на https://graph.microsoft.com/v1.0/me/photo/$value, но это вернуло ошибку:

{
  "error": {
    "code": "NoPermissionsInAccessToken",
    "message": "The token contains no permissions, or permissions can not be understood.",
    "innerError": {
      "request-id": "xxxxxx-xxxxx-xxx-xxxx-xxxx",
      "date": "2019-05-16T17:15:28"
    }
  }
}

Регистрация приложения имеетUser.Read, User.ReadBasic.All и openid для API-интерфейса графа.

Когда я использую Graph API Explorer для перехода по URL-адресу /me/photo/$value, он работает без проблем.

Я предполагаю, что моя проблема вызвана аутентификацией в неавторизованном каталоге, который предоставляет токен с ограниченным доступом к графику API.Мне не удалось найти какую-либо документацию по ограничениям, налагаемым на доступ к Graph API для учетных записей B2B / guest.

Я думаю, что если я захочу это сделать, мне придется установить второй сеанс входа в систему.с моим домашним каталогом (и, возможно, со второй регистрацией приложения) и используйте токен этого сеанса для доступа к моему профилю, но я ищу предложения о том, как решить эту проблему, не спрашивая пользователя войти в систему дважды.Решение с использованием MSAL было бы идеальным.

1 Ответ

0 голосов
/ 17 мая 2019

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

Можете ли вы расшифровать имеющийся у вас токен доступа?Вы можете сделать это, получив расшифрованную трассировку фиддлера, следуя приведенной ниже статье: https://blogs.msdn.microsoft.com/aaddevsup/2018/09/12/capture-https-traffic-with-http-fiddler/

, а затем декодируйте заголовок канала-носителя для вызова get для конечной точки Microsoft Photo.

Если у вас действительно есть необходимые разрешения и вы выполнили все требования документации, перечисленной здесь: https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0

Я бы предложил подать заявку в службу поддержки Azure, чтобы получить инженера службы поддержки отMicrosoft, чтобы изучить эту проблему дальше.

Спасибо, - Фрэнк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...