sharepoint - 用于本地 SharePoint 2013、Power BI 和自定义 Web 应用程序的 ADFS 单点登录?
问题描述
设想
有一个用户存储,即本地 AD。ADFS 为 SharePoint 2013 和 Power BI 提供身份验证。
自定义 Web 应用程序需要对来自 AD 的用户进行身份验证。Web 应用程序后端还需要访问 SharePoint REST API。
目标是使用单点登录来实现上述目标。如果登录到三个应用程序中的任何一个,则用户不必为其他两个应用程序中的任何一个输入凭据。此外,自定义 Web 应用程序还显示来自 SharePoint(iFrame 和 REST API)和 Power BI (iFrame) 的内容。
我们尝试了以下两种解决方案,但在任何一种情况下都遇到了问题。
解决方案 1
- 用户在 Web 应用程序中输入凭据。
- Web 应用后端使用这些凭据从 ADFS 获取 SAML 令牌。
- Web 应用后端使用 SAML 令牌通过基于表单的身份验证使用 SharePoint 对用户进行身份验证,并检索 FedAuth cookie。
- Web 应用后端使用 FedAuth cookie 向 SharePoint 发出 REST API 请求
- Web 应用程序前端使用 SAML 令牌通过基于表单的身份验证使用 SharePoint 对用户进行身份验证。这允许 iFrame 中的 SharePoint 内容。
什么不起作用:导航到 Power BI 或将其包含在 iFrame 中会将用户重定向到 ADFS 登录页面。这是因为用户尚未在浏览器中使用 ADFS 进行身份验证。
解决方案 2
- ADFS SSO 也用于自定义 Web 应用程序。
- 导航到三个应用程序中的任何一个都会将用户重定向到 ADFS 登录页面
- 用户输入他们的凭据并使用 SAML 令牌重定向回应用程序。
- 导航到其他两个应用程序中的任何一个都会将用户重定向到 ADFS,ADFS 将使用另一个 SAML 令牌重定向回应用程序,而无需用户再次登录。
- 这允许将 SharePoint 和 Power BI 内容包含在 iFrame 的 Web 应用程序中。
什么不起作用:Web 应用程序无法使用从 Web 应用程序的 ADFS 接收的 SAML 令牌向 SharePoint 发出 REST API 请求。我们已尝试使用该 SAML 令牌代表登录用户从 ADFS for SharePoint 请求另一个令牌。这也不起作用。此外,本地 SharePoint 2013 可能不接受代表请求。
问题
有没有办法为所有三个应用程序提供 SSO,同时还可以从 Web 应用程序访问 SharePoint 的 REST API?用户应该只需要登录一次,最好只登录网络应用程序。
解决方案
通过 Azure Active Directory 注册应用程序可能是实现所需内容的最佳方式。您可以在 Azure AD 中注册应用程序,然后按应用程序、租户或策略向用户授予权限。https://docs.microsoft.com/en-us/power-bi/developer/embed-sample-for-customers https://docs.microsoft.com/en-us/power-bi/developer/create-an -azure 活动目录租户
推荐阅读
- python - 如何用常量替换 ndarray 中每一行的最后一个元素(或任何元素)?
- python - 为什么使用 pandas read_sql 使用 bigquery 时会出现性能问题?
- machine-learning - 使用交叉验证调整超参数和评估
- kotlin - 在 TeamCity Kotlin DSL 中定义 DockerSupportFeature 时如何访问 dockerRegistryId
- python - Sum 存储在字典中的 DF 列
- r - 从列表中提取 data.frame 的循环
- pine-script - 您如何将当天第一根蜡烛的开盘/高/低/收盘值用作 pine 脚本中的变量?
- kubernetes - 谷歌云平台Master无法升级到“1.15.9-gke.24”
- javascript - 如何在客户端反应应用程序中丑化 JS/HTML/CSS?
- java - ReactorDebugAgent 适合生产吗?