Laravel 带拉威尔护照的SSO

Laravel 带拉威尔护照的SSO,laravel,laravel-5,oauth-2.0,saml-2.0,simplesamlphp,Laravel,Laravel 5,Oauth 2.0,Saml 2.0,Simplesamlphp,我在考虑用护照在拉雷维尔5号开发一个完整的身份系统 以下是我的要求: 我应该有一个像identity.mysite.com这样的主身份管理应用程序,其中存储了我的所有用户 我还有两个应用程序APP1,APP2 当用户请求APP1上的受限资源时,他应该通过identity.mysite.com进行身份验证 一旦通过身份验证,就允许用户访问APP1上的资源 同时,若用户决定访问APP2上的受限资源,则不应要求他再次放置凭据 我尝试过的事情: -SAML是一个为我做这些事情的选项。但它还没有成熟,我不

我在考虑用护照在拉雷维尔5号开发一个完整的身份系统

以下是我的要求:

  • 我应该有一个像identity.mysite.com这样的主身份管理应用程序,其中存储了我的所有用户
  • 我还有两个应用程序APP1,APP2
  • 当用户请求APP1上的受限资源时,他应该通过identity.mysite.com进行身份验证
  • 一旦通过身份验证,就允许用户访问APP1上的资源
  • 同时,若用户决定访问APP2上的受限资源,则不应要求他再次放置凭据
  • 我尝试过的事情:

  • -SAML是一个为我做这些事情的选项。但它还没有成熟,我不想在这个阶段采用SaaS模式,除非是必要的
  • -看起来很诱人。我甚至可以使用,但我不确定它在SAML上的可靠性。此外,Laravel Passport被广泛用于验证API。在验证传统的基于会话的应用程序时,它会有用吗?我还没有看到任何一个例子,其中正确的SSO是通过多个应用程序和laravel passport实现的
  • 我知道OAuth2.0不是身份验证协议。更确切地说,它使用了一种叫做授权的东西,但我们可能可以让它工作以支持前面提到的身份验证协议。这是拉威尔护照支持的东西吗


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

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

  • 令牌存在,则应用程序将请求oauth服务器验证给定的令牌,若发现为真,则应用程序将向用户提供访问权限

  • 若令牌不存在,那个么您可以通过请求凭证来解决它,应用程序将把用户数据传输到oAuth服务器并验证它,然后用令牌响应


  • 根据我的经验,我使用这种方法,我认为Laravel Passport是身份验证系统之上的抽象层。你可以按你需要的方式来塑造它。可以做的增强和改进很少,但这将作为SSO之上的一个基本层。

    您可以使用passport实现这一点,但是您对示例的理解是正确的,因为在某些步骤上没有太多或太少

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

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


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

    您是否成功,如果成功,请在此处发布。