Как правильно использовать WebAuthenticationCoreManager для получения токена учетной записи Microsoft? - PullRequest
0 голосов
/ 11 октября 2018

За последние 5 лет все изменилось настолько, что я не совсем уверен, как заставить этот образец работать:

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WebAccountManagement

При этом используется пользовательский интерфейс "Account Manager"окно для отображения списка в основном учетных записей Microsoft, с которых можно получить токен доступа.Я понимаю, как взаимодействовать с окном.У меня проблемы с конечными точками OAuth, областями действия и идентификаторами приложений.

К вашему сведению, я использую личную учетную запись Microsoft.

Вот чтоЯ думал, что это был правильный способ включить приложение UWP для использования этой службы токенов:

  1. Свяжите свое приложение UWP с магазином.(Это дает ему идентификатор безопасности, который автоматически входит в манифест.)
  2. Зарегистрируйте имя / идентификатор приложения на https://apps.dev.microsoft.com.
  3. Скопируйте идентификатор приложения из шага 2 из конвергентных приложенийсечение для примера проекта SingleMicrosoftAccountScenario как AccountClientId.
  4. Запустите приложение и попробуйте войти в систему.

Это выдает мне ошибку каждый раз.Вот что меня смущает:

  1. Область действия по умолчанию в примере - это область действия API OneDrive.Я думал, что это пошло в пользу MS Graph.
  2. Должен ли я использовать старый, старый идентификатор приложения Live SDK?
  3. Все ли URI обратного вызова встроенного приложения по умолчанию в порядке?Нужно ли использовать что-то другое?Прочитав где-то в глубине документов, я попытался добавить ms-appx-web: //Microsoft.AAD.BrokerPlugIn/ {app sid}, но это тоже не сработало.
  4. Так много сообщений говорято кроссплатформенной библиотеке ADAL или MSAL.Мне тоже это нравится.Я собираюсь использовать его для вещей Xamarin ... но для нативного UWP я хотел бы использовать действительно удобную панель AccountsSettingsPane с WebAuthenticationCoreManager.Я уже добавил к нему Facebook, используя WebAuthenticationBroker для получения токена.

Я просто застрял, пока не разобрался с этой учетной записью Microsoft.Объединение личных и деловых счетов действительно усложнило ...

1 Ответ

0 голосов
/ 16 октября 2018

Вот что я обнаружил:

  1. Для учетных записей Microsoft, использующих WebAuthenticationCoreManager, у вас есть только два полномочия, которые позволят вам "найти" встроенные учетные записи Microsoft .на вашем ПК, которые зарегистрированы в Windows 10. Вы можете использовать «потребителей» или «организации».
  2. Если вы используете полномочия «организации», WebAuthenticationCoreManager получит для вас токен, используяконечная точка AAD v1 ... , и хотя теоретически это может использовать MS Graph, я не смог заставить его работать. Чтобы заставить это работать в примерах, вы должны изменить добавленное свойство наWebTokenRequest как показано ниже.Обратите внимание, что URL-адрес отличается.Мои области предустановлены на сайте регистрации приложения.Вы используете идентификатор конвергентных приложений при регистрации приложения по адресу https://apps.dev.microsoft.com и используете простые области API Graph, такие как «user.read».

    webTokenRequest.Properties.Add("resource", "https://graph.microsoft.com");
  3. Если вы используетеавторитет "потребителей", вы вообще не получаете токен, совместимый с MS Graph.Вместо этого вы получаете старый токен Live API.Вы можете подтвердить это с помощью этой конечной точки, чтобы получить ваше имя пользователя с токеном https://apis.live.net/v5.0/me.Хотя я мог бы использовать этот токен только для аутентификации моего пользователя, этот API уже устарел и переходит в офлайн в ноябре 2018 года (в следующем месяце!).Таким образом, кажется, что вы не можете использовать его для личных учетных записей.Если вы хотите, чтобы это работало, вам нужно использовать конвергентный идентификационный номер, но вместо этого использовать старую область действия Live API "wl.basic".

Мой обходной путь - вообще не добавлять учетные записи по умолчанию, а вместо этого добавлять пользовательскую учетную запись, которая использует MSAL для входа в систему.Это отстой, потому что это все еще требует первоначального входа в систему.Обидно, потому что мы уже вошли в ПК с использованием этой учетной записи.Кажется глупым, нам нужно снова ввести учетные данные.

...