wso2 Identity Server中每个租户的SSO



我们希望应用程序使用SAML登录Identity Server。应用程序将分为两个域。一个域中的应用程序共享sso,但不共享另一个域的应用程序。示例:

  • domainOne.com
    • app1
    • app2
  • domainTwo.com
    • app3
    • app4

当app1登录到IS时,app2也会自动通过IS登录。但是app3和app4针对相同的IS.请求用户/密码

我们在IS中对租户进行了尝试,但当app1登录时,app3和app4似乎也登录了。

有办法做到这一点吗?

谢谢。

WSO2IS SSO会话cookie(commonauthid)似乎不是基于租户域的。它仅对服务器是唯一的。这一定是上述行为的原因。有人会把它看作一个bug。有些人不会。因为,SP决定不允许其他租户的用户登录。已经通过WSO2IS服务器和SP身份验证的用户必须决定是否允许登录。

但是,当您在WSO2IS中将SP配置为SAAS应用程序时,可以看到这种行为。如果您没有配置为SAAS应用程序,则不能为不同租户登录。因为用户的租户域和SP的租户域可能不同。因此,用户必须不能登录。您必须看到错误Service Provider tenant domian must be equal to user tenant domain for non-SaaS applications"。如果你还没有配置为SAAS应用程序,并且用户仍然可以为不同的租户登录,这可能是WSO2IS中的一个错误。

不过,以下是在SP端正确执行此操作的一些示例方法。

比方说,有两个应用程序域FOO和BAR

foo.com租户包含foo中的SP。bar.com租户包含bar中的SP。

foo.com租户包含可以从foo访问SP的用户。bar.com租户包含可以从bar访问SP的用户。

例如,来自foo.com的用户"bob"访问foo应用程序,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可以控制是否允许用户登录。

最新更新