Azure Virtual Desktop-8-利用ADFS实现SSO单点登录-证书标识

网友投稿 317 2022-09-29

Azure Virtual Desktop-8-利用ADFS实现SSO单点登录-证书标识

如果采用证书的方式,那么前面的步骤都一样,可以参考​​​Azure Virtual Desktop-7-利用ADFS实现SSO单点登录-共享密钥标识 ​​

必须将 Active Directory 联合身份验证服务 (AD FS) 服务器配置为使用新证书模板,并将信赖方信任设置为支持 SSO。

AD FS 服务器与 Azure 虚拟桌面服务之间的信赖方信任使得单一登录证书请求可以正确转发到域环境。

配置 AD FS 单一登录时,必须选择共享密钥或证书:

如果只有一个 AD FS 服务器,则可以选择共享密钥或证书。如果有多个 AD FS 服务器,则必须选择证书。

用于生成 Windows 登录令牌的共享密钥或证书必须安全存储在 ​​Azure 密钥保管库​​中。可将秘钥存储在现有的密钥保管库中,或者部署新的密钥保管库。 无论采取哪种做法,都必须确保设置正确的访问策略,使 Azure 虚拟桌面服务能够访问该秘钥。

使用证书时,可以使用任何常规用途证书,并且在使用者名称或使用者可选名称 (SAN)方面没有要求。 尽管不一定非要这样做,但建议创建由有效证书颁发机构颁发的证书。 此证书可以直接在 Azure 密钥保管库中创建,需要包含可导出的私钥。 可使用以下脚本导出公钥并使用它来配置 ADFS 服务器。 请注意,此证书不同于 ADFS SSL 证书,ADFS SSL证书必须具有正确的使用者名称和有效的证书颁发机构。

我的理解就是需要使用公网证书,那么还是继续我之前的那张adfs.basehome.com.cn公网证书,先导入到Azure的密钥保管库中

完成

这张证书也放到ADFS的C盘根目录下,在ADFS服务器右键管理员方式打开Powershell:

Set-ExecutionPolicyRemoteSigned

[Net.ServicePointManager]::SecurityProtocol= [Net.SecurityProtocolType]::Tls12

Install-PackageProvider-Name NuGet -MinimumVersion 2.8.5.201 -Force

在 ADFS VM 上,运行以下 PowerShellcmdlet 将 ADFS 配置为使用在上一部分创建的证书模板:

Set-AdfsCertificateAuthority -EnrollmentAgentCertificateTemplate "ADFSEnrollmentAgent" -LogonCertificateTemplate "ADFSSSO" -EnrollmentAgent

域名注册机构注册好adfs.basehome.com.cn指向adfs服务器的公网ip地址A记录,并且adfs的公网ip需要开放443端口运行 ConfigureWVDSSO.ps1 脚本。 备注:需要指定 $config 变量值才能完成说明的下一部分,因此请不要关闭完成前面的说明时所用的 PowerShell 窗口。 可以继续使用同一个 PowerShell 窗口,或者在启动新的 PowerShell 会话时将此窗口保持打开状态。

这里在密钥保管库中使用证书(1台ADFS服务器也可以使用证书模式)

请在 ADFS 服务器上运行以下 PowerShell cmdlet,将 ADFSServiceUrl 替换为完整 URL 以访问 AD FS 服务:

PowerShell:

Install-Script -Name ConfigureWVDSSO -Force

$config= ConfigureWVDSSO.ps1 -ADFSAuthority "" -UseCert -CertPath "" -CertPassword [-WvdWebAppAppIDUri ""] [-RdWebURL ""]

例如:

Install-Script-Name ConfigureWVDSSO -Force

$config = ConfigureWVDSSO.ps1 -ADFSAuthority "​​-UseCert -CertPath "c:\ssl.pfx" -CertPassword 123456 -WvdWebAppAppIDUri "​​-RdWebURL "​​WvdWebAppAppIDUri 和 RdWebURL 属性来配置主权云(如 Azure 政府)中的环境。 在 Azure 商业云中,这些属性分别自动设置为 ​​Az

运行以下 PowerShell cmdlet 对 Azure 密钥保管库设置访问策略: PowerShell执行

先登录Azure

Connect-AzAccount

国内版是Connect-AzAccount-EnvironmentName azurechinacloud

Set-AzKeyVaultAccessPolicy -VaultName"" -ServicePrincipalName9cdead84-a844-4324-93f2-b2e6bb768d07 -PermissionsToSecretsget -PermissionsToKeyssign

例如:

Set-AzKeyVaultAccessPolicy -VaultName"hk-key-vault" -ServicePrincipalName 9cdead84-a844-4324-93f2-b2e6bb768d07 -PermissionsToCertificates get -PermissionsToKeys sign

验证密钥保管库下的权限

将证书存储在 Azure 密钥保管库中并为其设置一个标记,该标记包含有权使用该机密的订阅 ID 的逗号分隔列表。 证书已在该密钥保管库中,请运行以下 PowerShell cmdlet 设置标记:

$hp =Get-AzWvdHostPool -Name "" -ResourceGroupName ""

$secret= Update-AzKeyVaultCertificate -VaultName "" -Name "" -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -PassThru

例如:

$hp =Get-AzWvdHostPool -Name "UKSouth-HostSharePools" -ResourceGroupName "UK-South-RG"

$secret = Update-AzKeyVaultCertificate -VaultName"hk-key-vault" -Name " adfs" -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -PassThru

备注:可以选择性地通过更改 ​​AD FS 单一登录设置,配置提示用户输入凭据的频率。默认情况下,在未注册的设备上,将每隔 8 小时提示用户一次。 ​​

配置 Azure 虚拟桌面主机池

现在需要在 Azure 虚拟桌面主机池中配置 AD FS SSO 参数。 为此,请为 Azure 虚拟桌面​​设置 PowerShell 环境​​(如果尚未这样做)并连接到你的帐户。

Install-Module -NameAz.DesktopVirtualization

然后,通过在 AD FS VM 上的同一个PowerShell 窗口中运行以下两个 cmdlet 之一来更新主机池的 SSO 信息:

使用密钥保管库中的证书,请运行以下 PowerShell cmdlet:: Update-AzWvdHostPool -Name "" -ResourceGroupName "" -SsoadfsAuthority "" -SsoClientId "" -SsoSecretType CertificateInKeyVault -SsoClientSecretKeyVaultPath $secret.Id

例如:

Update-AzWvdHostPool-Name "UKSouth-HostSharePools" -ResourceGroupName"UK-South-RG" -SsoadfsAuthority "​​​ ​ ​​"​​​​​​ ​​CertificateInKeyVault -SsoClientSecretKeyVaultPath $secret.Id

备注:需要设置 SsoClientId 属性,使之与部署 SSO 的 Azure 云相匹配。 在 Azure 商业云中,此属性应设置为 ​​但是,此属性所需的设置对于其他云(如 Azure 政府云)会有所不同。​​

要验证,请运行以下命令并检查参数

Get-AzWvdHostPool-Name "UKSouth-HostSharePools" -ResourceGroupName "UK-South-RG" | fl *

这个证书路径和秘钥保管库里的证书标识符一致

接下来测试一下Windows Desktop client登录启动 AVD直接进入桌面,没有任何ADFS和windows身份验证框,大功告成。

同样看到登录时SSO证书在CA里自动注册出现

SSO效果还是一致的,会有2种情况发生:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阿里云视频云vPaaS低代码音视频工厂:极速智造,万象空间
下一篇:Java定义画板类的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~