Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 内部RESTAPI中的oAuth用户身份验证_Php_Api_Rest_Oauth - Fatal编程技术网

Php 内部RESTAPI中的oAuth用户身份验证

Php 内部RESTAPI中的oAuth用户身份验证,php,api,rest,oauth,Php,Api,Rest,Oauth,我正在构建一个RESTAPI服务,该服务不是公共的,仅由客户端用于访问服务器上的资源。没有对不同使用者的授权,因为唯一的使用者是服务器 我知道3条腿的oAuth是公共API(如facebooks)使用的标准,我认为我认为我在2条腿的身份验证之后是正确的,但我找不到一个有用的网站来描述它 我需要使用oAuth来访问资源和/或更改它们。显然,这应该得到保护。但我不确定如何在PHP中实现这一点。因此,如果用户通过post请求请求之类的请求,那么只有在用户登录的情况下才会跟踪用户123 我还希望公共资源

我正在构建一个RESTAPI服务,该服务不是公共的,仅由客户端用于访问服务器上的资源。没有对不同使用者的授权,因为唯一的使用者是服务器

我知道3条腿的oAuth是公共API(如facebooks)使用的标准,我认为我认为我在2条腿的身份验证之后是正确的,但我找不到一个有用的网站来描述它

我需要使用oAuth来访问资源和/或更改它们。显然,这应该得到保护。但我不确定如何在PHP中实现这一点。因此,如果用户通过post请求请求之类的请求,那么只有在用户登录的情况下才会跟踪用户123

我还希望公共资源只能由认可的客户端访问。所以,如果你访问一个401是给定的,但如果你访问一个结果是给定的。这不会阻止未登录的用户获取公共资源,但会阻止未使用已识别客户端的用户。对于我来说,这不仅仅是一种跟踪未来哪些客户端正在使用API的方法

1)如何进行登录并为用户提供随每个API请求一起发送的令牌

2)如何保护API不被未识别的客户端使用


如果我的任何术语或想法不正确,我很抱歉。我对REST和oAuth的理解仍在发展中

您必须使用
grant types=client credentials
在OAuth标准第4.4点中进行检查我同意cleint_credentials grand是应用程序级身份验证的最安全和标准的方式——您的客户端向特定资源发送访问令牌请求,并在基本身份验证中包含其客户端id和客户端机密标题如下:

Authorization: Basic {base64 encode client_id:client_secret}
然后所有后续请求都使用访问令牌作为承载令牌,如下所示

Authorization: Bearer {access_token}
然而。。。如果这是一个纯粹的内部API,并且您不需要超级安全性,那么也可以在每次调用时简单地验证客户机id(或apikey)。这意味着您的API将需要查找(或缓存)apikey的有效性

为了安全起见,我建议您将apikey作为头发送,这样它就不会暴露在查询参数上,但也可以将apikey作为queryparam发送,如

/myresource?apikey={client_id}
从安全角度来看,不建议使用,但在API世界中已被接受