3

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

我已经成功地使用Laravel OAuth2 Server包实现了一个 OAuth2 服务器。

我正在处理的当前站点将使用client_credentials授权类型从 API 中简单地进行测试。我已经设法让它成功运行,并且可以使用提供的访问令牌进行 API 调用。

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

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

4

2 回答 2

5

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

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

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

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

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

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

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

于 2013-10-29T15:46:30.683 回答
2

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

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

不需要访问权限的操作可以通过构建您的路由以接受为您提供有关用户的上下文的参数来收集有关哪些用户相关的上下文。假设您有一个用户可以在没有任何访问权限的情况下查看的个人资料。您的 JSON 表示的 API 端点可能是 /api/profile/[user_id],其中 [user_id] 是您希望查看的用户配置文件的 ID。对于这些您不关心访问的路由,您可以在路由声明中的过滤器之前去掉 oauth。

于 2013-10-26T22:31:29.857 回答