Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 RESTful API服务上的身份验证_Php_Api_Authentication_Slim_Restful Authentication - Fatal编程技术网

简单PHP RESTful API服务上的身份验证

简单PHP RESTful API服务上的身份验证,php,api,authentication,slim,restful-authentication,Php,Api,Authentication,Slim,Restful Authentication,我已经开发了一个基于PHP Slim框架的非常简单的PHP API。它除了执行一些SQL查询并在我调用它时返回一个JSON对象之外,什么也不做。我正在通过CURL访问另一个网站上的API 我的问题是:既然API的URL现在基本上是公开的,那么保护它的最佳方式是什么?我的第一个想法是HTTP基本身份验证,这将很容易,我可以通过HTTP头。然而,我认为,只要没有HTTPS连接,它就不是真正安全的(因为网站会以明文形式将用户名+密码传递给API)。此外,我还必须在我的网站上用PHP代码存储凭据,我认为

我已经开发了一个基于PHP Slim框架的非常简单的PHP API。它除了执行一些SQL查询并在我调用它时返回一个JSON对象之外,什么也不做。我正在通过CURL访问另一个网站上的API

我的问题是:既然API的URL现在基本上是公开的,那么保护它的最佳方式是什么?我的第一个想法是HTTP基本身份验证,这将很容易,我可以通过HTTP头。然而,我认为,只要没有HTTPS连接,它就不是真正安全的(因为网站会以明文形式将用户名+密码传递给API)。此外,我还必须在我的网站上用PHP代码存储凭据,我认为这并不是最佳的

我发现的下一个解决方案是基于令牌的身份验证,它的优点是不必对每个请求进行授权,但实现起来可能更为棘手。我也没有这方面的经验

我还阅读了OAuth/OAuth2

问题是:我计划很快在移动应用程序上使用相同的API

有什么提示吗?谢谢

您可以使用它,尽管它是为soapis设计的,但它也可以很好地与restapi配合使用。它基本上是基于令牌的身份验证,在服务器端有一个临时令牌和一个nonce文件

如果您正在寻找示例的话,您有一些用PHP实现的库,例如

WS-Security是HTTP基本身份验证(没有HTTPS是不安全的)和OAuth(实现起来可能更复杂)之间的中间地带。

您可以使用它
,它将为jwt提供一个完整的实现,您可以将其作为中间件使用

大多数人确实使用OAuth/OAuth2,但您始终可以从编写自己的令牌验证开始,并要求将令牌与API头一起发送。您可以检查它的存在,然后相应地验证它。使用令牌身份验证并不复杂。只要花点时间,坐下来看看你决定实施什么。慢慢地编写代码,直到你把你的头都包起来。如果你想移植到移动应用,我绝对推荐使用令牌身份验证。很酷,谢谢。那么OAuth=基于令牌正确吗?事实上,我读了很多关于它的东西,很多人也提出了建议。我想我还没有完全掌握对请求(例如在应用程序中)进行签名和在restful api上进行身份验证的机制。您好,您可以看看我使用slim3进行JSON web令牌身份验证的示例,这里没有O'Reilly所说的RESTAs的WS-Security:;“WSSE是一系列针对web服务(特别是SOAP web服务)的开放式安全规范。但是,用户名令牌算法不是特定于SOAP的;它可以很容易地适应在HTTP身份验证框架内工作。”。它最初确实是一个SOAP扩展,但这并不意味着它不能应用于REST web服务。您提到的实现需要HTTPS,而OP明确表示他需要通过HTTP使用它。您可以通过在中间件初始化中添加此“secure”=>false来允许HTTP连接