Microsoft Graph Получить доступ от имени пользователя

Не удается получить токен доступа, отправив запрос POST в конечную точку /token из angular в Azure AD.

Как упоминалось в этой документации (https://docs.microsoft.com/en-us/graph/auth-v2-пользователь), после успешного авторизации я пытаюсь получить токен доступа из Azure AD с помощью Angular 6, но мой запрос, похоже, не достигает конечной точки Azure AD.

Если я выполняю запрос от почтальона с теми же параметрами, я получаю ответ.

Я не нахожу, что не так в моем запросе?

Заранее спасибо за вашу помощь !

getToken(tokenId: string) {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'application/x-www-form-urlencoded',
        'Host': 'login.microsoftonline.com'
      })
    };
    const body = new HttpParams()
      .set("client_id", "my_client_id")
      .set("scope", "user.read offline_access")
      .set("redirect_uri", "https://localhost:3000/")
      .set("grant_type", "authorization_code")
      .set("client_secret", "my_client_secret")
      .set("code", tokenId);

    this.http.post("https://login.microsoftonline.com/my_tenant_id/oauth2/v2.0/token", body.toString(), httpOptions).toPromise()
    .then(res => {
      // success
    })
    .catch(err => {
      this.error = JSON.stringify(err);
    });
  }

Есть ошибка:

«Доступ к XMLHttpRequest в «https://login.microsoftonline.com/my_tenant-id/oauth2/v2.0/токен» из источника «https://локальный: 3000» заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin»

я пытался добавить «Access-Control-Allow-Origin»: «*» в заголовок, но это не работает...

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение: Angular не может запросить «https://login.microsoftonline.com/my_tenant_id/oauth2/v2.0/токен» из-за ограничений CORS. Итак, я отправляю код авторизации в свой бэкэнд, бэкэнд делает запрос на получение токена доступа из Azure AD и возвращает токен и токен обновления в Angular.

ps: не забывайте параметр области «offline_access» при получении первого кода авторизации, чтобы быть уверенным, что позже получите «refresh_token» !!!

Другие вопросы по теме