1. 单点登录配置指南
专属集成平台
  • 快速开始
    • 集成平台概览
  • 身份与用户管理
    • 用户管理
      • 用户与组织架构管理
    • 角色管理
      • 角色管理配置说明
    • 属性管理
      • 属性管理配置说明
      • IDAAS 扩展物理字段使用说明
    • 上游身份数据集成
      • 通讯录身份集成概述
      • 集成连接器配置指南
        • 通讯录集成-泛微
        • 通讯录集成-飞书
        • 通讯录集成-企业微信
        • 通讯录集成-AD
        • 通讯录集成-睿人事
        • 通讯录集成-北森
        • 通讯录集成-SCIM
        • 通讯录集成-用友EHR
        • 通讯录集成-Azure AD
        • 通讯录集成-致远
        • 通讯录集成-LDAP
        • 通讯录集成-数据库
        • 通讯录集成-钉钉
          • 基础说明
          • 钉钉集成连接器如何配置属性映射
      • 通过连接流实现身份集成
        • 在连接流画布中完成身份集成配置
      • 身份集成常见问题
        • 常见问题 & 排错指南
    • 下游身份数据同步
      • 通讯录同步概述
      • 同步连接器配置指南
        • 通讯录同步-企业微信
        • 通讯录同步-AD
        • 通讯录同步-用友U8C
        • 通讯录同步-钉钉
          • 基础说明
          • 如何配置部门职位扩展字段
      • 通过连接流实现身份同步
        • 使用连接流实现身份下游同步
      • 身份同步常见问题
        • 常见问题 & 排错指南
        • 使用代理网关进行身份同步
  • 认证源管理
    • 认证源基础说明
      • 认证源选型说明
      • 认证源管理概述
    • 认证源配置指南
      • 基础协议配置
        • 认证源-CAS协议
        • 认证源-OIDC协议
        • 认证源-OAuth2协议
      • 三方认证源配置手册
        • 认证源-钉钉
        • 认证源-AD
        • 认证源-飞书
        • 认证源-LDAP
        • 认证源-微信
        • 认证源-微信公众号
        • 认证源-Google Workspace
        • 认证源-AD Azure
        • 认证源-美云智数
        • 认证源-企业微信
  • 应用管理
    • 基础说明
      • 应用管理概述
      • 应用创建与配置
    • 应用单点登录
      • 单点登录概述
      • 单点登录配置
      • 单点登出配置
      • 授权范围配置
      • 自定义集成单点登录配置说明
      • 应用密码代填
      • 应用网关
      • 单点登录配置指南
        • 单点登录-OIDC
        • 单点登录-SAML协议
        • 单点登录-OAuth2
        • 单点登录-CAS协议
        • 单点登录-钉钉SSO
        • 单点登录-分贝通
        • 单点登录-用友NCC
        • 单点登录-宜搭
        • 单点登录-泛微OA
        • 单点登录-致远OA
        • 单点登录-金蝶云星空
        • 单点登录-中国电子云邮箱
        • 单点登录-阿里云控制台(RAM)
        • 单点登录-纷享销客应用
        • 单点登录-纷享销客待办
        • 单点登录-Exchange
        • Exchange-双入口配置指南
    • 应用授权管理
      • 应用授权概述
      • 基于组织架构和用户授权
      • 基于角色授权(RBAC)
      • 基于用户属性授权(ABAC)
      • 用户自主申请应用(OA审批授权)权限
    • 应用分发
      • 企业应用分发
      • ABM应用分发
    • 使用应用调用集成平台 OPENAPI
      • M2M接口授权
      • 接口调用权限配置说明
  • 连接中心
    • 产品概述
      • 什么是 AI 连接流
      • AI 连接流的典型使用场景
    • 基础功能
      • 流程运行日志
      • 功能概览
      • 如何创建 AI 工作流
      • 授权凭证管理
      • 错误处理
    • 节点说明
      • 节点基础类型说明
      • 数据处理节点
        • 文本处理节点
        • 数组处理
        • 数据集合节点
      • 文件处理节点
        • 「Base64 转 URL」动作说明
        • 「PPT分页切割」动作说明
      • 应用节点
        • Teambition
        • 金蝶云 K3Cloud
      • 内置节点
        • 子流程调用
        • 缓存处理
        • 分支节点
        • 循环执行
        • MYSQL 触发动作说明
        • 数字签名
        • Webhook触发
        • 缓存列表处理
        • 条件分支
        • FTP
        • 延时节点
        • 模型子节点
        • MCP SERVER 工具
        • 邮件发送
        • 存储子节点
        • 工具子节点
        • HTTP 请求
        • 变量节点
        • 加解密节点
        • 返回变量
      • 运维管理节点
        • 数据校验节点
      • AI节点
        • 构建你的第一个 AI Agent
        • AI 浏览器操作节点
        • AI Agent节点使用指南
        • AI 消息对话节点 & 组件嵌入
  • 审计日志
    • 管理员行为日志
    • 用户变更日志
    • 接口调用日志
    • 用户行为日志
    • 消息发送日志
  • 权限中心
    • 管理员账号管理
    • 管理员角色管理
  • 品牌设置
    • 登录页设置
      • 登录页面配置
      • 登录页CSS自定义页面样式
      • CSS定制页面内容:样式修改指南及故障排除
    • 短信设置
      • 短信模板配置
      • 短信服务使用及签名修改使用指南
      • 短信服务-自定义连接流配置
      • 阿里云短信网关配置指引
    • 邮件设置
      • 邮件模板配置
      • 通过自定义连接流发送邮件
      • SMTP 配置与测试支持文档
    • 企业消息设置
      • 企业消息配置
      • 企业消息(钉钉_飞书)配置
    • 分发页面设置
      • 分发页面设置
  • 平台设置
    • 功能概述
    • 授权管理
    • 代理网关
    • 授权信息
    • 登录策略配置
      • 弱密码检测功能说明
      • 登录流程配置
      • 自动登录功能配置
    • MFA 配置
      • MFA基础配置
      • 使用连接流自定义 MFA 策略
    • 运维日志
      • 运维日志下载
  • 最佳实践
    • AD-LDAP接入指南
    • 第三方平台应用创建指南
      • 钉钉
        • 钉钉全套集成指南
        • 创建钉钉开放平台应用
      • 飞书
        • 飞书全套集成指南
        • 创建飞书开放平台应用
      • 企微
        • 企业微信全套集成指南
        • 创建企业微信开放平台应用
  • 开放接口
    • 鉴权认证
      • 获取access_token(请求体方式)
      • 获取access_token(Basic认证方式)
    • 用户管理
      • 查询用户
      • 创建用户
      • 根据多个条件过滤并查询用户信息
      • 根据用户帐号获取用户信息
      • 修改用户
      • 启用/禁用用户
      • 删除用户
      • 修改用户密码
    • 组织部门
      • 获取组/部门的列表
      • 创建组/部门
      • 根据组/部门ID获取组/部门的信息
      • 修改组/部门
      • 删除组/部门
      • 根据组/部门ID获取下级组/部门信息
      • 过滤部门信息
    • 角色管理
      • 创建角色
      • 获取单个角色详情
      • 修改角色
      • 删除角色
      • 查询角色列表
      • 根据应用ID和用户ID获取角色列表
      • 查看角色所对应的用户列表
      • 给多个用户添加静态角色
      • 删除用户静态角色
      • 获取用户的角色信息
    • 连接中心
      • Webhook启动连接流
    • 事件通知
      • 连接器事件通知
  1. 单点登录配置指南

