REST认证—数字签名



我正在尝试使用Spring MVC开发我的REST API。

在谷歌搜索中,我遇到了这个链接

这是最好的方法吗?它是否使用数字证书?或者仅用于基于SOAP的Web服务的数字证书?

请告诉我是否有更好的REST认证替代方案

这是最好的方法吗?

什么是"最好的"取决于你的需求。这种方法的好处是
  • 相当容易实现
  • 没有明显的漏洞,只要秘密访问密钥保密。

Not so nice:

  • 双方都必须知道秘密访问密钥,因此作为用户,您必须信任REST服务的提供者,以保护您的秘密访问密钥的秘密。在大多数情况下,这可能不是一个很大的限制,但仍然……

是否使用数字证书?

不。不涉及证书。除了SSL连接之外,SSL连接可能用于向您提供秘密访问密钥。

或仅用于基于SOAP的Web服务的数字证书?

不是真的。您可以为REST使用https (SSL),这通常涉及到服务器提供证书来对自己进行身份验证。您还可以对其进行配置,以便客户机必须使用SSL使用证书对自己进行身份验证。这将是一个很好的解决方案,但在客户端实现起来相当棘手。这不是火箭科学,但是阅读和理解证书以及私钥和公钥的处理可能会很棘手。您还需要一些受信任的根CA,如果您使用已建立的根CA,那么设置它需要大量的工作,或者使用它的成本相当高。当我在一家大公司的内部服务部门工作时,我会考虑这种方法。他们通常已经有了这种基础设施。

请告诉我是否有更好的REST认证替代方案。

如上所述:对于大多数服务来说,这是一种非常好的方法。在客户端证书中使用PKI是另一种选择,在某些情况下会更好。

您可以像这样模拟公钥/私钥身份验证

你需要两个基本的东西!

  1. UserId/Application Id(用于检查此应用程序是否被允许访问此应用程序)(私钥)

  2. API的随机密钥(用于检查该方法是否被允许用于当时已验证的应用程序)

Rest服务(服务器端)将通过"应用程序ID"拥有所有允许的应用程序的记录

现在你可以在你自己的算法中使用这两个键。例如,您可以从中创建一个简单的HASH。

这种情况是,您正在使用公钥(您的API随机密钥)加密您的API。调用该方法的客户端正在使用其私钥(应用程序ID)进行解密

当客户端发送他的应用程序Id时,你可以从他的应用程序Id和API随机密钥中生成HASH,并确保这个应用程序被允许调用这个方法。

这里的优点是:1. 服务器端可以更改加密算法,客户端无需担心

  1. 服务器可以更改加密方法(公钥),客户端无需担心

  2. Client CANNOT change private key(Application ID)。如果他更改了,服务器将拒绝它。否则,未注册的应用程序不能访问Rest服务

最新更新