我的网站上有一些REST服务可供第三方访问。 我的计划很简单。为了呼叫这些服务,他们需要向我索取密钥。我将私下为他们提供GUID。对我的任何服务的每次调用都将通过过滤器检查密钥的标头并相应地接受/拒绝该请求。 此站点全部为HTTPS,因此密钥将在传输过程中加密。我并不担心授权客户可以识别密钥。换句话说,我并不担心任何类型的“内部”攻击或共享密钥的人。我只是不想随意,未经授权的外部用户。
我环顾四周,我并没有真正看到有人这样做。我觉得我过度简化......但另一方面,我也没有看到它有什么问题。
我的问题是......这听起来是否足够安全(从基本/最小的角度来看)还是会暴露出一些我看不到的安全漏洞?
FWIW - 我正在使用Spring Framework,包括Spring Security 4。
谢谢!
答案 0 :(得分:2)
如果它的HTTPS和API密钥位于传输过程中加密的标头中,如您所描述的那样,则它遵循非常标准的设计身份验证模式。
现在,您的安全性取决于您分发和存储API密钥的方式。
虽然,您可以使用" Application Identifier and Key pairs"做法。
API密钥模式结合了应用程序的标识 和一个令牌中的秘密使用令牌,这种模式分开了 二。每个使用API的应用程序都会发出不可变的初始值 标识符称为应用程序ID(App ID)。应用程序ID是 不变,可能是也可能不是秘密。另外每个应用程序 可能有1-n个应用程序密钥(App_Keys)。每个密钥都是关联的 直接使用App_ID,应该被视为机密。
以防您希望将来扩展该应用程序。