在Azure AD上调用具有SSO的外部API

时间:2017-10-05 13:42:42

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

  • 我有一个Azure AD的Intranet身份验证 - 位于 https://intranet.example.com/ (详情,其Sharepoint Online);
  • 在某些页面中,我们需要由rest api生成的动态内容 - 位于 https://api.example.com/ (详细地说,.NET WebAPI,使用OpenId的Owin中间件);
  • api.example auth by AAD too;
  • api.example和intranet.example都具有通过管理员同意授予的Windows Azure AD权限;
  • api.example启用了X-Frame-Options,Access-Control-Allow-Credentials和Access-Control-Allow-Origin https://intranet.example.com/;

我需要什么:

某些网页包含由JavaScript逻辑生成的动态内容,请求来自 api.example 的数据;

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

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

我尝试了什么:

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

实施例

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

注1:它必须在我们的域外工作。因此,不能选择设置Intranet /可信站点区域。 注2:与Sharepoint脱钩越多越好。
注3:我尝试了这个方法PnP Webcast - Calling external APIs securely from SharePoint Framework

1 个答案:

答案 0 :(得分:0)

  1. 我建议您在SharePoint Stack Exchange中重新发布您的问题。
  2. AadHttpClient可能是更好的选择,但它现在正在预览中并且“在生产租户中不受支持”。它还需要新的SharePoint管理中心,该中心仅​​适用于首次发布的租户。
  3. enter image description here

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