单点登录-Exchange

概览与适用范围#

目标: 通过 ADFS 为 Exchange OWA/EAC 提供基于声明的单点登录(SSO)。
影响范围: OWA、EAC 登录流程将重定向至 ADFS;需同步更新信赖方与组织配置。
前置条件: ADFS/Exchange 已可用,时间同步,公网/内网 DNS 与 HTTPS 证书有效。

架构与认证链路#

认证链路(目标): 专属集成平台(SAML IdP) → ADFS(作为中介/信赖方与声明发起) → Exchange(OWA/EAC,作为 Relying Party) → 完成 SSO。
流转说明:
外网入口:用户访问网关映射的外网域名 → 跳转 专属集成平台 登录 → 专属集成平台 向 ADFS 发起 SAML → ADFS 向 Exchange 颁发令牌 → 用户进入 OWA/EAC。
内网入口:用户访问内网域名 →(方案待定,见下节)保持原有表单或使用 ADFS 页面。

执行顺序#

步骤 0:前置检查与基线快照#

变更前建议: 记录当前 Get-OrganizationConfig 关键项(Adfs*)与 OWA/ECP 访问状态,便于回滚。
服务健康: 确认 ADFS 服务运行状态与证书有效期;确认 Exchange 服务器时间与域控同步。

步骤 1:确认 ADFS 服务状态(需为 Running)#

Get-Service adfssrv | Select-Object Name, Status

