通过令牌/ API密钥保护API

时间:2020-07-10 12:01:37

标签: oauth-2.0 spring-security-oauth2 api-key

关于API安全性的新手问题:

当我从某些API提供商那里应用API服务时,通常我只是登录并在其api管理站点中生成api密钥或令牌。之后,我可以将此api密钥或令牌嵌入访问API的请求中。

有人告诉我这是OAuth2。但是,阅读了几篇有关OAuth 2的文章后,看来OAuth服务器发出的OAuth-2令牌将过期,并且需要刷新令牌才能获取新令牌。

但是我从那些API提供商那里获得的API密钥没有提及到期,而是可以在其API管理站点上手动撤消该API密钥。

因此,如果我有一些我想使用类似方式(让用户在我的网站上管理自己的api密钥)来保护的API,如何通过使用OAuth 2服务器来实现?

1 个答案:

答案 0 :(得分:1)

我认为您上面解释的是两种不同的授权请求方式:

A。使用API​​密钥

  • 这些API密钥通常是您在仪表板内部生成的长字符串
  • 作为开发人员,您通常在整个应用中拥有1个API密钥,并将此API密钥附加到对API提供商的请求中

B。使用OAuth 2.0

  • OAuth 2.0使用另一种令牌来授权请求​​,它通常涉及短期访问令牌和长期刷新令牌。
  • 这些令牌通常是针对用户的,每个用户将有一个不同的令牌,每隔X天失效一次。
  • 要获取令牌,用户必须“登录”到您的网站或身份提供商的网站(例如Google帐户),并在每次令牌过期时输入其凭据。

下面是一张图片,用来说明两者之间的区别:

OAuth 2.0 vs API Keys

如果您想为其他开发人员提供API服务:

  • 使用OAuth 2.0将开发者登录(这意味着您与仪表板交互的服务器路由将受到OAuth 2.0令牌的保护,要求开发者登录以更新一些设置)
  • 使用API​​密钥访问您提供的API路由。开发人员必须登录并从仪表板生成API密钥。然后他们可以使用此API密钥从您的API中获取资源。

这是有关OAuth 2.0, access tokens, and how to implement it on your site的更详尽的解释。