【问题标题】:Calling external APIs having SSO on Azure AD在 Azure AD 上调用具有 SSO 的外部 API
【发布时间】:2018-04-20 06:39:16
【问题描述】:
  • 我有一个通过 Azure AD 进行身份验证的 Intranet - 位于 https://intranet.example.com/(详细而言,它的 Sharepoint Online);
  • 在某些页面中,我们需要由rest api 生成的动态内容——位于https://api.example.com/(具体来说,.NET WebAPI,使用 OpenId 的 Owin 中间件);
  • api.example 也通过 AAD 进行身份验证;
  • api.example 和 intranet.example 都具有通过管理员同意授予的 Windows Azure AD 权限;
  • api.example 为https://intranet.example.com/ 启用了 X-Frame-Options、Access-Control-Allow-Credentials 和 Access-Control-Allow-Origin;

我需要什么:

某些页面具有由从 api.example 请求数据的 JavaScript 逻辑生成的动态内容;

用户将在 intranet.example 中进行身份验证,并且 api.example 必须具有单点登录行为。

必须避免任何类型的提示或授权请求,因为所有这些都必须对最终用户透明;

我尝试了什么:

我试图简单地在 Intranet.example 中放置一个指向 app.example 的 IFrame,它可以在 Chrome/Firefox 上运行。但是,IE11 不允许这样做,因为我的应用重定向到 https://login.microsoftonline.com/,它的响应是 X-FRAME-OPTIONS 设置为 DENY

示例:

  • 用户登录 Google 帐户,访问 https://mail.google.com/ 并在没有提示或授权请求或其他任何内容的情况下启动并运行环聊消息,完全透明。
  • 用户登录 Microsoft 个人帐户,访问 https://onedrive.live.com/ 并启动和运行 Skype 消息,无需提示或授权请求或其他任何内容,完全透明。

注意1:它必须在我们的域之外工作。因此,设置 Intranet/Trusted Site Zone 不是一个选项。 注2:与Sharepoint越解耦越好。
注3:我试过这个方法PnP Webcast - Calling external APIs securely from SharePoint Framework

【问题讨论】:

  • 您需要获取相应的token才能调用受Azure AD保护的Web API。 [此代码示例[(github.com/Azure-Samples/…) 有用吗?如果我误解了,请随时告诉我。
  • @FeiXue 感谢您的回复。我认为它不会尽快解决我的问题,因为我的 Intranet.example 将不得不重定向到 Microsoft 登录页面以获取访问令牌。它将需要打开一个弹出窗口,这意味着用户必须单击某个按钮或将 intranet.example 放入 Intranet 区域):
  • 如果你是通过 OpenID 连接实现 SSO,当用户已经登录时它不会提示登录页面。您需要在 Web 应用程序中做的唯一事情是使用 AuthorizationCodeReceived 获取相应资源的令牌,如代码示例所示。
  • @GuilhermeMatheusCosta - 这个问题只影响 IE11 吗?其他浏览器呢?

标签: iframe single-sign-on internet-explorer-11 azure-active-directory openid


【解决方案1】:
  1. 我建议您在SharePoint Stack Exchange 重新发布您的问题。
  2. AadHttpClient 可能是一个更好的选择,但它现在处于预览阶段,并且“在生产租户中不受支持”。它还需要新的 SharePoint 管理中心,该中心仅​​适用于首次发布的租户。

另外,我发现这些 AadHttpClient 教程比现有的 MS 文档更好:

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多