步骤 2:创建 OWA 和 EAC 信赖方信任#

1)创建OWA信赖方信任 image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png#
命令添加:
Add-AdfsRelyingPartyTrust -Name "Outlook On The Web" `
  -Notes "Trust for OWA via ADFS" `
  -MetadataUrl "https://mail.digitalsee.co/FederationMetadata/2007-06/FederationMetadata.xml" `
  -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' `
  -IssueOAuthRefreshTokensTo NoDevice
2)创建EAC信赖方信任 image.pngimage.pngimage.png#
命令添加:
Add-AdfsRelyingPartyTrust -Name "Exchange Admin Center" `
  -Notes "Trust for EAC via ADFS" `
  -MetadataUrl "https://mail.digitalsee.co/FederationMetadata/2007-06/FederationMetadata.xml" `
  -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' `
  -IssueOAuthRefreshTokensTo NoDevice

步骤 3:添加 专属集成平台 声明提供方信任#

请求idaas的metadata文件,保存在本地;访问idaas管理后台,登录成功后“应用中心-应用管理-saml应用-单点配置”中可以看到metadata文件的链接地址;
image.png
image.png
打开ADFS管理控制台 → 声明提供方信任,将metadata文件导入
image.png
image.png

步骤 4:配置 ADFS 声明规则#

1)为OWA配置UPN和SID声明
Set-AdfsRelyingPartyTrust -TargetName "Outlook On The Web" -
  IssuanceTransformRules '@RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);'
为EAC配置相同UPN和SID声明
Set-AdfsRelyingPartyTrust -TargetName "Exchange Admin Center" -
  IssuanceTransformRules '@RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);'
image.png
名称:ActiveDirectoryUPN
类型:自定义规则
自定义规则:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
image.png
名称:ActiveDirectoryUserSID
类型:自定义规则
自定义规则:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value);
image.png
image.png
名称:Pass Through or Filter an Incoming Claim
类型:转换传入声明
传入:upn   传出:upn
image.png
3)为IDAAS声明规则
名称:Map nameidentifier to upn
类型:自定义规则
自定义规则:
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"]
 => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
image.png
名称:Map email to upn
类型:自定义规则
自定义规则:
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email"]
 => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
image.png

步骤 5:证书准备与导入#

5.1 导出签名证书#

打开 ADFS 管理控制台 → 服务 → 证书 → 找到 “Token-Signing” 证书(自签名) 右键 “查看证书” → 详细信息 → 复制到文件 → 选择 “Base-64 编码 X.509” → 保存为ADFSTokenSigning.cer
image.png
image.png
image.png

5.2(可选)生成证书#

在ADFS服务器上生成新的Token-Signing和Token-Decrypting证书:
 # 生成Token-Signing证书
 $signCert = New-SelfSignedCertificate -Subject "CN=ADFS Signing - ad09.digitalsee.co" -CertStoreLocation "Cert:\LocalMachine\My" -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048
 
 # 生成Token-Decrypting证书  
 $decCert = New-SelfSignedCertificate -Subject "CN=ADFS Encryption - ad09.digitalsee.co" -CertStoreLocation "Cert:\LocalMachine\My" -KeyUsage KeyEncipherment -KeyAlgorithm RSA -KeyLength 2048

\# 导出PFX证书 
signCert -FilePath C:\temp\adfs-token-signing.pfx -Password $signPwd -Force
decCert -FilePath C:\temp\adfs-token-decrypting.pfx -Password $decPwd -Force



#### 5.3 导入到 Exchange

### 导出证书到Exchange服务器

