菜单

使用 IIS 集成 Windows 身份验证的 SSO(单点登录)

目录

集成 Windows 身份验证概述

集成 Windows 身份验证 (IWA) 是一种当 IIS 和用户登录到同一域时自动向 IIS 提供用户身份验证信息的机制。当您使用 ASP.NET C# 创建站点时,您可以获得用户身份验证确定和经过身份验证的用户信息。

这允许用户访问 IIS 托管(或链接)的 Web 应用程序,而无需额外的登录操作,并支持与其他应用程序服务器的 SSO 集成。

*如果您未参与同一域或未经身份验证的用户访问 IIS 页面,则会显示登录拨号盘,如果您未正确进行身份验证,则会出现 HTTP 错误 401.1 – 未经授权。

SSO(单点登录)流程

Chat&Messenger On-Premise 的 Ultimate 计划允许通过集成 Windows 身份验证进行 SSO。 SSO流程如下。

  1. 客户端首先访问集成Windows认证页面/cam-iissso
  2. /cam-iissso 页面使用 ASP.NET 来确定它是否经过身份验证并链接到 CAMServer。
  3. CAMServer 执行 LDAP 搜索以确认其是常规 AD 用户,生成 ssoToken(30 字节或更多字节的唯一随机值)和用于访问 CAMServer 的 URL,并请求重定向。
  4. 访问 CAMServer 并使用 ssoToken 进行身份验证。如果身份验证成功,将分配用于 API 访问的会话 ID。

使用 SSO 的用户的用户 ID 必须与 Active Directory 中的 UserPrincipalName 匹配,并提前在 Chat&Messenger 中注册。 UserPrincipalName 是 我想要获取 Active Directory 用户列表并创建 CSV。 另请参阅以下内容。

实现 SSO 的要求

将 Windows Server 加入域

请将运行 CAMServer/IIS 的 Windows Server 加入到 Active Directory 域。

若要检查现有 Windows Server 所加入的域,请进入“服务器管理器”→单击左侧菜单上的“本地服务器”→单击“计算机名称”并参考域列。

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

安装IIS

从服务器角色安装 IIS。

安装IIS时,在角色服务选择选项中勾选以下内容。

  • Windows 身份验证
  • ISAPI 过滤器
  • 单独安装 ISAPI 扩展

请在与 CAMServer 相同的服务器上并在端口 80 上运行 IIS。

ISAPI过滤器:支持IIS中加载扩展模块。需要加载 AspNetCoreModuleV2。

ISAPI 扩展:将 ISAPI 扩展添加到 IIS。 AspNetCoreModuleV2 操作所需。启动 IIS 管理器 (iisreset)

安装 ASP.NET Core 托管捆绑包

ASP.NET Core 托管捆绑包 请安装。

在 IIS 环境中托管 ASP.NET Core 应用程序时,只需安装 ASP.NET Core Hosting Bundle 就会自动安装以下内容: .NET Runtime ASP.NET Core Runtime

安装后,重新启动 IIS 并确保处理程序映射中存在 AspNetCoreModuleV2。

重新启动 IIS
处理程序映射

添加应用程序 (cam-iissso)

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

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

另外,向 cam-iissso-net8.0 文件夹的 IIS_IUSRS 组授予查看权限(读取和执行、列出文件夹内容、读取)。

启用 Windows 身份验证

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

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

设置互联网选项

将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 的计算机帐户上完成。例如,广告 对于使用主机名运行的 IIS,按如下方式注册 SPN:

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

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

setspn-L ad$

此结果 HTTP/sso.example.com 如果显示,则表示 SPN 注册成功。

HTTP代理连接环境下不可用

请注意,SSO 不能在 HTTP 代理连接环境中使用。

LoadBalancer + SSL 环境中的配置

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

あわせて読みたい
如何配置 IIS 集成 Windows 身份验证以在负载平衡器 + SSL 环境中成功 [关于集成 Windows 身份验证] 当 IIS 和用户属于同一个 Active Directory 域时,会自动执行集成 Windows 身份验证。
  • URLをコピーしました!
目录