没有访问令牌的OAuth2客户端

时间:2013-10-23 16:44:39

标签: php api oauth-2.0

所以在我开始之前,我是一个OAuth2新手,所以仍然试图真正地围绕各种许可范围和补助。

我已成功使用Laravel OAuth2 Server软件包成功实施OAuth2服务器。

我正在处理的当前网站只是使用client_credentials授权类型从API中获取食物。我已成功地使这个成功运行,并可以使用提供的访问令牌进行API调用。

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

最好,我只想在访问私有资源时开始要求访问令牌,例如修改用户信息等。据我所知,对于这些我需要使用{{ 1}} grant type,这不是问题。

2 个答案:

答案 0 :(得分:5)

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

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

回到你的Instagram示例,你可以考虑仅使用client_id作为单腿OAuth流程,因为你只向服务器发出一个请求以获得你想要的资源。

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

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

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

您可以在The OAuth Bible中了解有关每个OAuth流量的更多信息。

答案 1 :(得分:2)

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

对需要访问检查的资源的操作应要求通过请求中的OAuth标头识别用户。在Laravel的上下文中 - 这将是一个将'before'键指定为Oauth的路径。

不需要访问的操作可以通过构建路由来接收一个为您提供有关用户上下文的参数,从而收集关于用户相关内容的上下文。假设您有一个用户可以看到而没有任何访问权限的配置文件。您的JSON表示的API端点可以是/ api / profile / [user_id],其中[user_id]是您希望看到的用户配置文件的ID。对于您不关心访问权限的这些路线,您可以在路径声明中过滤之前省略oauth。