与Laravel护照的SSO

问题描述 投票:8回答:2

我正在考虑使用Passport在Laravel 5中开发一个完整的身份系统。

以下是我的要求:

  1. 我应该有一个主要的身份管理应用程序,如identity.mysite.com,我的所有用户都存储在那里。
  2. 我有2个其他应用程序APP1,APP2。
  3. 当用户在APP1上请求受限资源时,他应该通过identity.mysite.com进行身份验证
  4. 经过身份验证后,让用户访问APP1上的资源
  5. 同时,如果用户决定访问APP2上的受限资源,则不应要求他再次输入凭据。

我试过的事情:

  1. simpleSAMLphp - SAML是一个为我做这些事情的选择。但它并不像OneLogin那样成熟,我不打算在这个阶段进入SaaS模式,除非它是必要的。
  2. Laravel Passport - oAuth 2.0似乎很诱人。我甚至可以使用,Passport Grant Tokens,但我不确定它对SAML的可靠程度。此外,Laravel Passport被广泛用于验证API。在验证传统的基于会话的应用程序时它会有用吗?我没有看到任何使用多个应用程序和laravel护照实施适当SSO的示例。

我知道OAuth 2.0不是身份验证协议。相反,它使用称为授权的东西,但我们可能会使它支持身份验证协议,如here所述。这是Laravel护照支持的吗?

laravel laravel-5 oauth-2.0 saml-2.0 simplesamlphp
2个回答
0
投票

这就是我所说的面向资源的方法,其中所有客户端(app1,app2 ......)都想知道天气请求用户是否有权访问资源...

在这里,我们需要将所有身份验证逻辑转移到oauth,并使我们所有的请求应用程序都依赖于OAuth。这样,如果用户请求应用程序访问资源,则:

  1. 令牌存在然后应用程序将请求oauth服务器验证给定的令牌,如果发现为true,则app将提供对用户的访问。
  2. 如果令牌不存在,那么您可以通过询问凭证来解决它,并且app会将用户数据传输到oAuth服务器并验证它是否使用令牌进行响应。

根据我的经验,我用它来实现这种方法,我认为Laravel Passport是一个在验证系统之上的抽象层。你可以随心所欲地塑造它。可以进行更多的增强和改进,但这可以作为SSO之上的基本层。


0
投票

您可以通过护照来实现这一点,但是您对这些示例是正确的,因为没有很多或缺少一些步骤。

您可以在App1和App2端创建一个与identity.mysite.com通信并获取用户数据(令牌,范围等,id)的新中间件,然后它将验证令牌是否有效。

在护照服务器端,您需要一个端点来返回令牌是否有效以及任何其他信息。

为避免向您的护照服务器发出太多请求,我建议您创建一个获取访问令牌TTL的服务,并将其设置为App1或App2上用于缓存用户数据的时间。

© www.soinside.com 2019 - 2024. All rights reserved.