【发布时间】:2018-09-27 02:41:46
【问题描述】:
我有一个使用 SaasKit 的 IdentityServer 4 设置来支持多租户 URL 路径。这使我可以像这样以多租户方式访问单个 IS4 实例:
https://localhost:5000/tenant/tenant1/.well-known/openid-configuration
IS4 实例使用单个数据库进行客户端/范围配置,而不是每个租户一个。每个租户仅分离用户数据库。
我的问题是客户端只有一个配置,因此有一个 RedirectUri 和 PostLogoutRedirectUri,并且这些值必须是租户特定的 URL 路径,否则回调将不会在客户端应用程序的租户上下文中处理。
因此,我可以在客户端应用的租户特定 OpenIdConnectOptions 中为 CallbackPath、SignedOutCallbackPath 和 RemoteSignOutPath 指定新值,例如像这样:
options.CallbackPath = $"/tenant/{tenant}{options.CallbackPath}";
但显然这需要相关租户片段包含在客户端的配置 RedirectUri 属性中,否则 IS4 将使重定向 uri 无效。
虽然我可以使用客户端应用程序中的动态 clientId,但我不希望在 IS4 中为每个租户创建特定于租户的客户端配置,并处理管理问题。同样,我不希望将所有可能的特定于租户的重定向 URI 添加到单个客户端的配置中。
相反,是否可以实现并向 IS4 注册一些支持以下功能的自定义组件,如果可以,我应该实现哪些接口?
- 参数化的重定向 URI 路径,因此可以指定以下内容:
https://localhost:5000/tenant/{tenant}/signin-oidc - 在需要重定向时将参数化的 URI 路径解析为真实路径。
【问题讨论】:
标签: identityserver4