我正在尝试保护使用Spring MVC开发的REST API。
在谷歌搜索中,我遇到了这个link。
这是最好的方法吗?它使用数字证书吗?或数字证书仅用于基于SOAP的Web服务?
如果有更好的REST身份验证替代方案,请指出我。
答案 0 :(得分:1)
这是最好的方法吗?
什么是“最佳”取决于您的要求。这种方法的好处是
不太好:
是否使用数字证书?
不。没有涉及证书。除了可能用于向您提供秘密访问密钥的SSL连接之外。
或数字证书仅用于基于SOAP的Web服务?
不正确。您可以对REST使用https(SSL),这通常涉及服务器对证书进行身份验证以进行身份验证。您还可以对其进行配置,以便客户端必须使用SSL对证书进行身份验证。这将是一个很好的解决方案,但在客户端实现相当棘手。这不是火箭科学,但阅读和理解证书以及私钥和公钥的处理可能很棘手。您还需要一些受信任的Root CA,如果您使用其中一个已建立的CA,则需要进行大量设置或使用起来相当昂贵。当我在处理大公司的内部服务时,我会考虑这种方法。他们通常已经拥有这种基础设施。
如果有更好的REST身份验证替代方案,请指出我。
如上所述:对于大多数服务来说,这是一个非常好的方法。在某些设置中,使用带有客户端证书的PKI是一种替代方案。
答案 1 :(得分:-1)
您可以像这样模拟公钥/私钥认证
你需要两件基本的东西!
UserId / Application Id(要检查此应用程序是否允许访问此应用程序)(私钥)
API的随机密钥(为经过身份验证的应用程序允许检查此方法)
Rest服务(服务器端)将通过“Application ID”
记录所有允许的应用程序现在您可以在自己的算法中使用这两个键。例如,您可以创建一个简单的HASH。
方案是,您使用公钥(You API随机密钥)加密API。 正在调用该方法的客户端正在使用其私钥(应用程序ID)
进行解密当客户端发送他的应用程序ID时,您可以从他的应用程序ID和API随机密钥生成HASH,并确保允许此应用程序调用此方法。
这里的优点是: 1.服务器端可以更改加密算法,客户不必担心
服务器可以更改方法加密(公钥),客户无需担心
客户端无法更改私钥(应用程序ID)。如果他改变,服务器将拒绝它。另一方面,未注册的应用程序无法访问Rest Service