REST API身份验证(维护身份验证状态)

REST API身份验证(维护身份验证状态),api,rest,oauth,openid,oauth-2.0,Api,Rest,Oauth,Openid,Oauth 2.0,我正在开发一个RESTAPI。目前,我正试图使其最低限度的安全。我问这个问题是因为我找到的关于这个主题的大多数帖子都很旧 对于身份验证,我发现以下方案: 基本身份验证 AWS认证协议 OpenID OpenID连接 OAuth伪身份验证 基本身份验证和AWS身份验证会在首次身份验证后维护经过身份验证的请求,因为它们会不断发送已签名的请求 我不明白OpenID和OAuth身份验证如何维护(第二个)自动通知的请求?我是否需要为每个请求使用OAuth/OpenID服务器检查访问令牌?这如何保护RE

我正在开发一个RESTAPI。目前,我正试图使其最低限度的安全。我问这个问题是因为我找到的关于这个主题的大多数帖子都很旧

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

  • 基本身份验证
  • AWS认证协议
  • OpenID
  • OpenID连接
  • OAuth伪身份验证
基本身份验证和AWS身份验证会在首次身份验证后维护经过身份验证的请求,因为它们会不断发送已签名的请求

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


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

我想在这里谈谈OAuth

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

现在,来回答您提出的问题-
访问令牌通常可使用1小时。是的,您需要在一小时内对任何谷歌API进行的任何经过身份验证的调用都可以使用相同的访问令牌进行。
还有另一种类型的令牌—
刷新令牌
。在任何时候,您的应用程序都可以点击提供商的令牌交换端点,并将刷新令牌交换为-refresh-token+access令牌对

现在,您又有了一个访问令牌,可以帮助您一个小时,还有一个刷新令牌,可以随时交换

刷新令牌的有效期随您的需要而定,直到用户明确撤销对您的应用程序的权限为止。(告诉谷歌,它不希望你访问他的资源!)


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

谢谢你的回答。但是拥有一个令牌并不意味着你已经通过了身份验证,任何能够重新发送令牌的程序都会被认为是正确的客户端。还是我错了?访问令牌不会改变客户端发送的请求/响应可能已被更改的事实。不如果服务器发出承载令牌,那么任何拥有该令牌的人都可以点击API。这是访问令牌寿命短的一个主要原因。最后一个问题的答案取决于应用程序的体系结构。搜索授权代码流,您将知道如何安全地传递令牌和接收信息。