Передача нескольких значений области в конечную точку токена Oauth

Я пытаюсь пройти аутентификацию в https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token, где tenantId исходит из Azure AD.

Он отлично работает, если я передаю только одну область в следующем формате

api: // {{clientId}} /.default

Если я передаю несколько значений параметру области видимости, произойдет сбой с ошибкой AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid.

Я пробовал разделять значения пробелом, запятой и знаком плюс. Но это никогда не работает; Если я передаю какое-либо значение индивидуально, все они будут работать, но я хочу, чтобы в моем токене доступа было несколько аудиторий, так как я могу это сделать?

ИЗМЕНИТЬ

переданы дополнительные параметры:

grant_type: client_credentials

ID клиента

client_secret

сфера


person Sam    schedule 01.07.2020    source источник
comment
Сообщите нам процесс аутентификации и названия других областей.   -  person Hari Krishna    schedule 01.07.2020
comment
да, смотри мое редактирование   -  person Sam    schedule 01.07.2020


Ответы (1)


Поскольку токен доступа содержит разрешения только для одного API, токен создается для определенной аудитории, то есть мы можем указать области только для одного API.

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

Согласно MS Docs,

Значение, передаваемое для параметра области в этом запросе, должно быть идентификатором ресурса (URI идентификатора приложения) нужного вам ресурса с суффиксом .default. Для Microsoft Graph это значение https://graph.microsoft.com/.default. Это значение сообщает конечной точке платформы идентификации Microsoft, что из всех разрешений приложения, которые вы настроили для своего приложения, он должен выдать токен для тех, которые связаны с ресурсом, который вы хотите использовать.

person Hari Krishna    schedule 01.07.2020
comment
да, но я передавал несколько областей .default (по одному для каждого api, который я хочу в токене). По первому пункту, кажется, вы правы. У меня не может быть больше одной аудитории в токене. Стыд :( - person Sam; 01.07.2020
comment
Одна из идей - использовать два отдельных запроса OAuth для каждой области вместо одного запроса. - person Hari Krishna; 01.07.2020
comment
Да, я закончил этим - person Sam; 01.07.2020