Sentry与OAuth2服务器

Kol*_*sar 1 oauth laravel cartalyst-sentry

我从githhub的API服务器使用了OAuth2代码:https//github.com/lucadegasperi/oauth2-server-laravel

我想使用Sentry,而不是使用标准的Laravel Auth,因为Sentry具有许多用于发送邮件,禁止,批准注册,...的功能。

我在API服务器上成功从客户端(带有Guzzle插件的Laravel)创建了连接,但无法保持Sentry会话。可以吗?如何知道API服务器上的权限,组或任何我的用户。对于每个调用API,我都会发送access_token,但对于OAuth2而言已足够。我不知道如何保持Sentry会话,例如:

我以主持人权限用户身份登录,并且向API发送新请求以获取一些主持人信息,因为我没有Sentry会话,所以我不知道它是主持人还是管理员或其他身份。

也许oauth:scope1,scope2就足够了,也许我不需要Sentry,但是我没有Sentry功能(请看这篇文章的开头)。

我相信我的问题微不足道,但是我不知道如何解决此问题。我一点主意都没有 :(

Hai*_*ood 5

您的问题是您对Oauth2的理解存在缺陷。Oauth2用于身份验证而非授权

通常,使用Oauth2时,您将拥有三台服务器:

  1. 身份验证服务器(我说的是我吗?)
  2. 授权服务器(我该怎么办?)
  3. 资源服务器(您的API)

现在,服务器2和3可以(并且经常是)相同,在这种情况下,您可能会查询一个模型。

发生的情况是您的用户首先与身份验证服务器交谈,然后说,我是该用户
如果身份验证服务器认为它们是颁发给令牌的,则可以在对您的资源服务器的请求中使用令牌(之间还有其他几个步骤,但是您的问题似乎意味着您理解这些内容)。

当使用访问令牌向资源服务器发出请求时,资源服务器会询问身份验证服务器“此人是谁?” 验证令牌。

(此时,您将从身份验证服务器收到指向令牌的链接ID,这是您应用程序的其余部分所知道的用户的身份)。

然后,资源服务器询问授权服务器“此人可以做什么”或“此人可以执行操作x?”。

资源服务器从授权服务器接收授予或拒绝响应,然后提供响应或抛出拒绝访问响应。

希望这可以帮助您了解哨兵和oauth2之间的区别。