2012-07-02 3 views
12

Я пытаюсь подключиться к экземпляру SharePoint Online через приложение WPF. Я нашел this article, который описывает возможное решение, но проблема в том, что у конкретного экземпляра есть службы федерации Active Directory (ADFS), и я не знаю, как получить аутентификацию. (Я не могу создать сертификат для моего приложения для аутентификации против adfs.)Утверждение претензии от ADFS

Любой, кто уже сделал это и может поддержать меня с некоторыми фрагментами кода?

+0

Я этого не сделал, но я мог бы помочь. Можете ли вы разместить где-нибудь трассировку Fiddler, извлеченную из обычного входа в систему через веб-интерфейс в Office 365, используя ADFS? – woloski

+0

@woloski Я не могу опубликовать это из-за информации о компании в след. Я могу отправить его вам, если вы дадите мне свой адрес. (Вы можете найти мой в своем профиле ( – jwillmer

+0

Я отправил вам электронное письмо. Вы получили его? – woloski

ответ

5

Я нашел решение и сделал сообщение об этом. Я также положил его на github. Вы можете найти мое сообщение в блоге вместе со ссылкой github по адресу my blog.

Я надеюсь, что это поможет вам, насколько это помогло мне :-)

+0

Можете ли вы опубликовать это снова, пожалуйста? – retrography

+1

@retrography Блог не работает, но я добавил ссылку GitHub на мой пост. Если вам все еще нужно сообщение в блоге, напишите мне письмо, и я отправлю его вам ;-) – jwillmer

8

Я играл с Fiddler. В основном поток выглядит следующим образом:

  • Получить маркер SAML от ADFS
  • Сообщение это https://login.microsoftonline.com/login.srf (тело должно быть wa=wsignin1.0, wresult=<requestsecuritytokenresponse>…token…</rstr> and wctx=MEST=0&LoginOptions=2&wa=wsignin1%2E0&rpsnv=2&ct=1343219880&rver=6%2E1%2E6206%2E0&wp=MBI&wreply=https%3A%2F%2Fspirit365%2Esharepoint%2Ecom%2F%5Fforms%2Fdefault%2Easpx&id=500046&cbcxt=mai&wlidp=1&guest=1&vv=910&mkt=EN-US&lc=1033&bk=1343219930
  • Захват вход скрыт под названием «T» от формы
  • POST, что «т» в /_layouts/Authenticate.aspx это должно дать вам FedAuth и rtFa печенье

с этого момента это то же самое, как код здесь:.. http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx

+0

Я слышал, что цель файлов cookie rtFa чтобы сделать выход из системы.Как я могу это сделать? Присоедините rtFa к HTTP-запросу и отправьте его на любой веб-сервис SharePoint? – surlac

3

Я потратил много времени, чтобы наконец-то понять. Для того, чтобы получить двоичный Токен вам нужно отправить сообщение в следующем формате в Microsoft Online службы маркеров безопасности (STS) URL сайта:

<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">[toUrl]</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"> 
     [assertion] 
    </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>[url]</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> 

Это сообщение необходимо заменить маркеры со следующими значениями:

[toUrl]: URL-адрес сайта службы поддержки интернет-безопасности Microsoft (STS).
[url]: Ваш URL-адрес вашего сайта SP
[assertion]: Является ли токен XLM-подтверждения, который вы получили от службы вашей федерации.

После получения t=... двоичного маркера из XML ответа, вы можете оставить, что к вашему SP default.aspx для того, чтобы получить печенье.

+0

Я пробовал этот подход и получал файлы cookie Fedauth, но когда я перенаправляюсь на сайт в Интернете SharePoint, запрашивая учетные данные пользователя. и если я делаю запись хоста как «testO365.sharpoint.com "в моем местном, а затем в рабочем состоянии, любое предложение. –

+0

Hy, я знаю, что это старый пост, но, возможно, кто-то может мне помочь. Мне удалось получить утверждение xml с нашего adfs-сервера. Но если я его скопирую ( и все внутри) в xml, как указано, я всегда получаю сообщение об ошибке «websso invalid assertion» (кстати, я отправляю сообщение (https://login.microsoftonline.com/extsts.srf) –

Смежные вопросы