一个客户或更改运行时的多个注销URI

时间:2019-07-24 13:57:41

标签: c# identityserver4 openid-connect

我正在将IdentityServer4 for SSO用于多租户应用程序,其中租户是通过子域指定的:

tenant1.app.com
tenant2.app.com

我只想在一个客户端上注册所有这些帐户。

每个租户都有自己的RedirectUri(如tenant1.app.com/oidc,自己的PostLogoutRedirectUri和自己的FrontChannelLogoutUri(如tenant1.app.com/account/oidc-logout)。可以指定多个RedirectUris和多个PostLogoutRedirectUris,甚至可以实现用于验证它们的自定义逻辑,但是我找不到指定多个注销uri或以编程方式更改它们的方法。

我需要找到用户的租户,并为iframe构建注销uri。问题是我无法访问SignOutIframe内部呈现的uri。

除了配置之外,是否可以修改客户端的注销URI?

2 个答案:

答案 0 :(得分:1)

我认为每个主机名需要一个单独的客户端,因为前通道和后通道注销URI仅每个客户端1个。

另一种选择是使用反向通道机制,并具有一个适用于任何租户的端点(我不知道这是否适用于您的体系结构)

答案 1 :(得分:0)

我设法找到了一个解决方案,而无需注册多个客户端。

您可以在GetClientEndSessionUrlsAsync中覆盖EndSessionRequestValidator方法,并添加用于更改前渠道和后渠道网址的自定义逻辑。