该功能仅AI尊享版支持,版本差异请参考版本介绍。
OAuth2.0
OAuth2.0 是什么
OAuth 2.0 是一个开放的授权协议,它允许第三方应用在用户授权的前提下,安全地访问用户的资源(如数据、服务等),而无需用户提供自己的账号密码。
换句话说,邮箱可以通过 OAuth2.0,将认证流程交给企业,且过程不透明,企业账号及密码不会经过邮箱服务器。
如何理解基于 OAuth2.0 的身份认证对接
如果想要通过企业 IdP 进行身份认证最终完成邮箱登录,需要邮箱服务端与企业 IdP 服务端二者按照某种约定完成信息的传递,这个约定就是 OAuth2.0 标准协议。
OAuth2.0 标准协议支持多种模式,这里需要授权码模式(Authorization Code Grant)
需要邮箱服务端和企业 IdP 服务端分别实现 OAuth2.0 标准协议的授权码模式,前者作为 OAuth2.0 Client,后者作为 OAuth2.0 Server。
OAuth2.0 如何实现
OAuth2.0 授权码模式(Authorization Code Grant)的具体实现,可以参照如下标准协议文档
另外,有关协议中定义较为宽松的部分,请严格按照如下要求实现:
实现 OAuth2.0 Authorization 接口,即企业 OAuth2.0 IdP 的登录页地址
支持请求参数 response_type=code,即授权码模式
实现 OAuth2.0 Token 接口
支持请求参数 grant_type=authorization_code,用 code 换取 token
支持请求参数 grant_type=refresh_token,用 refresh_token 换取新的 access_token
用于验证请求方身份的 client_id、client_secret 参数,需要支持通过 post 请求传入
实现 UserInfo 接口,这部分 OAuth2.0 未明确定义
支持通过 access_token 换取当前用户的 email
建议实现 GET 类型 HTTP 请求,通过求头 Authorization 传递 access_token
实现 EndSession 接口,这部分 OAuth2.0 未明确定义
用于浏览器退登账号,确保邮箱退登时,同时退登已登录的企业身份账号
PKCE
若支持 PKCE,则 code_challenge 编码方法需要支持 S256
基于 OAuth2.0 的身份认证对接,登录流程图是怎样的
配置步骤
最终效果
配置完成后,有两种方式可通过企业 IdP 登录,二选一
方式一:访问企业的邮箱自定义登录地址,默认跳转企业 IdP 的登录页
方式二:访问企业的邮箱自定义登录地址,点击「更多登录方式」里对应 OAuth2.0 IdP 的图标
第一步:在企业 IdP 中为邮箱创建 OAuth2.0 Client
若企业是自建的 IdP,则找到企业内对应团队,为邮箱创建 OAuth2.0 Client。
若企业使用的是三方 IDaas 产品,则需要参考此 IDaas 产品的文档指引创建 OAuth2.0 Client,关键配置如下
授权模式(Token 接口的 grant_type):authorization_code,refresh_token
返回类型(Authorization 接口的 response_type):code
Token 接口身份验证方式:client_secret_post
授权码过期时间:建议至少 600 秒
access_token 过期时间:建议 14 天(1209600 秒)
refresh_token 过期时间::建议 28 天(2592000 秒)
登录回调地址:见配置页,如图
第二步:在邮箱域管理配置 OAuth2.0 Client
邮箱域管理,「企业定制」-「身份源管理」页面,点击「开始配置」按钮,进入「选择认证协议」页面。
点击「OAuth2.0」身份源按钮,进入「OAuth2.0 配置」页面。
请在「OAuth2.0 配置」页面,检查是否满足前提条件。
条件 | 说明 |
必须满足 | |
添加自定义登录地址 | 路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「添加域名」 需要依赖企业的邮箱自定义登录地址,正确路由并跳转到对应企业的 OAuth2.0 IdP |
完成自定义登录地址的CNAME配置 | 路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「CNAME设置」 确保企业的邮箱自定义登录地址的正常使用 |
完成自定义登录地址的备案 | 路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「备案设置」 确保企业的邮箱自定义登录地址的正常使用 |
建议满足 | |
将自定义登录地址设置为默认链接 | 路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「设为功能邮件链接」 某些场景下,需要提示员工通过企业的自定义登录地址使用邮箱 |
添加自定义登录地址对应的SSL证书 | 路径:「企业定制」-「域名管理」-「SSL证书管理」-「上传证书」 使得企业自定义登录地址能够通过 HTTPS 访问,更安全 |
开启强制HTTPS | 路径:「企业定制」-「域名管理」-「SSL证书管理」-「强制启用HTTPS」 访问企业自定义登录地址默认建立 HTTPS 链接,提升安全性 |
全员强制开启安全密码 / 全员禁止使用第三方客户端 | 路径:「安全管理」-「账号安全策略」-「强制启用安全密码」/「允许使用第三方客户端」 若想要开启 OAuth2.0 IdP 配置中的“仅允许通过此身份源完成登录”,则必须强制开启安全密码,才能正常使用标准协议(SMTP、IMAP、POP) 强烈建议!邮箱绝大多数的账号安全问题都是源于标准协议,开启安全密码/禁用三方客户端,都能够根除邮箱安全问题,避免被盗号或产生资损 注意:安全密码开启后,邮箱账密将无法通过标准协议认证,需要各个账号自己创建安全密码,并通过此密码使用标准协议。请规划好开启方案,降低影响(尤其是系统邮箱账号) |
请在「OAuth2.0 配置」页面,配置相关的字段信息。
注意:初次配置,需要验证测试,请先保持“设为默认登录方式”配置为关闭状态,以免导致员工无法正常登录邮箱
字段/功能 | 说明 |
基础配置 | |
显示名称 | 这个名称会显示在用户登录界面的按钮上 |
应用 Logo | 登录页会显示此图标,作为 OAuth2.0 登录的入口 |
Client ID | 企业 OAuth2.0 IdP 提供的 Client ID |
Client Secret | 企业 OAuth2.0 IdP 提供的 Client Secret |
Scope 授权范围 | OAuth2.0 的 Authorization 接口定义的 scope,若不支持,可以不填 |
授权 URL | OAuth2.0 的 Authorization 接口,即企业 OAuth2.0 IdP 的登录页地址 |
Token URL | OAuth2.0 的 Token 接口,用于 code 换取 token / refresh_token 换取新的 access_token |
UserInfo 接口 HTTP 请求报文 | UserInfo 接口可以用 token 换取用户信息,这里通过标准的 HTTP 请求报文描述调用方式 ${access_token} 表示请求参数 token 的变量值,变量名称可根据需要修改 |
UserInfo 接口是否使用 HTTP 链接 | 若为 false,使用 HTTPS 建立连接 |
UserInfo 接口响应中,email 字段的 JsonPath | UserInfo 接口响应里 email 字段的 JsonPath,用于登录时获取当前用户的 email。可以通过网上的 JsonPath 在线工具进行验证 |
EndSession 接口 HTTP 请求报文 | EndSession 接口是浏览器端的退登接口(擦除企业 IdP 登录态),这里通过标准的 HTTP 请求报文描述调用方式 ${redirect_uri} 表示回调地址的变量值,变量名称可根据需要修改 |
EndSession 接口是否使用 HTTP 链接 | 若为 false,使用 HTTPS 建立连接 |
回调地址 | 你需要将这些链接全部配置到企业 OAuth2.0 IdP 的回调地址上 |
邮箱登录地址 | 通过 IdP 登录邮箱的地址,正常应该是企业的邮箱定制登录地址。 |
登录配置 | |
启用身份源 | 必须开启此开关,才能验证/使用此身份源进行登录 开启后,登录页会新增依赖此身份源的 OAuth2.0 登录按钮 |
设为默认登录方式 | 开启后,访问企业邮箱的定制登录地址,会自动跳转企业 IdP 登录页 注意:请确保使用此身份源可以正常登录邮箱,验证无误后再开启!否则员工将无法登录邮箱! |
仅允许通过此身份源完成登录 | 新企业建议开启此项开关,老企业(大量邮箱账号已使用)谨慎开启! 开启后,员工仅允许通过此身份源认证,不允许通过邮箱账密等其他方式认证。例如:
注意:请确保已全员强制启用安全密码(安全管理-账号安全策略-强制启用安全密码),否则标准协议和第三方客户端(Outlook、Foxmail)将无法使用! |
配置完成后,点击「保存」按钮完成创建。
第三步:验证认证对接是否成功
保存配置后,会弹出如下信息,需要验证是否都能够正确通过企业 OAuth2.0 IdP 登录邮箱
浏览器:复制地址,通过无痕模式访问。点击 OAuth2.0 图标,跳转企业 IdP 进行登录