与Laravel护照的SSO

Sah*_*rav 9 oauth-2.0 saml-2.0 laravel simplesamlphp laravel-5

我正在考虑使用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不是身份验证协议.相反,它使用称为授权的东西,但我们可能会使其工作以支持此处提到的身份验证协议.这是Laravel护照支持的吗?

小智 5

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

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

  1. 如果存在令牌,则应用程序将请求 oauth 服务器验证给定的令牌,如果发现为 true,则应用程序将为用户提供访问权限。

  2. 如果令牌不存在,那么您可以通过请求凭据来解决它,应用程序会将用户数据传输到 oAuth 服务器并验证它是否使用令牌进行响应。

根据我的经验,我用来实现这种方法,我认为 Laravel Passport 是身份验证系统之上的抽象层。您可以根据需要塑造它。虽然还可以做一些增强和改进,但这可以作为 SSO 之上的基本层。