Ошибка аутентификации Skype для бизнеса Online - 403 Отказано в разрешении - PullRequest
0 голосов
/ 17 марта 2019

Здравствуйте, эксперты Microsoft / Azure / Skype,

Мне поручено получить доступ к данным присутствия из учетных записей Skype для бизнеса Online из моего приложения macOS (нативное). К сожалению, я застрял, и всегда получаю сообщение об ошибке 403 при обращении к запросу автообнаружения и никогда не получаю ссылку на ресурс приложений

Я следил за этой документацией https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread

ШАГ 1 Мы зарегистрировали приложение на портале управления Azure, используя наши учетные данные Office 365.

  • Мы использовали обычные URL перенаправления (http://localhost)
  • В манифесте для параметра Разрешить неявный поток установлено значение true
  • Мы предварительно настроили разрешения, необходимые для Skype для бизнеса онлайн enter image description here

ШАГ 2 Выдача GET, как указано в документации, для инициирования проверки входа и авторизации.

GET https://login.microsoftonline.com/common/oauth2/authorize?response_type=token&client_id=c#####-4d41-485e-871f-0a22aa79e52b&redirect_uri=http://localhost

Возвращает 200 OK.

ШАГ 3 Мы получили URL автообнаружения, как описано в документации. Это то, что я получаю - я использую домен, помеченный красным. enter image description here

ШАГ 4 Согласно документации, они просят меня сделать это

Запрос токена доступа с использованием потока неявного предоставления Поэтому я выдаю GET, как описано

https://login.microsoftonline.com/oauth2/authorize? response_type = id_token & client_id = ###### - 4d41-485e-871f-0a22aa79e52b & Redirect_uri = http://localhost & Состояние = 8f0f4eff-360f-4c50-acf0-99cf8174a58b И ресурс = https://webdirin1.online.lync.com

Теперь это показывает страницу входа, я вхожу, а затем выдает ошибку

AADSTS90014%3a+The+required+field+%27nonce%27+is+missing.

Я исследовал и не смог исправить эту ошибку. Поэтому после долгих исследований и изучения этой ссылки на документацию Microsoft (https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#requesting-individual-user-consent), очевидно, существует другой способ получения токена на предъявителя.

ШАГ 4 - ВТОРАЯ ПОПРОБУЙТЕ

Затем я запрашиваю согласие отдельного пользователя, отправив параметр SCOPE для Skype для бизнеса. Затем я отправляю запрос GET на

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=#######-4d41-485e-871f-0a22aa79e52b&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=https://api.skypeforbusiness.com/User.ReadWrite&state=12345

Возвращает код доступа, который я использую на следующем шаге, чтобы получить токен

ШАГ 5 - Получите ЖЕТОН на предъявителя

Выдача POST на следующий URL https://login.microsoftonline.com/common/oauth2/v2.0/token С следующие данные в теле POST

"grant_type": "authorization_code", "client_id": "###### - 4d41-485e-871f-0a22aa79e52b", "scope": "https://api.skypeforbusiness.com/User.ReadWrite"," код ": "OAQABAAIAAACEfexX .........", "redirect_uri": "https://localhost"

Возвращает токен на предъявителя в следующем ответе JSON

{
"access_token" = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1........w4b--    gnWG_iOGtQ";
"expires_in" = 3599;
"ext_expires_in" = 3599;
scope = "https://api.skypeforbusiness.com/User.ReadWrite";
"token_type" = Bearer;
}

ШАГ 6

Ура! Получил жетон на предъявителя на laaast! Теперь вернемся к основной документации https://docs.microsoft.com/en-us/skype-sdk/ucwa/authenticationusingazuread

И где мы это делаем - «Повторная отправка запроса на автоматическое обнаружение с токеном-носителем» Мы выполняем запрос GET на

https://webdirin1.online.lync.com/Autodiscover/AutodiscoverService.svc/root/oauth/user

Теперь это, согласно документации, должно возвращать этот JSON

{
            "_links":{
            "self": 
     {"href":"https://webdirX.online.lync.com/Autodiscover/AutodiscoverService.svc/root/user"},
         "applications": 
        {"href":"https://webpoolXY.infra.lync.com/ucwa/oauth/v1/applications"}
         }
         }

НО Я ПОЛУЧИЛ 403: РАЗРЕШЕНИЯ отклонены из-за ошибки

<div class="content-container"><fieldset>
 <h2>403 - Forbidden: Access is denied.</h2>
 <h3>You do not have permission to view this directory or page 
  using the credentials that you supplied.</h3>
</fieldset></div>

Таким образом, я никогда не получал URL-адрес приложения и проверил манифест, регистрацию и понятия не имею, почему я получаю эту ошибку.

Любые материалы будут оценены.

1 Ответ

1 голос
/ 26 марта 2019

Для шага 4 необходимо указать nonce=somestring в URL.Обычно это должно быть безопасно случайное значение, которое используется только один раз.Может содержать любое значение.

Кроме того, вы запрашиваете только идентификатор токена.Набор response_type=id_token+token.

...