Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

В настоящее время я разрабатываю свое веб-приложение для использования Rest API Office365. Для этого для аутентификации и авторизации OAuth2 я следую шагу, описанному в этой статье: https://blogs.msdn.microsoft.com/exchangedev/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-office-365-exchange-online/

Однако я застрял на втором шаге, который является первой попыткой входа на страницу Windows. Вот полная ссылка, которую я использую для процесса OAuth2:

"https://login.windows.net/common/oauth2/authorize?client_id=[ClientId]&redirect_uri=http://localhost/MicrosoftAuthDemo/MicrosoftCallBack.ashx&response_type=code&resource=https://outlook.office365.com/&state=c9833f87-892a-4f94-9234-2de9832d1f49"

После того, как я выполнил вход в систему, вместо того, чтобы показывать страницу согласия и перенаправлять URL-адрес обратно в мою сеть: http://localhost/MicrosoftAuthDemo/MicrosoftCallBack.ashx, он перенаправляет URL-адрес на https://login.microsoftonline.com/login.srf, который я понятия не имею, что это такое. Эта ссылка login.srf показывает эту страницу:

Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

Совершенно неожиданно он снова запрашивает логин. Однако, когда я снова пытаюсь войти в систему, он снова перенаправляет меня по той же ссылке: https://login.microsoftonline.com/login.srf.

Кто-нибудь знает, в чем источник проблемы?

Если кто-то хочет узнать настройки регистрации моего приложения на портале Azure:

  1. Зарегистрируйте настройки

Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

  1. Характеристики

Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

  1. Секретный ключ

Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

  1. URL-адреса воспроизведения

Процесс запроса проверки подлинности OAuth2 в Office 365 перенаправляет ссылку на https://login.microsoftonline.com/login.srf

Вы можете попробовать использовать https://login.microsoftonline.com вместо https://login.windows.net.

juunas 30.05.2018 15:07

Также не забудьте кодировать URL-адреса такие параметры, как redirect_uri. resource указывать не нужно. Вам вернут код авторизации, который вы обменяете на токен доступа, в котором нужно указать ресурс.

juunas 30.05.2018 15:08

Да, похоже, статья, за которой я следил, больше не работает. Вместо этого я следил за этим developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_us‌ er, и он работает как шарм.

Yusril Maulidan Raji 30.05.2018 15:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
6 104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вот решение для вашей справки, чтобы выполнить авторизацию O365 и использовать REST API:

Во-первых: получите токен безопасности

Получите доступ к [https://login.microsoftonline.com/extSTS.srf] через метод Http Post. Содержание http-запроса выглядит следующим образом.

<s:Envelope xmlns:s = "http://www.w3.org/2003/05/soap-envelope"  
  xmlns:a = "http://www.w3.org/2005/08/addressing"  
  xmlns:u = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">  
<s:Header>  
<a:Action s:mustUnderstand = "1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>  
<a:ReplyTo>  
  <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>  
</a:ReplyTo>  
<a:To s:mustUnderstand = "1">https://login.microsoftonline.com/extSTS.srf</a:To>  
<o:Security s:mustUnderstand = "1"  
   xmlns:o = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">  
  <o:UsernameToken>  
    <o:Username>[username]</o:Username>  
    <o:Password>[password]</o:Password>  
  </o:UsernameToken>  
</o:Security>  
</s:Header>  
<s:Body>  
<t:RequestSecurityToken xmlns:t = "http://schemas.xmlsoap.org/ws/2005/02/trust">  
  <wsp:AppliesTo xmlns:wsp = "http://schemas.xmlsoap.org/ws/2004/09/policy">  
    <a:EndpointReference>  
      <a:Address>[endpoint]</a:Address>  
    </a:EndpointReference>  
  </wsp:AppliesTo>  
  <t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType>  
  <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>  
  <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>  
</t:RequestSecurityToken>  
</s:Body>  
</s:Envelope>  

Демонстрационный снимок экрана в Postman:

И содержимое ответа будет включать токен безопасности, как показано ниже, мы можем использовать этот токен безопасности и связанный с ним REST API для получения токена доступа вашего приложения O365, такого как SharePoint, Outlook и т. д.

Во-вторых: получить токен доступа

Здесь я покажу вам, как получить токен доступа к SharePoint в Интернете с помощью токена безопасности и SharePoint Rest API.

Пока вы используете соответствующий REST API, он также используется в других приложениях O365.

Получите доступ к [https://yourdomain.sharepoint.com/_forms/default.aspx?wa=wsignin1.0] через метод HTTP Post. Содержимое запроса - это токен безопасности, который мы получили выше, как показано ниже.

И ответ, как показано ниже:

Мы видим, что в заголовке ответа есть два файла cookie, rtFa и FedAuth, и эти два файла cookie необходимо добавить в запрос в следующем запросе.

Третье: получить дайджест запроса

Получите доступ к [https://yourdomain.sharepoint.com/_api/contextinfo] через метод http Post с двумя файлами cookie, которые мы получили выше.

И ответ, как показано ниже:

Это последний жетон, который нам нужен!

Затем мы можем использовать REST API SharePoint, нам нужно только добавить этот токен и два предыдущих файла cookie, как показано на следующем рисунке.

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

Похоже, статья, за которой я следил, уже старая (опубликована в 2014 году) и больше не работает.

Наконец, я решил проблему, выполнив действия, описанные в этой статье: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_user

Здесь я бы кратко объяснил, что я изменил:

Первый, для регистрации приложения, вместо использования https://portal.azure.com, я зарегистрировал свое приложение через https://apps.dev.microsoft.com/. Почему-то они разные.

Второй, я меняю полную ссылку, которую использую для процесса OAuth2, на:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=[Client ID]
&response_type=code
&redirect_uri=[your web app link after finishing login]
&response_mode=query
&scope=[scope of your app]

Объяснение параметров:

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

juunas 30.05.2018 15:15

Хорошо, я добавлю немного подробностей позже

Yusril Maulidan Raji 30.05.2018 15:15

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