Sign inGet Started

在 Google Workspace 中设置 SSO

本页介绍 SSO 连接中 Google Workspace 一侧的配置。Bird 一侧的操作(验证域名、测试、激活和强制使用 SSO)对所有提供商通用,详见 SSO 与用户配置。

Google 和 Bird 各自需要对方的值,因此从哪边开始取决于所用协议。操作时请同时打开两边。

Google 的两个行为会导致大部分首次测试失败,而且都不会向 Bird 报告任何信息:

  • 测试前先开启用户访问权限。 新建的自定义 SAML 应用默认对所有人关闭。在你为需要登录的用户启用它之前,Google 会在自身一侧拒绝请求,测试窗口不会显示任何内容。
  • 保存后等待几分钟。 Google 对 SAML 应用的更改(响应签名、Name ID 格式、用户访问)大约需要两到四分钟才能生效。在此期间运行测试会返回之前的配置,看起来像是 Bird 的问题,但实际上不是。

SAML

SAML 连接请从 Bird 开始。SAML 连接的 Entity ID 和 Assertion Consumer Service URL 由连接本身生成,因此先使用 I have not set up my provider yet 创建连接,记录它随后显示的值,然后再回到 Supply the details。不使用占位值设置 SAML 介绍了完整流程。

Google 不为自定义 SAML 应用提供元数据 URL。请从 Google 管理控制台下载元数据文件,将其内容粘贴到 Bird 连接的 Supply the details 中,并选择元数据文档选项。

Google 的字段名称与 Bird 的不一致:

Bird 中 Register these with your identity provider 下的名称Google Workspace 中的名称
Assertion Consumer Service URLACS URL
Entity IDEntity ID
此连接的登录 URLStart URL(可选)

关闭 Signed response

保持 Signed response 未勾选。勾选后,Google 会签名响应但不签名其中的断言,而 Bird 验证的是断言本身的签名,因此每次登录都会因签名错误被拒绝,看起来像证书问题。取消勾选后断言会被签名,登录即可通过。

通过电子邮件地址识别成员

将 Name ID format 设置为 EMAIL。Google 的其他格式无法与 Bird 配合使用:

  • UNSPECIFIED 会被直接拒绝。
  • PERSISTENT 会被拒绝,因为格式与连接预期的不匹配。Google 无论如何都会将成员的电子邮件地址作为值发送,因此它并非持久格式本应携带的不透明、不可重新分配的标识符。

Google 不为 NameID 提供不透明标识符,因此 EMAIL 是这里唯一可用的选择。这意味着通过此连接登录的任何人,其地址都是永久绑定的:如果你的组织将来重新分配了该地址,获得该地址的下一个人将继承 Bird 账户。请在依赖此设置前阅读成员如何被识别。

断言有效期与证书

Google 签发的断言有效期为签发前五分钟到签发后五分钟,Bird 接受此范围。

Google 管理签名证书及其到期日期,自定义 SAML 应用不提供轮换控制。请记录 Bird 连接上显示的到期日期,并计划在到期前更换元数据,因为到期当天通过该连接的所有登录都会失败。

OIDC

OIDC 连接请从 Google Cloud 控制台开始。Bird 需要签发者、客户端 ID 和客户端密钥才能创建 OIDC 连接,因此先在 Google 注册应用。Bird 的 Redirect URI 对所有连接通用,在创建前就显示在 Add connection 中,因此你可以提前注册它。

在为你的 Workspace 用户提供服务的项目所在的 Google Cloud 控制台中创建 OAuth 客户端凭据,将客户端 ID 和密钥复制到 Bird 中,并将 https://accounts.google.com 设为 Issuer。Bird 从该地址读取发现文档,并使用 client_secret_basic 向令牌端点进行身份验证。

将 Bird 的 Redirect URI 注册为客户端上的已授权重定向 URI。

Google 的 OIDC 流程没有应用图标步骤:自定义 OAuth 客户端不会出现在 Google 应用启动器中,因此成员需要从 Bird 的登录页面或你提供的链接开始。

后续步骤