Проверка подлинности Azure AD через REST в корпоративном приложении AAD

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

Я настроил свое потребительское приложение AAD так, чтобы ему требовалось разрешение на «доступ к {на корпоративном приложении sharepoint}». Затем я делаю запрос на URL-адрес, который выглядит так:

https://login.microsoftonline.com/{tenant}/oauth2/authorize?
                      response_type=code&scope=user_impersonation&
                      response_mode=form_post&
                      redirect_uri={uri that is registered in my app}&
                      client_id={my app id}&
                      resource={onprem sharepoint enterprise app id}&
                      state={GUID}&nonce={GUID}

Я получаю ответ 401 UNAUTHORIZED:

{
  "error": "invalid_client",
  "error_description": "Invalid audience Uri '{onprem sharepoint enterprise app id}'."
}  

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

Спасибо за помощь!


person Anthony    schedule 11.09.2018    source источник
comment
Вы добавили ресурс sharepoint в свои приложения, Permissions для которого он запрашивает доступ? Это можно сделать на портале Azure в колонке settings.   -  person Daniel Dobalian    schedule 12.09.2018
comment
да. в приложении (называемом search-api) я разрешил доступ к ресурсу sharepoint onprem. Есть ли еще один шаг после добавления этого?   -  person Anthony    schedule 12.09.2018
comment
imgur.com/a/YGopHn2   -  person Anthony    schedule 12.09.2018


Ответы (1)


Вы должны заменить resource={onprem sharepoint enterprise app id} на App ID URI of onprem sharepoint enterprise app (защищенный ресурс). Для получения дополнительной информации вы можете обратиться к Поток разрешений Oauth 2.0.

person SunnySun    schedule 12.09.2018
comment
По-прежнему похоже на тот же результат: {error: invalid_client, error_description: Invalid audit Uri 'urn: sharepoint: {hostname of onprem sharepoint}'.} Я лучше взгляну на страницу, на которую указывает ссылка, чтобы увидеть, смогу ли я найти какие-либо дыры. - person Anthony; 12.09.2018
comment
Для новой ошибки вы должны проверить свое имя хоста onprem sharepoint, чтобы убедиться, что имя правильное. - person SunnySun; 12.09.2018
comment
Я подтвердил, что URN совпадает с именем хоста точки доступа onprem. - person Anthony; 12.09.2018
comment
@Anthony, не могли бы вы заменить значение ресурса на https://graph.windows.net. А потом вы пытаетесь снова. - person SunnySun; 19.09.2018
comment
Спасибо за предложение, Санни. После этого я получаю следующие ошибки: 2018-09-19 11:04:47 DEBUG wire: 86 - http-outgoing-1 ‹---------------- {error_description: Недействительный токен JWT. Не удалось разрешить токен эмитента.} 2018-09-19 11:04:47 Заголовки DEBUG: 124 - http-outgoing-1 ‹---------------- HTTP / 1.1 401 Unauthorized 2018-09-19 11:04:47 Заголовки DEBUG: 127 - http -outgoing-1 ‹< Сервер: Microsoft-IIS / 10.0 2018-09-19 11:04:47 Заголовки DEBUG: 127 - http-outgoing-1 ‹< x-ms-diagnostics: 3000006; причина = Токен содержит недопустимую подпись. ; category = invalid_client - person Anthony; 19.09.2018
comment
Я нашел блог, возможно, вы сможете обратитесь к нему, чтобы попробовать. Надеюсь, это поможет тебе. - person SunnySun; 20.09.2018