菜单

使用 IIS 集成 Windows 身份验证的 SSO

请在新安装的环境中使用以下命令。

目录

集成 Windows 身份验证概述

集成 Windows 身份验证 (IWA) 是一种机制,当 IIS 和用户都登录到同一域时,它会自动向 IIS 提供用户身份验证信息。使用 ASP.NET 的 C# 创建站点时,您可以确定用户是否已通过身份验证,并检索有关已通过身份验证用户的信息。

这样,用户无需额外的登录步骤即可访问托管在 IIS 上(或与 IIS 集成)的 Web 应用程序,并可与其他应用程序服务器实现 SSO 集成。

*如果用户未加入同一域或未通过身份验证,则 IIS 页面将显示登录拨号,如果身份验证未正确执行,则会发生 HTTP 错误 401.1 – 未授权。

单点登录 (SSO) 流程

Chat&Messenger 本地部署的 Ultimate 方案通过集成的 Windows 身份验证支持单点登录 (SSO)。SSO 流程如下:

  1. 客户端首先访问集成的 Windows 身份验证页面 /cam-iissso。
  2. /cam-iissso 页面使用 ASP.NET 来确定用户是否已通过身份验证,然后连接到 CAMServer。
  3. CAMServer 执行 LDAP 搜索以验证用户是否为合法的 AD 用户,生成用于访问 CAMServer 的 URL 以及 ssoToken(30 字节或更长的唯一随机值),然后请求重定向。
  4. 访问 CAMServer 并使用 ssoToken 进行身份验证。身份验证成功后,系统将分配一个用于 API 访问的会话 ID。

使用单点登录 (SSO) 的用户的用户 ID 必须与 Active Directory 中的 UserPrincipalName 匹配,并且必须事先在 Chat&Messenger 中注册。UserPrincipalName 是 我想获取 Active Directory 用户列表并创建一个 CSV 文件。 请同时参考以下内容。

实施单点登录的要求

将 Windows Server 加入域

请将运行 CAMServer/IIS 的 Windows 服务器加入 Active Directory 域。

要查看现有 Windows Server 加入到哪些域,请转到“服务器管理器”,单击左侧菜单中的“本地服务器”,单击“计算机名称”,然后参考域字段。

此外,IIS 应该与 CAMServer 位于同一台服务器上,并在 80 端口上运行。如果在 CAMServer 前面放置一个负载均衡器,CAMServer 将在 8080 端口上运行,因此 IIS 也可以使用 443 端口。

IIS安装

从服务器角色安装 IIS。安装 IIS 时,请在角色服务选择选项中选中以下选项。

  • Windows 身份验证
  • ISAPI 过滤器
  • ISAPI 扩展

ISAPI 筛选器:支持在 IIS 中加载扩展模块。加载 AspNetCoreModuleV2 需要此筛选器。

ISAPI 扩展:向 IIS 添加 ISAPI 扩展。这是 AspNetCoreModuleV2 正常运行所必需的。

安装 ASP.NET Core Hosting Bundle。

ASP.NET Core 托管包 请安装该软件。安装完成后,重启 IIS 并验证 AspNetCoreModuleV2 是否存在于处理程序映射中。

要在 IIS 环境中托管 ASP.NET Core 应用程序,只需安装 ASP.NET Core Hosting Bundle 即可。

同样,在升级 ASP.NET Core 运行时时,只需下载并安装 Hosting Bundle 即可。您可以使用以下命令检查您正在运行的 ASP.NET Core 运行时:
dotnet –list-runtimes

IIS重启
处理程序映射

添加应用程序(cam-iissso)

请将 cam-iissso 应用程序添加到您的默认网站。

  • 别名:cam-iissso
  • 物理路径: \sys\cam-iissso-net8.0

此外,授予 IIS_IUSRS 组对 cam-iissso-net8.0 文件夹的只读访问权限(读取和执行、列出文件夹内容、读取)。

启用 Windows 身份验证

右键单击“Windows 身份验证”,然后选择“启用”。

如果启用了“匿名身份验证”,请将其禁用。

Internet 选项设置

将 IIS 提供的站点添加到内网区域。

选择“Internet 选项”,单击“安全”选项卡,然后选择“本地 Intranet”。单击“站点”按钮,选择“高级”,然后添加站点 URL。

验证自动登录功能。

点击“自定义级别”,然后在“用户身份验证”→“登录”下,确保已选择“在内网区域自动登录”。

C&M 用户的所有客户端终端都需要此设置,但可以使用组策略管理控制台进行集中管理。

LDAP 设置

如果您想使用 IIS 实现单点登录,LDAP 设置(需要 LDAPUrl、LDAPBaseDN 和执行代理身份验证的 AD 用户。)

使用 FQDN(完全限定域名)进行访问和 SPN 注册。

使用主机名(NetBIOS 名称)访问 IIS Windows 集成身份验证页面不需要注册,但使用 FQDN(完全限定域名,例如 sso.example.com)访问时需要 SPN 注册。

服务主体名称 (SPN) 是 Kerberos 身份验证中用于唯一标识 Active Directory 上特定服务的名称。当使用完全限定域名 (FQDN) 访问服务时,注册 SPN 可使客户端正确请求其正在访问的服务的 Kerberos 票证。

例如 https://sso.example.com 访问服务时,客户端(浏览器)会向 Active Directory 请求票证,声明“我想连接到名为 HTTP/sso.example.com 的服务”。Active Directory 会检查 SPN 关联的帐户,并颁发相应的服务票证。如果 SPN 注册不正确,Kerberos 身份验证将失败,并显示身份验证对话框。

SPN 注册是针对托管 IIS 的计算机帐户执行的。例如:广告 对于运行在主机名 [hostname] 下的 IIS,请按如下方式注册 SPN:

setspn -S HTTP/sso.example.com ad$

注册后,您可以使用以下命令进行检查:

setspn -L ad$

这一结果 HTTP/sso.example.com 如果显示此信息,则表示您的 SPN 注册成功。

在HTTP代理连接环境下不可用。

请注意,HTTP代理连接环境下不支持SSO。

负载均衡器 + SSL 环境配置

如果您在负载均衡器 + SSL 环境中使用 IIS 集成 Windows 身份验证,请参阅以下博客文章。

あわせて読みたい
在负载均衡器 + SSL 环境中成功配置 IIS 集成 Windows 身份验证。 【关于集成 Windows 身份验证】当 IIS 和用户属于同一个 Active Directory 域时,集成 Windows 身份验证会自动启用身份验证…….
あわせて読みたい
在 L4 负载均衡器环境中成功配置 IIS 以实现集成 Windows 身份验证。 【摘要】本文介绍如何在 L4 负载均衡器 + SSL 终止环境中配置 IIS 中的集成 Windows 身份验证 (IWA)。.
  • URLをコピーしました!
目录