身份认证对接-OAuth

说明

该功能仅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)的具体实现,可以参照如下标准协议文档

  1. OAuth2.0 标准协议

  2. PKCE 标准协议

另外,有关协议中定义较为宽松的部分,请严格按照如下要求实现:

  1. 实现 OAuth2.0 Authorization 接口,即企业 OAuth2.0 IdP 的登录页地址

    1. 支持请求参数 response_type=code,即授权码模式

  2. 实现 OAuth2.0 Token 接口

    1. 支持请求参数 grant_type=authorization_code,用 code 换取 token

    2. 支持请求参数 grant_type=refresh_token,用 refresh_token 换取新的 access_token

    3. 用于验证请求方身份的 client_id、client_secret 参数,需要支持通过 post 请求传入

  3. 实现 UserInfo 接口,这部分 OAuth2.0 未明确定义

    1. 支持通过 access_token 换取当前用户的 email

    2. 建议实现 GET 类型 HTTP 请求,通过求头 Authorization 传递 access_token

  4. 实现 EndSession 接口,这部分 OAuth2.0 未明确定义

    1. 用于浏览器退登账号,确保邮箱退登时,同时退登已登录的企业身份账号

  5. PKCE

    1. 若支持 PKCE,则 code_challenge 编码方法需要支持 S256

基于 OAuth2.0 的身份认证对接,登录流程图是怎样的

image

配置步骤

最终效果

配置完成后,有两种方式可通过企业 IdP 登录,二选一

方式一:访问企业的邮箱自定义登录地址,默认跳转企业 IdP 的登录页

image.png

方式二:访问企业的邮箱自定义登录地址,点击「更多登录方式」里对应 OAuth2.0 IdP 的图标

image.png

第一步:在企业 IdP 中为邮箱创建 OAuth2.0 Client

若企业是自建的 IdP,则找到企业内对应团队,为邮箱创建 OAuth2.0 Client。

若企业使用的是三方 IDaas 产品,则需要参考此 IDaas 产品的文档指引创建 OAuth2.0 Client,关键配置如下

  1. 授权模式(Token 接口的 grant_type):authorization_code,refresh_token

  2. 返回类型(Authorization 接口的 response_type):code

  3. Token 接口身份验证方式:client_secret_post

  4. 授权码过期时间:建议至少 600 秒

  5. access_token 过期时间:建议 14 天(1209600 秒)

  6. refresh_token 过期时间::建议 28 天(2592000 秒)

  7. 登录回调地址:见配置页,如图

image

第二步:在邮箱域管理配置 OAuth2.0 Client

  1. 邮箱域管理,「企业定制」-「身份源管理」页面,点击「开始配置」按钮,进入「选择认证协议」页面。

image

  1. 点击「OAuth2.0」身份源按钮,进入「OAuth2.0 配置」页面。

image

  1. 请在「OAuth2.0 配置」页面,检查是否满足前提条件。

imageimage

条件

说明

必须满足

添加自定义登录地址

路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「添加域名」

需要依赖企业的邮箱自定义登录地址,正确路由并跳转到对应企业的 OAuth2.0 IdP

完成自定义登录地址的CNAME配置

路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「CNAME设置」

确保企业的邮箱自定义登录地址的正常使用

完成自定义登录地址的备案

路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「备案设置」

确保企业的邮箱自定义登录地址的正常使用

建议满足

将自定义登录地址设置为默认链接

路径:「企业定制」-「界面定制」-「定制邮箱登录地址」-「设为功能邮件链接」

某些场景下,需要提示员工通过企业的自定义登录地址使用邮箱

添加自定义登录地址对应的SSL证书

路径:「企业定制」-「域名管理」-「SSL证书管理」-「上传证书」

使得企业自定义登录地址能够通过 HTTPS 访问,更安全

开启强制HTTPS

路径:「企业定制」-「域名管理」-「SSL证书管理」-「强制启用HTTPS」

访问企业自定义登录地址默认建立 HTTPS 链接,提升安全性

全员强制开启安全密码 / 全员禁止使用第三方客户端

路径:「安全管理」-「账号安全策略」-「强制启用安全密码」/「允许使用第三方客户端」

若想要开启 OAuth2.0 IdP 配置中的“仅允许通过此身份源完成登录”,则必须强制开启安全密码,才能正常使用标准协议(SMTP、IMAP、POP)

强烈建议!邮箱绝大多数的账号安全问题都是源于标准协议,开启安全密码/禁用三方客户端,都能够根除邮箱安全问题,避免被盗号或产生资损

注意:安全密码开启后,邮箱账密将无法通过标准协议认证,需要各个账号自己创建安全密码,并通过此密码使用标准协议。请规划好开启方案,降低影响(尤其是系统邮箱账号)

  1. 请在「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 登录页

注意:请确保使用此身份源可以正常登录邮箱,验证无误后再开启!否则员工将无法登录邮箱!

仅允许通过此身份源完成登录

新企业建议开启此项开关,老企业(大量邮箱账号已使用)谨慎开启!

开启后,员工仅允许通过此身份源认证,不允许通过邮箱账密等其他方式认证。例如:

  1. 无法通过访问阿里企业邮箱官方地址,使用邮箱账密登录

  2. 标准协议和第三方客户端(Outlook、Foxmail)无法通过邮箱账密登录,必须开启「三方客户端安全密码」,使用生成的安全密码认证

注意:请确保已全员强制启用安全密码(安全管理-账号安全策略-强制启用安全密码),否则标准协议和第三方客户端(Outlook、Foxmail)将无法使用!

  1. 配置完成后,点击「保存」按钮完成创建。

第三步:验证认证对接是否成功

保存配置后,会弹出如下信息,需要验证是否都能够正确通过企业 OAuth2.0 IdP 登录邮箱

浏览器:复制地址,通过无痕模式访问。点击 OAuth2.0 图标,跳转企业 IdP 进行登录

image

image.png