wso2 Identity Server中每个租户的SSO

时间:2015-04-10 12:04:01

标签: identity saml wso2is multi-tenant

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

  • domainOne.com
    • APP1
    • APP2
  • domainTwo.com
    • APP3
    • APP4

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

我们在IS中与租户一起尝试,但是当app1登录时,看起来app3和app4也是如此。

有没有办法做到这一点?

谢谢。

1 个答案:

答案 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可以控制用户登录。