通过SAML验证outlook.com地址以进行sharepoint登录

时间:2016-07-01 14:04:01

标签: c# sharepoint office365 saml adfs

我们正在从我们的非网络应用程序中添加登录联盟帐户到SharePoint的功能。

使用SAML来呼叫{365}帐户的https://login.microsoftonline.com/extSTS.srf通常没有问题。

我们有一位使用联合安全性的客户,但也允许访问其他一些用户帐户,特别是http://outlook.com地址。

由于这是一个联合帐户,因此将凭据传递给login.microsoftonline.com/extSTS.srf不起作用。我正在阅读一些代码示例,其中显示联合呼叫发布到

login.microsoftonline.com/GetUserRealm.srf

handler=1&login={0}

当我们为http://outlook.com用户帐户执行此操作时,我们会收到此JSON响应:

{ "State":1, "UserState":2, "Login": "name_here@outlook.com", "FederationGlobalVersion": -1, "DomainName": "OUTLOOK.COM", "AuthURL": "https://login.live.com/login.srf?cbcxt=&popupui=&vv=&username=&mkt=&lc=&wfresh=", "NameSpaceType": "Federated", "FederationBrandName": "OUTLOOK.COM", "AuthNForwardType": 0}

我们看到的代码示例建议将SAML信息发布到从AuthURL构建的站点:

String.Format("https://{0}/adfs/services/trust/2005/usernamemixed/", adfsAuthUrl.Host);

那将是:https://login.live.com/adfs/services/trust/2005/usernamemixed/

但是,我们遇到404错误。如果我们使用AD用户帐户调用GetUserRealm,我们知道我们将获得公司特定的AuthURL。

在尝试对ADFS-enabled Office365网站进行身份验证时,是否需要针对非域帐户(例如来自http://outlook.com)专门实施不同的路径?

1 个答案:

答案 0 :(得分:0)

如果您确实希望用户对SharePoint Online进行身份验证,那么您应该使用a)Azure AD - 获取访问令牌并通过Office 365 REST API访问内容或b)使用SharePoint App选择是否完全使用用户上下文...在这种情况下,它仍然需要访问令牌,或者使用仅限应用程序的上下文。你可以在SamlMan.wordpress.com的博客上看到很多这两个例子。