我正在开发一个需要身份验证的REST API.因为身份验证本身是通过HTTP上的外部Web服务发生的,所以我推断我们会分配令牌以避免重复调用身份验证服务.这让我整整地回答了我的第一个问题:
这真的比仅要求客户端在每个请求上使用HTTP Basic Auth并缓存对身份验证服务端的调用更好吗?
Basic Auth解决方案的优点是在内容请求开始之前不需要完整的服务器往返.令牌可能在范围上更灵活(即仅授予对特定资源或操作的权限),但这似乎比我更简单的用例更适合OAuth上下文.
目前令牌是这样获得的:
curl -X POST localhost/token --data "api_key=81169d80...
&verifier=2f5ae51a...
×tamp=1234567
&user=foo
&pass=bar"
Run Code Online (Sandbox Code Playgroud)
的api_key,timestamp并且verifier被所有请求所需."验证者"由以下人员返回:
sha1(timestamp + api_key + shared_secret)
Run Code Online (Sandbox Code Playgroud)
我的意图是只允许来自已知方的呼叫,并防止呼叫被逐字重用.
这够好吗?漏杀?矫枉过正?
有了令牌,客户可以获得资源:
curl localhost/posts?api_key=81169d80...
&verifier=81169d80...
&token=9fUyas64...
×tamp=1234567
Run Code Online (Sandbox Code Playgroud)
对于最简单的呼叫,这似乎有点可怕.考虑到最终shared_secret将嵌入(至少)一个iOS应用程序的意愿,我认为它可以被提取出来,这甚至提供了一种超出虚假安全感的东西吗?
我目前正在为一个非常繁忙的互联网网站构建API.它是用PHP编写的PHP.现在这是我写的第一个API,允许人们远程访问他们的帐户.一旦API在线,开发人员就可以从中编写自己的工具.
现在我有API工作,但我不确定它是否完全安全.
一个可行的示例网址是: http://domain.com/api.php?api_option=list&api_user_name=USERNAME&api_user_password=PASSWORD
USERNAME:将是用户的实际用户名
PASSWORD:将是他们的实际密码的MD5编码字符串.
如果详细信息匹配,则返回结果,如果不匹配,则返回错误.
所有外部$_GET输入都得到了mysql_real_escape_string()治疗.
我想保持简单,但我不确定这种方式是否是一种安全的方式,可以使用直接连接到用户帐户数据的公共API.
非常感谢您的想法和建议.
我使用Slim框架开发了一些Web API.
我想对这些API实现"基于令牌的身份验证".由于这是我第一次使用"基于令牌的身份验证",所以对我来说一切都是新的.所以,我搜索了很多解决方案,并了解了'JSON Web Token(即JWT)'.
我访问了JWT的URL Git repo URL,但我无法理解如何使用PHP和MySQL将JWT实现到我的系统中.
我还在PHP和MySQL中搜索了使用'JSON Web Token(即JWT)'实现'基于令牌的身份验证'的工作示例.
如果有人可以提供完整的代码以及MySQL数据库表,与PHP的数据库连接,生成安全令牌,将令牌保存到相应的数据库表中,将安全令牌发送回调用PHP文件,在请求中发送安全令牌,使用存储在数据库中的安全令牌等来验证安全令牌,这对我来说真的非常有帮助.
如果可能,请以评论的形式提供整个代码,并提供正确的逐步说明.
我是android开发的新手.我正在使用Android Studio.我正在制作一个应用程序,其中有一个名称下拉列表.在选择任何名称时,ID该应用程序将显示该名称的相应名称.然后有一个按钮,它将搜索用户当前的GPS坐标并在应用程序上显示它们.我搜索了类似的问题并找到了一些链接(我会在最后发布)但我无法理解它们.以下是该应用的屏幕截图
我在mysql中有两个表; users并且activity,如下所示
用户
活动
该UserId是在活动表的外键即Id从users表将被插入到它.
我创建了以下脚本以将数据作为JSON返回:
<?php
require_once ('config.php');
$sql = "SELECT * FROM users";
$r = mysqli_query($con,$sql);
$result = array();
while($row = mysqli_fetch_array($r)){
array_push($result,array(
'Id'=>$row['Id'],
'Name'=>$row['Name']
));
}//end while
echo json_encode(array('users'=>$result));
mysqli_close($con);
?>
Run Code Online (Sandbox Code Playgroud)
在我的应用代码中,我创建了一个users类
用户类
public class Users {
private String Id;
private String Name;
public String getId() {
return Id;
}
public void setId(String id) {
this.Id = id;
}
public String getName() …Run Code Online (Sandbox Code Playgroud)