PHP:创建和使用REST和身份验证

时间:2012-04-25 04:58:24

标签: php rest authentication

我正计划创建一些简单的REST Web服务,供其他一些应用程序使用(内部一切,不面向Internet)。出于某些原因,应用程序应与SSO(Windows,NTLM或其他)一起使用。我遇到的问题是如何在Web服务中进行身份验证。

调用Web服务的应用程序不知道用户密码,所以我很遗憾如何在没有用户登录的情况下对REST进行身份验证?例如。避免基本身份验证

我想避免登录,因为用户操作简单,无需在我的应用程序中处理密码。我有什么选择?我错过了一些明显的东西吗?

这是一个解决方案: 创建令牌,将其传递给服务并将其存储在数据库中。 Web服务检查数据库中是否存在令牌。 (到期处理?)

1 个答案:

答案 0 :(得分:1)

如您所述,此问题最常见的解决方案是基于密钥或令牌的简单身份验证。这就是很多谷歌服务(例如地图)的工作方式。您只需为每个使用者在服务提供者上生成一个密钥,将其存储在数据库中,并验证所有呼叫都是否通过了有效密钥。

更复杂的选项是HMACOAuth身份验证。鉴于您的情况,即仅在您的Intranet内提供服务,我会说保持简单并使用单一密钥身份验证。

在上面的场景中,我没有看到处理过期的必要性。尽管如此,如果你想实现它,那么你可以

  • 在每个客户端请求上,在服务器上生成基于时间戳的令牌
  • 在您对请求的回复中,还包括此令牌
  • 客户端应在后续请求中同时使用静态API密钥和动态令牌
  • 服务器应检查令牌的生命周期,并在必要时接受/拒绝该请求。