通过

重定向使用Microsoft Entra应用程序代理发布的应用的硬编码链接

概述

Microsoft Entra应用程序代理使本地应用可供远程或在其自己的设备上的用户使用。 但是,某些应用是使用 HTML 中嵌入的本地链接开发的。 远程使用应用时,这些链接无法正常工作。 如果您有多个内部应用程序互相指向,用户期望在不在办公室时链接仍然正常工作。

确保链接在公司网络内外的工作方式的最佳方法是将应用的外部 URL 配置为与其内部 URL 相同。 使用 自定义域 将外部 URL 配置为具有公司域名,而不是默认应用程序代理域。

如果无法在租户中使用自定义域,可通过其他几个选项提供此功能。 所有其他选项也与自定义域相互兼容,因此可以配置自定义域和其他解决方案。

注释

通过 JavaScript 生成的硬编码内部 URL 不支持链接转换。

Option 1:使用 Microsoft Edge - 仅当计划建议或要求用户通过 Microsoft Edge 浏览器访问应用程序时,此解决方案才适用。 它处理所有已发布的 URL。

选项 2:使用 MyApps 扩展 - 此解决方案要求用户安装客户端浏览器扩展,但它处理所有已发布的 URL,并适用于最常用的浏览器。

选项 3:使用链接翻译设置 - 选项是对用户不可见的管理员端设置。 但是,它仅在 HTML 和 CSS 中处理 URL。

无论用户位于何处,这三项功能都使链接保持正常运行。 如果应用直接指向内部终结点或端口,可以将这些内部 URL 映射到已发布的外部应用程序代理 URL。

注释

最后一个选项仅适用于出于任何原因而无法使用自定义域为其应用具有相同的内部和外部 URL 的租户。 在启用此功能之前,请查看 Microsoft Entra 应用程序代理中的自定义域是否适合你。

或者,如果需要配置带链接转换的 SharePoint 应用程序,请参阅配置 SharePoint 2013 的备用访问映射,以了解链接映射的另一种方法。

选项 1:Microsoft Edge集成

可以使用Microsoft Edge进一步保护应用程序和内容。 若要使用此解决方案,需要/建议用户通过Microsoft Edge访问应用程序。 Microsoft Edge识别使用应用程序代理发布的所有内部 URL,并将其重定向到相应的外部 URL。 重定向可确保硬编码的内部 URL 正常工作。 如果用户转到浏览器并直接键入内部 URL,即使用户处于远程状态,它也能正常工作。

若要了解详细信息,包括如何配置此选项,请参阅使用 Microsoft Intune 管理 iOS 和 Android 版 Microsoft Edge 的网页访问文档。

选项 2:MyApps 浏览器扩展

使用 MyApps 浏览器扩展时,使用应用程序代理发布的所有内部 URL 都会识别该扩展并重定向到相应的外部 URL。 重定向可确保所有硬编码的内部 URL 都正常工作。 如果用户转到浏览器地址栏并直接键入内部 URL,即使用户处于远程状态,它也能正常工作。

若要使用此功能,用户需要下载扩展并登录。 管理员或用户不需要其他配置。

若要了解详细信息,包括如何配置此选项,请参阅 MyApps 浏览器扩展 文档。

注释

MyApps 浏览器扩展不支持通配符 URL 的链接转换。

应用程序代理服务通过 HTML 和 CSS 搜索已发布的内部链接,并在启用链接翻译时对其进行翻译。 链接翻译提供不间断的体验。 使用 MyApps 浏览器扩展是链接翻译设置的首选,因为它提供了更高性能的体验。

注释

如果使用选项 2 或 3,则一次只应启用其中一个设置。

身份验证后,当代理服务器将应用程序数据传递给用户时,应用程序代理会扫描应用程序以获取硬编码的链接,并将其替换为其各自的已发布外部 URL。

应用程序代理假定应用程序在 UTF-8 中编码。 如果不是这种情况,请在 HTTP 响应标头中指定编码类型,例如 Content-Type:text/html;charset=utf-8

链接转换功能仅查找应用正文中的代码标记中的链接。 应用程序代理具有用于翻译标头中的 Cookie 或 URL 的单独功能。

本地应用程序中有两种常见的内部链接类型:

  • 指向本地文件结构中共享资源(例如)的/claims/claims.html。 这些链接可以在通过应用程序代理发布的应用中自动运行,并在有无链接翻译的情况下继续运行。
  • 硬编码的内部链接指向其他本地应用的链接,如http://expenses,或已发布的文件,如http://expenses/logo.jpg。 链接翻译功能适用于硬编码的内部链接,并将其更改为指向远程用户需要访问的外部 URL。

应用程序代理支持链接转换的 HTML 代码标记中属性的完整列表,包括:

  • a (href)
  • audio (src)
  • base (href)
  • button (formaction)
  • div (data-background, style, data-src)
  • embed (src)
  • form (action)
  • frame (src)
  • head (profile)
  • html (manifest)
  • iframe (longdesc, src)
  • img (longdesc, src)
  • input (formaction, src, value)
  • link (href)
  • menuitem (icon)
  • meta (content)
  • object (archive, data, codebase)
  • script (src)
  • source (src)
  • track (src)
  • video (src, poster)

此外,在 CSS 中,URL 属性也会转换。

为每个应用程序启用链接翻译,以便你能够控制每个应用级别的用户体验。 启用链接翻译功能,以便翻译该应用程序中的链接,而不是其他链接指向该应用程序。

例如,假设你有三个应用程序通过应用程序代理发布,这些应用程序都相互链接:权益、支出和旅行。 除了已经通过应用程序代理发布的应用程序,还有一个名为 Feedback 的第四个应用程序未通过该代理发布。

为权益应用启用链接翻译时,支出和旅行的链接将重定向到这些应用的外部 URL。 但是,反馈页面的链接不会被重定向,因为没有外部 URL。 由于没有为这两个应用程序启用链接翻译,从“费用和旅行”返回到“权益”的链接无法使用。

启用链接转换后,从 Benefits 链接到其他应用。

为了提高性能和安全性,不会转换某些链接:

  • 不在代码标记内的链接。
  • 不在 HTML 或 CSS 中的链接。
  • URL 编码格式的链接。
  • 从其他程序打开的内部链接。 通过电子邮件或即时消息发送的链接,以及包含在其他文档中的链接,均不翻译。 用户需要知道要去访问外部 URL。

如果需要支持这两种方案之一,请使用相同的内部和外部 URL,而不是链接转换。

链接翻译入门与单击按钮一样简单:

  1. 以至少应用管理员身份登录到Microsoft Entra 管理中心

  2. 浏览到 Entra ID>企业应用>所有应用程序

  3. 选择您要管理的应用。

  4. 将应用程序正文中的翻译 URL 转换为“是”。

    应用程序代理设置页,应用程序正文中的翻译 URL 设置为“是”。

  5. 选择保存以应用更改。

现在,当您的用户访问此应用程序时,代理会扫描通过您租户上的应用程序代理发布的内部 URL。

后续步骤