2

我正在开发一个 REST API。目前,我正在尝试使其安全性最低。我问这个问题是因为我发现的关于这个主题的大多数帖子都很老了。

对于身份验证,我发现了以下方案:

  • 基本认证
  • AWS 身份验证协议
  • 开放ID
  • OpenID 连接
  • OAuth 伪身份验证

基本身份验证和 AWS 身份验证会在首次身份验证后维护经过身份验证的请求,因为它们会继续发送签名请求。

我不明白 OpenID 和 OAuth 身份验证如何维护(第二个)请求身份验证?我是否需要在每个请求中使用 OAuth/OpenID 服务器检查访问令牌?这如何保护 REST API 不接收已更改的请求?

您推荐的任何其他方案、建议或有关该主题的阅读材料总是受欢迎的。

4

1 回答 1

1

我会在这里谈论OAuth

i) 您创建了一个网络应用程序并希望使用 google 的 OAuth API。
ii) 您在此处注册您的应用程序并获取凭据。
iii) 现在,在应用程序中,您将使用 Google 的 SDK 打开登录页面,输入您的凭据,Google 将对其进行验证并向您发送访问令牌和刷新令牌。
iv) 您将使用访问令牌对谷歌的 API 进行 REST 调用并获取用户数据。

现在,回到你问的问题 -
Anaccess token通常活 1 小时。是的,您需要在一小时内对 Google 的任何 API 进行的任何经过身份验证的调用都可以使用相同的访问令牌进行。
还有另一种类型的令牌 - Refresh Token. 在任何时候,您的应用程序都可以访问提供者的令牌交换端点并将刷新令牌交换为 - 刷新令牌 + 访问令牌对。

现在再次,您有一个可以帮助您一小时的访问令牌和一个可以随时交换的刷新令牌。

刷新令牌只要您愿意就可以存在,直到用户明确撤销对您的应用程序的权限。(告诉谷歌它不想让你访问他的资源!)

OAuth 将确保只有经过身份验证和授权的客户端才能访问您的 API,从而使您的 REST API 安全。但通常,OAuth 仅在第三方客户端需要访问用户资源的情况下使用!

于 2013-04-24T09:32:55.700 回答