如何实现RESTful Web API的身份验证
展开全部
SSL的缺点是服务器端配置相对有点复杂,更关键的就是客户端对此支持可能不好,那你考虑一种自己的加密方法,有木有?我这里提供一种方法, 我只是把上面的内容中整理了一下变成了我的方法。(传说中的剽窃?呵呵)方法描述如下:
假设有一个用户,用户名是guogangj,密码是123456(呃……这也能叫密码?)
于是 com/api/orders/这个URL和一个新生成的GUID拼在一起,再用123456这个密码执行对称加密,生成的密文为XXXXOOOOXXXXOOOO(假设而已)
数据包中带上用户名guogangj和XXXXOOOOXXXXOOOO这个密文,发送给服务器
服务器收到包后,根据guogangj这个用户名到数据库中查找到123456这个密码
服务器使用123456这个密码来解密XXXXOOOOXXXXOOOO这个密文,得到了明文,即pi/orders/这个URL和前面由客户端生成的那个GUID
服务器到一个全局的集合中查找这个GUID,看看是否已经存在,如果存在,则验证不通过,如果不存在,就将其放入这个集合中。这是为了避免重发攻击。这个全局的集合会越来越大,所以还要定期清理。
服务器再比对解密出来的URL和用户真实请求的URL是否一致,如果一致,那么认为这是合法用户,验证通过
假设有一个用户,用户名是guogangj,密码是123456(呃……这也能叫密码?)
于是 com/api/orders/这个URL和一个新生成的GUID拼在一起,再用123456这个密码执行对称加密,生成的密文为XXXXOOOOXXXXOOOO(假设而已)
数据包中带上用户名guogangj和XXXXOOOOXXXXOOOO这个密文,发送给服务器
服务器收到包后,根据guogangj这个用户名到数据库中查找到123456这个密码
服务器使用123456这个密码来解密XXXXOOOOXXXXOOOO这个密文,得到了明文,即pi/orders/这个URL和前面由客户端生成的那个GUID
服务器到一个全局的集合中查找这个GUID,看看是否已经存在,如果存在,则验证不通过,如果不存在,就将其放入这个集合中。这是为了避免重发攻击。这个全局的集合会越来越大,所以还要定期清理。
服务器再比对解密出来的URL和用户真实请求的URL是否一致,如果一致,那么认为这是合法用户,验证通过
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询