我们希望应用程序使用SAML登录Identity Server。应用将在两个域中分开。一个域中的应用程序共享sso,而另一个域中的应用程序不共享。例如:
当app1登录IS时,app2也会自动通过IS登录。但是app3和app4针对相同的IS要求用户/密码。
我们在IS中与租户一起尝试,但是当app1登录时,看起来app3和app4也是如此。
有没有办法做到这一点?
谢谢。
答案 0 :(得分:0)
似乎WSO2IS SSO会话cookie(C
)不是基于租户域。它只对服务器是唯一的。它必须是上述behivor的原因。有人可以将此视为一个错误。有人不会。因为,SP决定允许其他租户的用户不登录。已经通过WSO2IS服务器和SP验证的用户必须决定是否允许登录。
但是,在WSO2IS中将SP配置为SAAS应用程序时,可以看到此行为。如果未配置为SAAS应用程序,则无法登录其他租户。因为用户的租户域和SP的租户域会有所不同。因此用户必须无法登录。您必须看到错误commonauthid
。如果您尚未配置为SAAS应用程序且仍然可以登录不同的租户,则可能是WSO2IS中的错误。
但是,以下是在SP方面正确执行此操作的一些示例方法。
说,有两个应用程序域FOO和BAR
foo.com租户包含来自FOO的SP。 bar.com租户包含来自BAR的SP。
foo.com租户包含可以从FOO访问SP的用户。 bar.com租户包含可以从BAR访问SP的用户。
说,用户" bob"从foo.com访问FOO app和bob可以登录 SSO。然后将SSO cookie设置为" bob"浏览器。 SAML 从WSO2IS收到的断言包含用户名为" bob@foo.com"。 FOO应用程序可以接受请求,因为用户来自foo.com域。
此外,如果bob尝试使用相同的浏览器访问BAR应用程序...登录 页面将不会显示为SSO cookie,WSO2IS识别 认证用户为" bob@foo.com"然后SAML2响应将被发送到BAR并且SAML断言内的用户名将是" bob@foo.com"然后BAR应用可以拒绝该用户,因为该用户来自" foo.com"因此用户无法登录BAR应用程序。
因此,SP可以控制用户登录。