PoC 指南:安全访问 Azure 托管的 SaaS 应用程序和 Citrix Secure Private Access
概述
当用户访问 SaaS 应用程序中的机密内容时,组织必须能够在实施身份验证标准的同时简化用户登录操作。组织必须能够保护 SaaS 应用程序,即使它存在于数据中心的范围之外。Citrix Workspace 为组织提供了 SaaS 应用程序的增强安全控制
在这种情况下,用户使用 Active Directory 作为主用户目录向 Citrix Workspace 进行身份验证,然后启动由 Azure 管理的 SaaS 应用程序。
如果将 Citrix Secure Private Access 服务分配给 Citrix 订阅,则将应用增强的安全策略,包括应用基于屏幕的水印、限制打印/下载操作、屏幕抓取限制、键盘模糊处理以及保护用户免受不可信链接的侵害SaaS 应用程序的顶部。
以下动画显示了用户使用 Azure 提供的 SSO 访问 SaaS 应用程序并使用 Citrix Secure Private Access 进行保护。
此演示显示了一个 IdP 启动的 SSO 流程,用户可在其中从 Citrix Workspace 中启动应用程序。本 PoC 指南还支持 SP 发起的 SSO 流程,在该流程中,用户尝试直接从其首选浏览器访问 SaaS 应用程序。
假设:
- Azure 已配置为向 SaaS 应用程序提供 SSO
- 用户可以成功登录 Azure 应用门户并启动 SaaS 应用
本概念验证指南演示了如何:
- 设置 Citrix Workspace
- 集成主用户目录
- 为SaaS应用程序合并单点登录
- 定义网站过滤策略
- 验证配置
设置 Citrix Workspace
设置环境的初始步骤是让 Citrix Workspace 为组织做好准备,其中包括
- 设置 Workspace URL
- 启用适当的服务
设置 Workspace URL
- 连接到Citrix Cloud并以管理员帐户登录
- 在 Citrix Workspace 中,从左上角菜单访问Workspace 配置
- 在访问选项卡中,输入组织的唯一 URL,然后选择“已启用”
启用服务
在“服务集成”选项卡中,启用以下服务以支持安全访问 SaaS 应用程序用例。
- Secure Private Access
- Secure Browser
验证
Citrix Workspace 需要花费一些时间来更新服务和 URL 设置。在浏览器中,验证自定义 Workspace URL 是否处于活动状态。但是,一旦定义和配置了主用户目录,就可以登录了。
集成主用户目录
用户必须先配置主用户目录,然后才能向 Workspace 进行身份验证。主用户目录是用户需要的唯一身份,因为在 Workspace 中对应用程序的所有请求都使用单点登录到次要身份。
组织可以使用以下任一主用户目录:
- Active Directory:要启用 Active Directory 身份验证,必须按照Cloud Connector 器安装指南将云连接器部署在与 Active Directory 域控制器相同的数据中心内。
- 使用基于时间的一次性密码的 Active Directory:基于 Active Directory 的身份验证还可以包括使用基于时间的一次性密码 (TOTP) 的多因素身份验证。本指南详细介绍了启用此身份验证选项所需的步骤。
- Azure Active Directory:用户可以使用 Azure Active Directory 身份对 Citrix Workspace 进行身份验证。本指南详细介绍了启用此身份验证选项所需的步骤。
注意
使用 AAD 作为主身份验证目录时,您无法联合主域(用户的登录域),因为这会造成循环。在此类情况下,您必须联合一个新域。
AAD 用户帐户必须设置
immutableID
属性;否则,身份验证将失败并显示错误消息:AADSTS51004
Azure AD Connect 同步帐户会自动设置此属性。 - Citrix Gateway:组织可以利用本地 Citrix Gateway 充当 Citrix Workspace 的身份提供者。本指南提供了有关集成的详细信息。
- Okta:组织可以将 Okta 用作 Citrix Workspace 的主用户目录。本指南提供了配置此选项的说明。
创建 SaaS 应用
要使用 Citrix Workspace 成功创建 SaaS,管理员需要执行以下操作:
- 配置 SaaS 应用程序
- 授权 SaaS 应用
配置 SaaS 应用程序
使用 Azure 中配置的 SaaS 应用程序,SaaS 应用程序可以在 Citrix Workspace 中进行配置。
- 在Azure中,选择Azure Active Directory
- 选择企业应用
- 在列表中,选择 SaaS 应用程序,这将显示应用程序概述
- 选择属性
- 复制用户访问 URL并记住以备以后使用
- 在 Citrix Cloud 中,从“Secure Private Access”磁贴中选择“管理”。
- 在“Secure Private Access”菜单中,选择“应用程序”
- 在应用程序部分中,选择添加应用程序
应用程序-模板
- 在选择模板向导中,找到正确的模板。在此示例中,选择人类
- 选择下一步
应用程序-应用程序详情
- 在应用程序详细信息屏幕中,将URL替换为从 Azure 复制的用户访问 URL。
- 在URL末尾,添加以下内容:&whr=federated_domain使用与用户的身份关联的 域(在用户的电子邮件中 @ 登录后的信息)替换federated_domain。联合域条目通知 Azure 重定向到正确的联合域配置。联合域信息将在即将到来的部分在 Azure 中进行配置。
*注意:您也可以通过部署在数据中心的连接器设备路由流量。因此,您需要从“我的公司网络外部”切换到“我的公司网络内部”。*
- 选择下一步
应用程序-单点登录
- 在“单点登录”窗口中,将“断言 URL”设置为
https://login.microsoftonline.com/login.srf
(1) - 将受众设置为urn:federation:MicrosoftOnline(2)
- 验证名称 ID 格式=Persistent和名称 ID=Active Directory GUID(3)
- 选中标有使用指定 URL 启动应用程序(SP 已启动)的复选框。(4)
通过身份验证后,用户将自动重定向到 SaaS 应用程序而非 Azure 应用程序门户。 - 在“高级属性”下,验证属性名称=IDPEmail、属性格式=未指定和属性值=电子邮件(5)
注意
当用户在 Citrix Workspace 进行用户身份验证期间已经输入 MFA 时,会自动添加第二个“高级”属性选项以抑制 MFA 身份验证请求。
属性名称:
http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod
属性格式:Unspecified
属性值:Custom value
自定义值:http://schemas.microsoft.com/claims/multipleauthn
要让 Azure AD 接受此声明,我们必须在设置域联合时添加参数
-SupportsMfa $true
。
*注意:步骤 (6)、(7) 和 (8) 只需要在第一个应用程序中完成。*
- 选择“下载”以获取基于 CRT 的证书。(6)
- 在登录 URL旁边,选择复制按钮以捕获登录 URL。此 URL 稍后会被使用。(7)
- 选择SAML 元数据链接 (8)
- 在 SAML 元数据文件中,查找EntityID。请复制整个 URL 并将其存储以备日后使用。捕获后,可以关闭 SAML 元数据文件。
- 选择下一步
应用程序-应用程序连接
- 在“应用程序连接”窗口中,验证流量应如何路由(在本例中为直接从客户端路由到 SaaS 应用程序)
- 选择下一步
- 选择“完成”以完成 Humanity SaaS 应用程序的配置。
授权 SaaS 应用程序并配置增强的安全性
- 在“Secure Private Access”菜单中,选择“访问策略”
- 在“访问策略”部分中,选择“创建策略”
- 在“应用程序”下拉列表中,搜索“Humanity”并将其选中。
- 添加有权启动应用程序的适应用户/组
- 指定是否可以在增强安全性的情况下访问应用程序。
上面的屏幕截图没有配置增强的安全性。
如果需要增强安全性,请将“允许访问”更改为“允许但有限制”,并启用所有应适用的选项。
*注意:对于初始 SSO 测试,最好通过设置“在远程浏览器中打开”选项来配置增强的安全性。*
将Azure 身份验证联合到 Citrix Workspace
要成功地将 SaaS 应用程序与 Citrix Workspace 联合起来,管理员需要执行以下操作:
- 验证身份验证域
- 配置域联合
验证身份验证域
Azure 必须验证完全限定的域名,才能将身份验证联合到 Citrix Workspace。在 Azure 门户中,执行以下操作:
- 访问 Azure Active Directory
- 在导航窗口中选择自定义域名
- 选择添加自定义域
- 输入完全限定的域名
- 选择添加域
- Azure 提供了要纳入域名注册商的记录。完成后,选择验证。
- 完成后,域名将包含经过验证的标记
配置域联合
最终配置是让 Azure 使用 Citrix Workspace 作为已验证域的联合权威机构。必须使用 PowerShell 来配置联合身份验证。
- 启动 PowerShell
- 使用以下命令添加适当的模块
Install-ModuleAzureAD-ForceImport-ModuleAzureAD-ForceInstall-ModuleMSOnline-ForceImport-moduleMSOnline-Force<!--NeedCopy-->
- 通过 PowerShell 连接到 Microsoft Online 并使用 Microsoft 云帐户进行身份验证(例如,
admin.user@onmicrosoft.com
)
Connect-MSOLService<!--NeedCopy-->
- 通过运行以下 PowerShell 命令验证域当前是否设置为 Azure 中托管
Get-MsolDomain<!--NeedCopy-->
- 在 PowerShell 脚本中使用以下代码,通过更改变量以与您的环境保持一致,使此域联合
$dom="workspaces.wwco.net"# The fully qualified domain name verified within Azure$fedBrandName="CitrixWorkspaceSAMLIdP"# A name to help remember the configuration purpose$uri="https://app.netscalergateway.net/ngs/[entityID]/saml/login?APPID=[APPID]"# The Login URL from the Humanity app configuration$logoffuri="https://app.netscalergateway.net/cgi/logout"# Standard entry for all. Do not change$cert=New-ObjectSystem.Security.Cryptography.X509Certificates.X509Certificate2("" )# Path to the downloaded certificate file from Humanity app configuration (e.g., C:\temp\filename.crt)$certData=[system.convert]::tobase64string($cert.rawdata)$IssuerUri="//m.giftsix.com/[entityID]"# The entityID taken from the Office365 app configuration SAML Metadata fileSet-MsolDomainAuthentication`-DomainName$dom`–federationBrandName$fedBrandName`-AuthenticationFederated`-PassiveLogOnUri$uri`-LogOffUri$logoffuri`-SigningCertificate$certData`-IssuerUri$IssuerUri`-PreferredAuthenticationProtocolSAMLPTosuppressanMFAauthenticationrequestwhentheuserhasalreadyenteredtheMFAduringuserauthenticationtoCitrixWorkspace,usethefollowingcommand:Set-MsolDomainAuthentication`-DomainName$dom`–federationBrandName$fedBrandName`-AuthenticationFederated`-PassiveLogOnUri$uri`-LogOffUri$logoffuri`-SigningCertificate$certData`-IssuerUri$IssuerUri`-PreferredAuthenticationProtocolSAMLP`-SupportsMfa$true<!--NeedCopy-->
- 运行以下 PowerShell 命令,验证域当前是否在 Azure 中设置为联合
Get-MsolDomain<!--NeedCopy-->
- 通过运行以下 PowerShell 命令验证 Azure 中的联合身份验证设置
Get-MsolDomainFederationSettings-DomainName$dom<!--NeedCopy-->
注意
如果需要删除联合设置,请运行以下 PowerShell 命令:
Set-MsolDomainAuthentication -DomainName $dom -Authentication Managed
验证
IdP 发起的验证
- 以用户身份登录 Citrix Workspace
- 选择 SaaS 应用程序
- 观察 URL 以通过 Azure 进行简短的重定向
- SaaS 门户成功启动
SP 发起的验证
- 启动浏览器
- 转到公司定义的 SaaS 应用程序的 URL
- 浏览器重定向到 Azure Active Directory,然后重定向到 Citrix Workspace 进行身份验证
- 用户通过主用户目录进行身份验证后,SaaS 应用程序将启动,Citrix 提供单点登录
定义网站过滤策略
Citrix Secure Private Access 在 SaaS 和 Web 应用程序中提供网站筛选,以帮助保护用户免受网络钓鱼攻击。下面显示了如何设置网站过滤策略。
- 在 Citrix Cloud 中,在 Secure Private Access 磁贴中进行管理
- 如果遵循本指南,则设置最终用户身份验证步骤和配置最终用户对 SaaS、Web 和虚拟应用程序的访问权限步骤即已完成。选择“设置”
- 切换到“Web 过滤”选项卡
- 选择编辑
- 启用筛选网站类别选项
- 在“阻止的类别”框中,选择添加
- 选择要阻止用户访问的类别
- 选择所有适用的类别后,选择添加
- 对允许的类别执行同样操作
- 对重定向的类别执行同样的操作。这些类别重定向到 Secure Browser 实例
- 如果需要,管理员可以按照与定义类别相同的流程筛选特定 URL 的拒绝、允许和重定向操作。网站 URL 优先于类别。
验证配置
IdP 发起的验证
- 以用户身份登录 Citrix Workspace
- 选择 SaaS 应用程序。
如果禁用增强安全性,则应用程序将在本地浏览器中启动。否则,将使用企业浏览器。 - 用户自动登录应用
- 应用适当的增强安全策略
- 如果已配置,请在 SaaS 应用程序中选择被阻止、允许和重定向类别中的 URL
- 如果已配置,请在 SaaS 应用程序中选择阻止、允许和重定向的 URL 中的 URL
- SaaS 应用程序成功启动
SP 发起的验证
- 启动浏览器
- 转到 SaaS 应用程序网站并登录。如果有执行 SSO 的选项,请选择该选项。
- 浏览器将浏览器重定向到 Citrix Workspace 进行身份验证
- 输入用户名。
- 用户使用主用户目录进行身份验证后,如果禁用增强安全性,Office365 将在本地浏览器中启动。
如果启用了增强的安全性,则 Secure Browser 实例将启动 SaaS 应用程序。
保持登录
在默认配置中,Azure Active Directory 会在登录过程中显示一个对话框,允许用户保持登录状态。
这是Azure设置,可以通过执行以下操作轻松更改:
- 在Azure中,选择Azure Active Directory
- 选择公司品牌
- 选择已启用的语言环境
- 在“编辑公司品牌”窗格中,在显示选项中选择否以保持登录状态
- 选择保存
故障排除
目录中不存在用户帐户
尝试启动 Microsoft 365 时,用户可能会收到以下错误:AADSTS51004: The user account "account name" does not exist in the "GUID" directory. To sign into this application, the account must be added to the directory.
以下是关于如何解决此问题的建议:
- 验证用户是否有权在 Azure Active Directory 中使用 SaaS 应用程序
- 验证错误中识别的电子邮件地址是否与主用户目录、Azure Active Directory 和 SaaS 应用程序相匹配。
验证属性
immutableId
是否已在用户对象上设置。(在纯 AAD 环境中情况并非如此!)immutableId
可以使用以下 PowerShell 命令轻松计算和设置:$userUPN="john.doh@company.com" #change the userPricipalName before executing Install-Module AzureAD -Force Import-Module AzureAD -Force Install-Module MSOnline -Force Import-module MSOnline -Force Connect-MsolService $userObjectID=(Get-MsolUser -UserPrincipalName $userUPN).objectId $userImmutableId=[System.Convert]::ToBase64String([System.Guid]::New($userObjectID).ToByteArray()) Set-MsolUser -UserPrincipalName $userUPN -ImmutableId $userImmutableId
联邦领域对象
在验证期间,用户可能会收到以下错误:AADSTS50107: The requested federation realm object 'https://
这通常是由于域未经验证或正确联合而导致的。查看 PoC 指南的以下部分:
增强的安全策略失败
用户可能会遇到增强安全策略(水印、打印或剪贴板访问)失败。通常,发生这种情况是因为 SaaS 应用程序使用多个域名。在 SaaS 应用程序的应用程序配置设置中,有一个相关域的条目。
增强的安全策略应用于那些相关的域。要识别缺少的域名,管理员可以使用本地浏览器访问 SaaS 应用程序,然后执行以下操作:
- 导航到策略失败的应用程序部分
- 在 Google Chrome 和 Microsoft Edge(Chromium 版)中,选择浏览器右上角的三个点以显示菜单屏幕。
- 选择“更多工具”。
- 选择开发者工具
- 在开发人员工具中,选择“来源”。这提供了该应用程序部分的访问域名列表。要为应用程序的这一部分启用增强安全策略,必须将这些域名输入到应用程序配置的相关域字段中。添加相关域名,例如下面的
*.domain.com