SP OIDC 自动生成 client_id 可修改?它不应该在租户之间重复吗

SP OIDC auto-generated client_id modifiable? Shouldn't it be repeatable between tenants

我在使用 wso2 IS 时遇到了以下问题: 我正在尝试注册一个服务提供商供所有租户访问。

如果使用 SaaS 应用程序,我将能够使用注册服务提供商的租户定义的流程。但是我需要为每个租户配置流程。 (只是本地认证,入站都是oidc/oauth2)

我尝试为每个租户创建一个服务提供商 (SP)。问题是我会有不同的 client_id(oidc/oauth2 代码流)。

client_id不应该可以修改吗?

我发现如果从文件创建 SP,我可以设置 client_id。然后我又发现了一个问题。如果我尝试使用相同的 client_id 两次(在不同的租户上),我会在创建 SP 时遇到错误。我通过手动更改 H2 数据库设法解决了这个问题。但是它不起作用。我指定了 tenanDomain url 参数但它被忽略了,它使用数据库中找到的 client_id 的第一个 sp。

这个选择不应该取决于租户吗?

我读到我可以使用 SAML 实现此目的,但是它对于 SPA 来说并不理想。

最后,有两种解决方法。但它们远非理想,因为两者都需要手动步骤:

  1. 使用自适应身份验证,然后我需要在 SaaS 应用租户和脚本中注册所有租户 IdP。

  2. 在应用程序中创建一个 tenant/client_id 关系,然后在任何租户上有该应用程序的新服务提供商注册时更新它。

我认为这是一个有效的用例。我说得对吗?

如果不进行建议的功能修改,是否有任何方法可以实现此行为?


更新:完整用例说明

用例如下。我有一个微服务应用程序,我想使用 wso2is 为该应用程序的用户提供身份。在应用程序中,我有一个客户(有很多用户)。客户被分配给租户。我希望客户管理员(租户管理员)能够管理其租户身份的某些方面,如密码策略、用户......但是,我不希望租户注册应用程序(服务提供商),所以我需要注册应用程序,以便任何客户(租户)都可以访问它。我需要针对租户定义该应用程序的身份验证流程。我不想对任何租户强加身份验证策略,他们应该能够强加自己的策略。为此,他们有两种方法:

  1. 他们可以选择使用 wso2is 来定义他们想要的流程(基本的、基于风险的、fido...)。
  2. 要使用第三方(联合 IdP),因此在那里设置登录策略。

我还需要超级租户(我,或为协助具体租户而创建的特定用户)能够访问所有其他租户,例如提供帮助、修复错误和禁用我的功能不希望他们看到类似的(电子邮件模板)。

经过大量阅读,我设法找到了解决方案。正如我所写,可以通过添加 tenantDomain 查询参数为 SAML 执行此操作。但是,我发现这不适用于 OAuth2 端点。所以从 5.11.0 开始是不可能的。

幸运的是,此功能(截至撰写时)正在开发中 https://github.com/wso2/product-is/projects/13#card-49383872,因此预计将在 5.12.0 中提供。期待使用这个新版本。