我们需要为具有一个授权服务器的多个应用程序(不是在同一域中,每个应用程序具有不同权限)实施单点登录和单点注销解决方案。
<小时/> 场景1 :
如果我们使用范围设置一个client_id: "global"
:&#34; app1,app2,app3
&#34;在auth服务器上,用户在所有应用程序中都经过身份验证,用户有一个用于auth服务器的cookie和一个用于他打开的每个应用程序的cookie。
此处的问题是,有权访问app1
和app2
而非app3
的用户正在通过身份验证服务器对所有应用进行身份验证。因此授权应该在应用程序级别进行。
单点注销看起来很简单。让我们假设用户从app1注销,因此他被重定向到auth服务器并删除了auth cookie。回到app1.domain/logout
后,app1 cookie也会被删除。身份验证服务器负责向app2.domain/logout
和app3.domain/logout
发送请求以删除所有其他Cookie。
情景2 :
每个应用程序都有自己的client_id,用于
当用户通过app1
登录时,使用身份client_id: "app1"
与auth服务器进行代码令牌交换。现在在auth服务器上创建了两个cookie,另一个用于app1。当用户现在导航到app2
时,使用client_id进行另一个请求:&#34; app2
&#34;和auth服务器现在无法向app2验证用户身份。这怎么可行?
此设置看起来不像sso,但看起来比场景1更抽象。
任何想法/建议都将不胜感激。
谢谢