Microsoft Entra ID 使用访问和会话 Cookie 通过应用代理访问本地应用程序。 了解如何配置应用程序代理 Cookie 设置。
什么是 Cookie 设置?
应用代理使用以下访问和会话 Cookie 设置。
| Cookie 设置 | 违约 | Description | Recommendations |
|---|---|---|---|
| 使用 HTTP-Only Cookie | 否 |
允许 应用程序代理在 HTTP 响应标头中包含 HTTPOnly 标志。 此标志提供额外的安全优势,例如,它阻止客户端脚本(CSS)复制或修改 Cookie。 在支持 HTTP-Only 设置之前,应用程序代理通过安全传输层安全性(TLS)通道加密和传输 Cookie,以防止修改。 |
出于额外的安全优势,请使用 “是 ”。 对需要访问会话 Cookie 的客户端或用户代理使用 No 。 例如,对远程桌面协议(RDP)或Microsoft终端服务客户端(MSTSC)使用 No ,该客户端通过应用程序代理连接到远程桌面网关服务器。 |
| 使用安全 Cookie | 是的 | 是 允许应用程序代理在 HTTP 响应标头中包含安全标志。 安全 Cookie 通过将 Cookie 传输至基于 TLS 安全通道(如 HTTPS)来增强安全性。 TLS 阻止以明文形式传输 Cookie。 | 出于额外的安全优势,请使用 “是 ”。 |
| 使用持久 Cookie | 否 | 是 允许应用程序代理在 Web 浏览器关闭时将其访问 Cookie 设置为不过期。 持久性持续到访问令牌过期,或者用户手动删除永久性 Cookie 为止。 | 由于与保持用户进行身份验证相关的安全风险,请使用 No 。 仅在无法在进程之间共享 Cookie 的较旧应用程序中使用Yes。 最好更新应用程序以处理进程之间的共享 Cookie,而不是使用持久性 Cookie。 例如,可能需要持久 Cookie 才能允许用户从 SharePoint 网站在资源管理器视图中打开 Office 文档。 如果没有持久性 Cookie,如果在浏览器、资源管理器进程和 Office 进程之间不共享访问 Cookie,则此作可能会失败。 |
SameSite Cookie
未指定 SameSite 属性的 Cookie 被视为设置为 SameSite=Lax。
SameSite 属性声明 Cookie 应该如何被限制为同一站点上下文。 设置为Lax时,Cookie 仅发送到同站请求或顶级导航。 但是,应用程序代理要求将这些 Cookie 保留在第三方上下文中,以使用户在会话期间保持登录状态。 由于要求,进行了更新:
- 将 SameSite 属性设置为 None 可确保在第三方环境中发送应用程序代理会话 Cookie。
- 将 “使用安全 Cookie ”设置设置为“ 是 ”作为默认值。 Chrome 拒绝不使用标志的
SecureCookie。 此更改适用于通过应用程序代理发布的所有现有应用程序。 应用程序代理访问 Cookie 设置为“安全”,并且仅通过 HTTPS 传输。 更改仅适用于会话 Cookie。
此外,如果您的后端应用程序有需要第三方上下文的 Cookie,则必须显式选择使用 SameSite=None,通过更改应用程序设置来实现。 应用程序代理将 Set-Cookie 标头转换为其 URL 并遵循设置。
使用 Microsoft Entra 管理中心设置 Cookie 设置
若要使用 Microsoft Entra 管理中心设置 Cookie 设置,请执行以下作:
- 至少以应用程序管理员的身份登录到 Microsoft Entra 管理中心。
- 浏览到 Entra ID>企业应用>应用程序代理。
- 在 “其他设置”下,将 Cookie 设置设置为 “是 ”或 “否”。
- 选择保存以应用更改。
使用 PowerShell 查看当前 Cookie 设置
若要查看应用程序的当前 Cookie 设置,请使用以下 PowerShell 命令:
Get-MgBetaApplication -ApplicationId <Id> | FL *
使用 PowerShell 设置 Cookie 设置
在以下 PowerShell 命令中, <Id> 是应用程序的 ID 。
Http-Only Cookie
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsHttpOnlyCookieEnabled $true
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsHttpOnlyCookieEnabled $false
安全 Cookie
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsSecureCookieEnabled $true
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsSecureCookieEnabled $false
持久 Cookie
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsPersistentCookieEnabled $true
Set-EntraBetaApplicationProxyApplication -ApplicationId <Id> -IsPersistentCookieEnabled $false