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


PHP: creating and consuming REST and authentication

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

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

我想避免登录,因为用户简单,并且不必在我的应用程序中处理密码。我有哪些选择?我错过了一些明显的东西吗?

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

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

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

在上述情况下,我认为不需要处理过期。尽管如此,如果你想实现它,那么你可以

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