没有访问令牌的 OAuth2 客户端


OAuth2 client without access token

所以在我开始之前,我有点像OAuth2新手,所以仍然试图真正了解各种权限范围和授权。

我已经设法使用Laravel OAuth2服务器包成功实现了OAuth2服务器。

我正在研究的当前网站将简单地使用client_credentials授权类型从 API 中获取狗粮。我已经设法成功地工作,并且可以使用提供的访问令牌进行 API 调用。

但是,我想知道如何实现类似于Instagram,Soundcloud等的架构,它们不需要基本端点的access_token,只需要一个client_id。他们是怎么做到的?这是自定义授权类型吗?

最好,我只想在访问私有资源时开始要求访问令牌,例如用于修改用户信息的资源等。据我所知,对于这些,我需要使用 password 授权类型,这不是问题。

OAuth 有一些流,例如 2 条腿或 3 条腿,它基本上告诉开发人员他需要向服务器发出多少请求才能获得他想要的资源。

例如,在 2 条腿流中,您发送带有 id 和密钥的请求(第一个请求),您返回一个access_token,并使用该令牌对您想要的资源发出其他请求(第二个请求)。

回到您的Instagram示例,您可以考虑仅使用client_id作为1条腿的OAuth流,因为您只向服务器发出一个请求即可获取所需的资源。

您可以将此类流用于不太敏感的资源,例如个人资料照片或用户的昵称。

单腿流的实现很简单: - 如果user_id有效,并且应用程序不需要用户批准即可访问请求的资源,请继续显示资源。

因此,实现 1 条腿流包括检查client_id是否有效,并检查请求的资源是否需要用户权限。话虽如此,您可以使用 1 条腿来请求用户个人资料照片,但不能使用相同的流程来请求用户的私人消息。

您可以在 OAuth 圣经中阅读有关每个 OAuth 流程的更多信息。

您的服务器上有两种不同的资源 - a) 需要一些访问检查的资源 b)可公开访问的资源。

对需要访问检查的资源执行的操作应要求已通过请求中的 OAuth 标头标识用户。在 Laravel 的上下文中 - 这将是一条将"之前"键指定为 Oauth 的路由。

不需要访问权限的操作可以通过构建路由来接受提供用户上下文的参数,从而收集有关哪个用户相关的上下文。假设您有一个个人资料,用户无需任何访问权限即可查看。 JSON 表示形式的 API 终端节点可以是/api/profile/[user_id],其中 [user_id] 是要查看的用户配置文件的 ID。对于这些您不关心访问的路由,您可以在路由声明中筛选之前关闭 oauth。