2017-03-05 172 views
1

我想开发一个完整的识别系统在Laravel 5护照。SSO与Laravel护照

以下是我的要求:

  1. 我应该有主的身份管理应用程式,例如identity.mysite.com所有我的用户的存储。
  2. 我有2个其他应用程序APP1,APP2。
  3. 当用户请求禁区APP1资源,他(她)应该得到由identity.mysite.com
  4. 一旦通过认证,让用户接入资源在APP1认证
  5. 同时,如果用户决定访问APP2受限资源,(s)他不应该被要求再次提供证书。

事情我已经尝试:

  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护照是否支持这件事?

回答

0

这就是我所说的资源导向的方法,所有的客户端(APP1,APP2 ...)想知道天气请求用户被授权访问该资源或不...

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

  1. 令牌存在,则应用程序将请求的OAuth服务器来验证给定令牌,如果找到真,那么应用程序将提供访问用户。

  2. 如果令牌不存在,那么你可以通过询问证书和应用程序将用户数据传输到OAuth服务器和验证它与令牌响应解决它。

根据我的经验,我使用这种方法来实现这个方法,我认为Laravel Passport是一个位于认证系统之上的抽象层。无论你需要什么,你都可以模制它。有几个增强和改进可以完成,但这将作为您的SSO顶层的基础层。