我有一个移动应用程序的REST API调用,它在没有任何令牌或安全机制的情况下命中我的服务器。
我想要保护我的API调用。我正在尝试了解OAuth是什么以及它如何保护我的移动应用程序REST API调用,这些调用正在命中我的服务器?
此外,我想详细了解OAuth中使用的以下字段,以及我将从哪里获取以下字段。
Consumer Key
Consumer Secret
Token
Token Secret
Timestamp
Nonce
我有一个移动应用程序的REST API调用,它在没有任何令牌或安全机制的情况下命中我的服务器。
我想要保护我的API调用。我正在尝试了解OAuth是什么以及它如何保护我的移动应用程序REST API调用,这些调用正在命中我的服务器?
此外,我想详细了解OAuth中使用的以下字段,以及我将从哪里获取以下字段。
Consumer Key
Consumer Secret
Token
Token Secret
Timestamp
Nonce
由于大多数服务提供商使用OAuth 2.0,而OAuth 1.0已被主要提供商弃用,因此我将解释OAuth2.0。
OAuth是一种授权的开放标准,通常用作互联网用户使用其Microsoft、Google、Facebook、Twitter、One Network等账户登录第三方网站的方式,而不会暴露其密码。
你可以实现自己的OAuth服务器,这里我将解释社交认证。所以这里之后使用OAuth指的是带有OAuth的社交认证。
简单来说,OAuth允许用户使用(Facebook、Google等)帐户登录您的网络服务。
以下术语与OAuth无关,但与OAuth一起使用可使其更加安全。
源代码: http://smerity.com/
我将以Facebook登录为例,解释此图表。
背景: 在解释图表之前,请考虑以下步骤:
secret_key
和2)一个app_id
现在是图表:
client_secret
调用认证服务器访问令牌
给API服务器。访问令牌
的用户信息。现在,这如何保护您的API?
将需要安全的部分设置为需要登录才能访问。如果发出请求的客户端未登录到您的API,则将其发送到图表的第二个步骤。
那么,nonce是什么?时间戳呢?
如果有人窃取了访问令牌,则只要访问令牌过期,他就可以访问API服务器。因此,当用户请求页面时,服务器会将一个nonce返回给客户端,该nonce存储在服务器中。客户端使用接收到的nonce对请求进行签名并完成请求。由于nonce仅使用一次,因此服务器将删除nonce。当攻击者获取nonce并向服务器发送假请求时,服务器将拒绝请求,因为一次性数字无效,已经被使用过了。
TimeStamp用于识别生成令牌或nonce的时间,并在有限的时间范围内(1-2秒)将其过期,这是完成请求所需的时间。