Я думаю, что то, что вы пытаетесь сделать, передав несколько значений в параметр resource
напрямую, не сработает (возможно, это не поддерживаемый сценарий, но я подожду, пока кто-нибудь из Microsoft подтвердит или я не найду документацию Azure AD, в которой говоритсяименно это. Между тем, вот старое сообщение в блоге , в котором говорится что-то вроде этого, но это блог, рассказывающий о SSO и старом с 2014 года :), так что не стоит полагаться исключительно на это.)
Ниже я объясняю, как можно заставить этот сценарий работать, повторно используя токены обновления и не передавая оба идентификатора ресурса в одном вызове.( ПРИМЕЧАНИЕ : этот подход будет работать для потока предоставления кода авторизации, но не для потока неявного предоставления, такого как SPA на основе JavaScript, поскольку в этом случае не возвращается токен обновления)
- Один разкод авторизации доступен из конечной точки авторизации, вы переходите к конечной точке токена Azure AD, запрашивая токен для одного ресурса (используя вызов REST к конечной точке или что-то вроде метода AcquireToken библиотеки ADAL в зависимости от требований вашего приложения)
- Вы получаете ответ токен доступа + токен обновления в ответ на ваш вызов к конечной точке токена.Токен доступа действителен для ресурса, который был упомянут в первом вызове (скажем, graph.microsoft.com)
- Затем, используя токен обновления , который вы только что получили, вы делаете другой вызов конечной точке токена (REST)или ADAL AcquireTokenSilent, чтобы во второй раз не отображалось всплывающее окно для запроса учетных данных пользователя), и получите токен для второго ресурса, указав идентификатор второго ресурса в случае этого вызова
- Доступ токен , полученный на этот раз, действителен для второго ресурса.
- Фактически вы можете продолжать делать это, и поэтому в некоторых местах появляется имя токенов многоресурсного обновления.Хотя теперь все токены обновления должны быть мультиресурсными или действительными, чтобы их можно было использовать для запроса любого ресурса, на который у вашего приложения есть согласие.
Ссылки, которые могут помочь вам лучше понять и реализовать