首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在RedirectUri 4中为多租户应用程序使用单个客户端IdentityServer?

是否可以在RedirectUri 4中为多租户应用程序使用单个客户端IdentityServer?
EN

Stack Overflow用户
提问于 2018-04-17 08:07:36
回答 1查看 1.6K关注 0票数 2

我有一个IdentityServer 4设置,使用SaasKit来支持多租户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}";

但是,这显然需要在客户端的config RedirectUri属性中包含相关的租户片段,否则IS4将使重定向uri无效。

虽然我可以使用来自客户端应用程序的动态clientIds,但我不希望在IS4中为每个租户创建一个特定于租户的客户端配置,并处理管理问题。同样,我不希望将所有可能的特定于租户的重定向URI添加到单个客户端的配置中。

相反,是否有可能实现并向IS4注册一些支持以下功能的自定义组件,如果是的话,我应该实现哪些接口?

  1. 参数化重定向URI路径,以便可以指定以下内容:https://localhost:5000/tenant/{tenant}/signin-oidc
  2. 当需要重定向时,将参数化URI路径解析为实际路径。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 10:23:40

您可以实现自定义重定向URI验证器。

为此,您需要创建一个实现IRedirectUriValidator的类,然后按如下方式注册它:

代码语言:javascript
复制
services
    .AddIdentityServer(...)
    .AddRedirectUriValidator<MyCustomUriValidator>();

通过这种方式,您可以在数据库中为客户机设置重定向URI,使用一些符号来指定URI中与租户相关的部分,然后在运行时使用自定义验证器检查它。

注意与动态重定向URI相关的危险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49872882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档