设置 SSO 和 SCIM
Windsurf 现在支持通过 SAML 进行单点登录 (SSO)。如果您的组织使用 Microsoft Entra、Okta、Google Workspaces 或其他支持 SAML 的身份提供商,您将能够使用 SSO 登录 Windsurf。
配置 IDP 应用程序
在 Google 管理控制台 (admin.google.com) 的左侧,点击 应用 -> Web 和移动应用。
点击 添加应用,然后点击 添加自定义 SAML 应用。
在 应用名称 中填写 Windsurf
,然后点击 下一步。
Google 控制台页面上的下一屏(Google 身份提供商详细信息)包含您需要复制到 Windsurf SSO 设置 (位于 www.windsurf.com/team/team_settings) 的数据。
-
将 Google 控制台页面上的 SSO URL 复制到 Windsurf 设置中的 SSO URL 下。
-
将 Google 控制台页面上的 实体 ID 复制到 Windsurf 设置中的 Idp 实体 ID 下。
-
将 Google 控制台页面上的 证书 复制到 Windsurf 设置中的 X509 证书 下。
-
在 Google 控制台页面上点击 继续。
Google 控制台页面上的下一屏需要您从 Codeium 设置页面复制数据。
- 将 Codeium 设置页面上的 Callback URL 复制到 Google 控制台页面上的 ACS URL 下。
- 将 Codeium 设置页面上的 SP Entity ID 复制到 Google 控制台页面上的 SP Entity ID 下。
- 将 Name ID 格式更改为 EMAIL。
- 在 Google 控制台页面上点击 继续。
Google 控制台页面上的下一屏需要进行一些配置。
- 点击 添加映射,选择 名字 并将 应用属性 设置为 firstName。
- 点击 添加映射,选择 姓氏 并将 应用属性 设置为 lastName。
- 点击 完成。
在 Codeium 设置页面上,点击 启用 SAML 登录,然后点击 保存。务必点击 测试登录 以确保登录按预期工作。现在所有用户都将强制执行 SSO 登录。
Windsurf 现在支持通过 SAML 进行单点登录 (SSO)。如果您的组织使用 Microsoft Entra、Okta、Google Workspaces 或其他支持 SAML 的身份提供商,您将能够使用 SSO 登录 Windsurf。
配置 IDP 应用程序
在 Google 管理控制台 (admin.google.com) 的左侧,点击 应用 -> Web 和移动应用。
点击 添加应用,然后点击 添加自定义 SAML 应用。
在 应用名称 中填写 Windsurf
,然后点击 下一步。
Google 控制台页面上的下一屏(Google 身份提供商详细信息)包含您需要复制到 Windsurf SSO 设置 (位于 www.windsurf.com/team/team_settings) 的数据。
-
将 Google 控制台页面上的 SSO URL 复制到 Windsurf 设置中的 SSO URL 下。
-
将 Google 控制台页面上的 实体 ID 复制到 Windsurf 设置中的 Idp 实体 ID 下。
-
将 Google 控制台页面上的 证书 复制到 Windsurf 设置中的 X509 证书 下。
-
在 Google 控制台页面上点击 继续。
Google 控制台页面上的下一屏需要您从 Codeium 设置页面复制数据。
- 将 Codeium 设置页面上的 Callback URL 复制到 Google 控制台页面上的 ACS URL 下。
- 将 Codeium 设置页面上的 SP Entity ID 复制到 Google 控制台页面上的 SP Entity ID 下。
- 将 Name ID 格式更改为 EMAIL。
- 在 Google 控制台页面上点击 继续。
Google 控制台页面上的下一屏需要进行一些配置。
- 点击 添加映射,选择 名字 并将 应用属性 设置为 firstName。
- 点击 添加映射,选择 姓氏 并将 应用属性 设置为 lastName。
- 点击 完成。
在 Codeium 设置页面上,点击 启用 SAML 登录,然后点击 保存。务必点击 测试登录 以确保登录按预期工作。现在所有用户都将强制执行 SSO 登录。
Windsurf 企业版现在支持通过 SAML 进行单点登录 (SSO)。如果您的组织使用 Microsoft Azure AD,您将能够使用 SSO 登录 Windsurf。
配置 IDP 应用程序
使用您的身份提供商创建企业应用程序。点击 添加,然后点击 企业应用程序。
点击 创建自己的应用程序。
将您的应用程序命名为 Windsurf,选择集成图库中找不到的任何其他应用程序,然后点击 创建。
使用 SAML 配置您的企业应用程序
- 在新的 Windsurf 应用程序中点击“设置单一登录”,然后点击“SAML”。
- 在“基本 SAML 配置”下点击“编辑”,然后打开 Windsurf 团队版 SSO 设置页面:https://www.codeium.com/team/team_settings
- 在 Entra 的 SAML 配置表单和 Windsurf SSO 设置页面上。
- 对于标识符 (实体 ID),复制 SSO 设置页面中的 SP 实体 ID 值。
- 对于回复 URL (断言消费者服务 URL),复制 SSO 设置页面中的 Callback URL 值。
- 点击顶部的“保存”。
- 选择您要使用的 SSO ID,这将为您的团队创建一个登录门户。请注意,保存后此项不可更改。
- 在设置页面中的“设置 Windsurf -> Microsoft Entra 标识符”下,用 Entra ID 中的值填写 IdP 实体 ID。
- 在设置页面中的“登录 URL”下,用 Entra ID 中的值填写 SSO URL。
- 下载 SAML 证书 (Base64),获取文件的文本内容,并将其粘贴到 Windsurf 设置页面上的 X509 证书中。
- 点击“启用 SAML 登录”。
- 在 Windsurf 设置页面中点击“保存”。
- 我们还需要设置名称声明。此步骤对于 Windsurf 识别用户的显示名称非常重要。
- 在 Entra ID 下的“属性与声明”中,点击“编辑”。
- 创建 2 个新的声明。您可以通过点击“添加新声明”来完成此操作。
- 第一个声明的名称应为“firstName”,源属性为“user.givenname”。
- 第二个声明的名称应为“lastName”,源属性为“user.surname”。
- 至此,您应该已成功配置了 SSO。在设置页面中保存后,点击“测试登录”以确保一切按预期工作。
Windsurf 企业版现在支持通过 SAML 进行单点登录 (SSO)。如果您的组织使用 Microsoft Entra、Okta、Google Workspaces 或其他支持 SAML 的身份提供商,您将能够使用 SSO 登录 Windsurf。
配置 IDP 应用程序
在左侧边栏中点击“应用程序”,然后点击“创建应用程序集成”。
选择 SAML 2.0 作为登录方法。
将应用程序名称设置为 Windsurf(或任何其他名称),然后点击“下一步”。
配置 SAML 设置如下:
- 单点登录 URL 为 https://auth.windsurf.com/__/auth/handler
- 受众 URI (SP 实体 ID) 为 www.codeium.com
- NameID 格式为 EmailAddress
- 应用程序用户名为 Email
配置属性声明如下,然后点击 下一步。
在反馈部分,选择“这是我们创建的内部应用”,然后点击 完成。
注册 Okta 作为 SAML 提供商
您应该会被重定向到自定义 SAML 应用程序下的“登录”选项卡。现在您需要将此页面上的信息填写到 Windsurf 的 SSO 设置中。
- 打开 www.windsurf.com/team/team_settings,然后点击“配置 SAML”。
- 复制 Okta 应用程序页面上“Issuer”后的文本,并将其粘贴到 Idp 实体 ID 下。
- 复制 Okta 应用程序页面上“Sign on URL”后的文本,并将其粘贴到 SSO URL 下。
- 下载签名证书,并将其粘贴到 X509 证书下。
- 勾选“启用 SAML 登录”,然后点击“保存”。
- 使用“测试登录”按钮测试登录。您应该看到成功消息。
至此,一切都应该已配置完毕,现在可以将用户添加到新的 Windsurf Okta 应用程序了。
您应该与您的用户分享您组织的自定义登录门户 URL,并要求他们通过该链接登录。
通过 SSO 登录 Windsurf 的用户将自动批准加入团队。
注意事项
请注意,Windsurf 目前不支持 IDP-initiated 登录流程。
我们也暂未支持 OIDC。
故障排除
SAML 登录配置失败: Firebase: Error (auth/operation-not-allowed)
这表明您的 SSO ID 无效,或您的 SSO URL 不正确,请确保它是字母数字,且没有多余的空格或无效字符。请再次检查指南中的步骤,确保您使用了正确的值。
SAML 登录配置失败: Firebase: SAML Response <Issuer> 不匹配。(auth/invalid-credential)
这表明您的 IdP 实体 ID 无效,请确保您从 Okta 门户正确复制了它,字符串前后没有多余的字符或空格。
无法验证 samlresponse 中的签名
这表明您的 X509 证书值不正确,请确保您复制了正确的密钥,并且格式如下:
Windsurf 支持与 Microsoft Entra ID / Azure AD 进行用户和组的 SCIM 同步。虽然不强制要求设置 SSO 才能使用 SCIM 同步,但强烈建议这样做。
您需要:
- Microsoft Entra ID / Azure AD 的管理员权限
- Windsurf 的管理员权限
- Entra ID 上已有的 Windsurf 应用程序(通常来自您现有的 SSO 应用程序)
步骤 1:导航到现有的 Windsurf 应用程序
转到 Azure 上的 Microsoft Entra ID,在左侧边栏中点击“企业应用程序”,然后点击列表中的现有 Windsurf 应用程序。
步骤 2:设置 SCIM 预配
在中间(步骤 3)的“预配用户帐户”下点击“开始”,然后再次点击“开始”。
在“预配设置”页面下,选择以下选项。
预配模式:自动
管理员凭据 > 租户 URL: https://server.codeium.com/scim/v2
保持 Azure 预配页面打开,现在转到 Windsurf 企业门户,点击页面顶部导航栏中的“设置”。在“SCIM”下,点击“添加 API 密钥”。输入任意密钥名称(例如“Azure 预配密钥”),然后点击“创建 API 密钥”。复制输出的密钥,返回 Azure 页面,将其粘贴到“机密令牌”中。
(您在 Windsurf 上创建密钥后应该看到的内容)
在“预配”页面上,点击“测试连接”,这将验证 SCIM 连接。
现在在“预配”表单上方点击“保存”。
步骤 3:配置 SCIM 预配
点击“保存”后,“映射”选项应该出现在“预配”页面中。展开“映射”,然后点击“预配 Microsoft Entra ID 用户”。
在“属性映射”下,删除 displayName 下的所有字段,只保留 userName、active 和 displayName 字段。
对于 active,现在点击“编辑”。在“表达式”下,将字段修改为:
然后点击“确定”。
您的用户属性应该如下所示:
在“属性映射”页面中,点击顶部的“保存”,然后导航回“预配”页面。
现在在同一页面上,在“映射”下点击“预配 Microsoft Entra ID 组”。现在只点击 externalId 的删除按钮,然后点击顶部的“保存”。导航回“预配”页面。
在“预配”页面底部,还应该有一个“预配状态”切换开关。将其设置为“开”以启用 SCIM 同步。现在,Entra ID 应用程序的用户和组将每 40 分钟同步到 Windsurf。
点击“保存”完成,您现在已经为 SCIM 启用了用户和组同步。只有分配给应用程序的用户和组才会同步到 Windsurf。请注意,由于 Azure 的 SCIM 设计,移除用户只会禁用他们对 Windsurf 的访问(并停止占用席位),而不是删除用户。
Windsurf 支持与 Okta 进行用户和组的 SCIM 同步。虽然不强制要求设置 SSO 才能使用 SCIM 同步,但强烈建议这样做。
您需要:
- Okta 的管理员权限
- Windsurf 的管理员权限
- Okta 上已有的 Windsurf 应用程序(通常来自您现有的 SSO 应用程序)
步骤 1:导航到现有的 Windsurf 应用程序
转到 Okta,在左侧边栏中点击“应用程序”,“应用程序”,然后点击应用程序列表中的现有 Windsurf 应用程序。
步骤 2:启用 SCIM 预配
在“通用”选项卡下的“应用程序设置”中,点击右上角的“编辑”。然后勾选“启用 SCIM 预配”复选框,然后点击“保存”。顶部应该会出现一个新的“预配”选项卡。
现在转到“预配”,点击“编辑”并输入以下字段:
SCIM 连接器基本 URL: https://server.codeium.com/scim/v2
用户的唯一标识符字段:email
支持的预配操作:推送新用户,推送个人资料更新,推送群组
身份验证模式:HTTP Header
对于 HTTP Header - Authorization,您可以从以下位置生成令牌:
- https://windsurf.com/team/team_settings,然后转到左侧的 SCIM 选项卡
- 点击“添加 API 密钥”,并为您的 API 密钥命名。
- 复制 API 密钥,返回 Okta 并将其粘贴到 HTTP Header - Authorization 中。
填写完“预配集成”后,点击“保存”。
步骤 3:设置预配
在“预配”选项卡下,左侧应该有两个新的选项卡。点击“到应用程序”,然后点击“编辑预配到应用程序”。勾选“创建用户”、“更新用户属性”和“停用用户”的复选框,然后点击“保存”。
完成此步骤后,分配给该组的所有用户都将同步到 Windsurf。
步骤 4:设置组预配(可选)
为了将组同步到 Windsurf,您需要指定要推送哪些组。在应用程序下,点击顶部的“推送组”选项卡。现在点击“+ 推送组 -> 按名称查找组”。过滤您想要添加的组,确保勾选“立即推送组成员资格”,然后点击“保存”。该组将被创建,组成员将同步到 Windsurf。然后可以在分析页面中使用组来过滤组分析数据。
本指南介绍了如何使用 SCIM API 在 Windsurf 中创建和维护组。
有些原因可能导致您希望手动预配组,而不是通过身份提供商 (Azure/Okta) 进行。公司可能希望从 Windsurf 无法访问的其他内部源(人力资源网站、源代码管理工具等)预配组,或者公司可能希望对组进行比身份提供商提供的更精细的控制。因此,可以通过 API 发送 HTTP 请求来创建组。以下提供了通过 CURL 发送 HTTP 请求的示例。
这里有 5 个主要的 API:创建组、添加组成员、替换组成员、删除组和列出组中的用户。
创建组
添加组成员
替换组成员
删除组
列出组
列出组中的用户
您至少需要先创建组,然后替换组成员才能创建包含成员的组。如果您的组名称包含特殊字符(如空格),您还需要对组名称进行 URL 编码,因此组名称“Engineering Group”在 URL 中必须是“Engineering%20Group”。
请注意,用户需要在 Windsurf 中创建(通过 SCIM 或手动创建帐户)后才能将其添加到组。
用户 API
也有用于用户的 API。以下是 Windsurf 支持的一些常见 SCIM API。
禁用用户(通过将 false 替换为 true 来启用)
创建用户
更新姓名
创建 API 密钥
转到 https://www.windsurf.com/team/team_settings。在“服务密钥”下,点击“添加服务密钥”。输入任意密钥名称(例如“Azure 预配密钥”),然后点击“创建服务密钥”。复制输出的密钥并保存,您现在可以使用该密钥授权上述 API。