我知道这是一个非常讨论的话题,但我正在努力为我的案例寻找解决方案。
我在ASP.NET (c# 4.5.1)
中完成了一项已经正常运行的 API服务。我的客户使用 php页面在我的服务器上调用 page.aspx 并通过POST发送一个字符串。此字符串包含 ID和密码消息。每个用户都有一个不同的密钥(AES 256),因为我有ID,我从我的数据库中获取正确的密钥来解密消息并执行其请求所包含的内容。我也检查IP,每个客户端只有一个批准的IP列表(当他们没有使用调试模式进行测试时)
我喜欢这种方法,但现在我必须让我的用户做一些购买。我已经实现了它(感谢PayPal)并且它可以工作,但我觉得我的安全弱。
所以我想添加一些已知的和已经包装好的身份验证系统,,无需重新编写任何已经工作和调试过的代码
因为我从很多大型互联网服务中使用过,我想过OAuth 2.0
(以及我什么都不知道关于它),但看起来每个谈论它的人都是为了创建一个登录使用像 Facebook,Google,Twitter 这样的服务继续......不是我的情况。我有我自己的数据库 我的用户列表,我需要知道100%安全的人正在调用我的API服务。
我尝试创建一个新的Web API 2项目(MVC ..该死的)但我无法理解我是否可以使用我的服务而不重写API调用的逻辑(并且从我看到的看起来像没有是答案)
所以问题是:我可以使用哪种身份验证方法易于实施,而无需重写已经正常工作的代码,并且可以从 PHP的客户端使用
答案 0 :(得分:1)
我正在观看由Scott Allen撰写的关于Pluralsight的“ASP.NET MVC 5 Fundamentals”教程,他很好地解释了这一点。但在观看该教程之前,对于我所使用的一个应用程序,我们在数据库中有一个表,其中包含登录时出现的令牌。然后客户端将发送带有请求的令牌。在服务器端,我做了一个名为[CheckToken]的自定义属性,在其中我将检查数据库中是否存在令牌,以及它是否有效(未过期等)我更进一步,有时交换令牌,以便即使令牌被盗,它也不会有效。这样,用户无需一直保持登录状态。