1

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

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

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

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

4

1 回答 1

1

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

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

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

  • 在每个客户端请求上,在服务器上生成一个基于时间戳的令牌
  • 在您对请求的回复中,还包括此令牌
  • 客户端应在后续请求中同时使用静态 API 密钥和动态令牌
  • 服务器应检查令牌的生命周期并根据需要接受/拒绝请求。
于 2012-04-25T06:48:17.080 回答