我们正在从我们的非网络应用程序中添加登录联盟帐户到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)专门实施不同的路径?
答案 0 :(得分:0)
如果您确实希望用户对SharePoint Online进行身份验证,那么您应该使用a)Azure AD - 获取访问令牌并通过Office 365 REST API访问内容或b)使用SharePoint App选择是否完全使用用户上下文...在这种情况下,它仍然需要访问令牌,或者使用仅限应用程序的上下文。你可以在SamlMan.wordpress.com的博客上看到很多这两个例子。