cer格式:证书导入到根证书存储
```powershell
Import-Certificate -FilePath "C:\Temp\ADFSTokenSigning.cer" -CertStoreLocation "Cert:\LocalMachine\Root"
PFX格式:在Exchange服务器导入证书
# 导入证书到My存储
$signPwd = Read-Host "输入PFX密码" -AsSecureString
Import-PfxCertificate -FilePath C:\temp\adfs-token-signing.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $signPwd

$decPwd = Read-Host "输入PFX密码" -AsSecureString
Import-PfxCertificate -FilePath C:\temp\adfs-token-decrypting.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $decPwd

5.4 验证指纹(替换为实际指纹)#

Get-ChildItem "Cert:\LocalMachine\Root" | Where-Object { $_.Thumbprint -eq "11DCC57D14D93734366917B78A03DC9712D0369F" }

步骤 6:内外网双入口策略#

Exchange-双入口配置指南

步骤 7:绑定 ADFS 信息(替换为实际参数)#

Set-OrganizationConfig -AdfsIssuer "https://adfs.digitalsee.co/adfs/ls/" ` # ADFS登录端点
-AdfsAudienceUris @("https://mail.digitalsee.co/owa/", "https://mail.digitalsee.co/ecp/") ` # 匹配ADFS信赖方标识符
-AdfsSignCertificateThumbprint "11DCC57D14D93734366917B78A03DC9712D0369F" # 令牌签名证书指纹
示例:
Set-OrganizationConfig -AdfsIssuer "https://ad09.digitalsee.co/adfs/ls/" `
-AdfsAudienceUris @("https://mail01.digitalsee.co/owa/", "https://mail01.digitalsee.co/ecp/") `
-AdfsSignCertificateThumbprint "9A3463D65F4B5396B830431BB5794A844BDB680A"

步骤 8:配置 OWA/EAC 虚拟目录启用 ADFS 身份验证#

方法1:
:::
Set-OrganizationConfig -AdfsAuthentication $true
:::
假设出现了以下报错 :
image.png
先确定ADFS的指纹证书和导入的证书指纹是否一致,参考 导出证书到Exchange服务器 ;如果一致可以使用XML配置启用ADFS认证
方法2: 使用XML配置方式启用ADFS认证
# 创建完整的ADFS配置XML
# ⚠️ 重要:以下参数需要根据你的环境进行修改
$adfsConfig = @"
<service>
  <federatedAuthentication>
    <wsFederation passiveRedirectEnabled="true"
                  issuer="https://ad09.digitalsee.co/adfs/ls/"
                  realm="https://fakerealm/"
                  requireHttps="true" />
    <cookieHandler requireSsl="true" path="/" />
  </federatedAuthentication>
  <certificateValidation certificateValidationMode="PeerOrChainTrust" />
  <audienceUris>
    <add value="https://mail01.digitalsee.co/owa/" />
    <add value="https://mail01.digitalsee.co/ecp/" />
  </audienceUris>
  <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <trustedIssuers>
      <add thumbprint="9a3463d65f4b5396b830431bb5794a844bdb680a" name="Adfs" />
    </trustedIssuers>
  </issuerNameRegistry>
</service>
"@
Set-OrganizationConfig -AdfsAuthenticationConfiguration $adfsConfig
# 📝 XML 参数修改说明:
# 1. issuer="https://ad09.digitalsee.co/adfs/ls/"
# → 修改为你的 ADFS 服务器地址
# 2. audienceUris 中的 value → 修改为你的 Exchange OWA 和 ECP 地址
# 3. thumbprint="FCE17065EFAA24615DCB51C04E8DFC91CDB03DD0" → 修改为你的 ADFS Token-Signing 证书指纹
# 4. realm="https://fakerealm/"
# → 保持此值不变,这是固定值
验证配置:
Get-OrganizationConfig | Select-Object AdfsAuthentication,AdfsIssuer,AdfsAudienceUris,AdfsSignCertificateThumbprints,AdfsEncryptCertificateThumbprint | Format-List (Get-OrganizationConfig).AdfsAuthenticationConfiguration
#重启邮箱服务
iisreset

回滚与恢复#

禁用 ADFS 身份验证:
Set-OrganizationConfig -AdfsAuthentication $false
清空 ADFS 相关组织配置(如需完整回退):
Set-OrganizationConfig -AdfsIssuer $null
Set-OrganizationConfig -AdfsAudienceUris @()
Set-OrganizationConfig -AdfsSignCertificateThumbprints @() ```
重启 IIS 服务: 执行 iisreset,验证 OWA/ECP 恢复至原有身份验证流程。

常见问题与排查#

症状: 启用后出现 500/跳转循环或“签名证书指纹不匹配”。
检查1: Get-OrganizationConfig 中指纹是否与 ADFS Token-Signing 证书一致;证书是否导入至正确存储。
检查2: ADFS 信赖方标识符是否与 -AdfsAudienceUris 完全一致(含末尾斜杠)。
检查3: 时间同步与证书有效期;浏览器缓存与 Cookie。
应对: 可按文档中的 XML 方式设置 AdfsAuthenticationConfiguration 强制写入配置后 iisreset。

验证结果#

访问 https://mail01.digitalsee.co/owa/ 成功跳转到ADFS登录页面
可以看到IDaaS SAML Provider选项
Exchange与ADFS集成完成
修改于 2026-05-06 13:02:30
上一页
单点登录-纷享销客待办
下一页
Exchange-双入口配置指南
Built with