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

В настоящее время я разрабатываю свое веб-приложение для использования API Rest 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 показывает эту страницу:

enter image description here

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

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

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

  1. Настройки регистрации

enter image description here

Свойства

enter image description here

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

enter image description here

Воспроизведение URL

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Кажется, что статья, которой я следовал, уже старая (опубликована в 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]

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

0 голосов
/ 30 мая 2018

Чтобы выполнить авторизацию 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>  

Демонстрационный снимок экрана в «Почтальоне»: enter image description here

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

enter image description here

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

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

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

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

enter image description here

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

enter image description here

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

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

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

enter image description here

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

enter image description here

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

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...