我正在将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?
答案 0 :(得分:1)
我认为每个主机名需要一个单独的客户端,因为前通道和后通道注销URI仅每个客户端1个。
另一种选择是使用反向通道机制,并具有一个适用于任何租户的端点(我不知道这是否适用于您的体系结构)
答案 1 :(得分:0)
我设法找到了一个解决方案,而无需注册多个客户端。
您可以在GetClientEndSessionUrlsAsync
中覆盖EndSessionRequestValidator
方法,并添加用于更改前渠道和后渠道网址的自定义逻辑。