sso和slo在多个应用程序上

时间:2016-02-11 16:39:40

标签: single-sign-on

我们需要为具有一个授权服务器的多个应用程序(不是在同一域中,每个应用程序具有不同权限)实施单点登录和单点注销解决方案。

<小时/> 场景1

如果我们使用范围设置一个client_id: "global":&#34; app1,app2,app3&#34;在auth服务器上,用户在所有应用程序中都经过身份验证,用户有一个用于auth服务器的cookie和一个用于他打开的每个应用程序的cookie。

此处的问题是,有权访问app1app2而非app3的用户正在通过身份验证服务器对所有应用进行身份验证。因此授权应该在应用程序级别进行。

单点注销看起来很简单。让我们假设用户从app1注销,因此他被重定向到auth服务器并删除了auth cookie。回到app1.domain/logout后,app1 cookie也会被删除。身份验证服务器负责向app2.domain/logoutapp3.domain/logout发送请求以删除所有其他Cookie。

情景2

每个应用程序都有自己的client_id,用于  

    例如:
  • client_id:&#34; app1&#34;范围:&#34;用户&#34;
  •      
  • CLIENT_ID:&#34; APP2&#34;范围:&#34; user,public_repo&#34;
  •      
  • CLIENT_ID:&#34; APP3&#34;范围:&#34; admin&#34;

当用户通过app1登录时,使用身份client_id: "app1"与auth服务器进行代码令牌交换。现在在auth服务器上创建了两个cookie,另一个用于app1。当用户现在导航到app2时,使用client_id进行另一个请求:&#34; app2&#34;和auth服务器现在无法向app2验证用户身份。这怎么可行?

此设置看起来不像sso,但看起来比场景1更抽象。

任何想法/建议都将不胜感激。

谢谢

0 个答案:

没有答案