用于REST API身份验证和授权的Oauth 2.0和OpenId Connect

问题描述 投票:0回答:1

阅读了有关OAuth,OIDC,PKCE,JWT等的书籍并观看了视频之后,我仍然不知道如何在我的应用程序(安全的REST API)中使用所有这些。

我的用例非常简单。我希望我的用户能够使用Google,Amazon,Okta或其他任何方式登录,而我想从他们那里获得的唯一信息是他们用来登录的电子邮件地址,除此之外没有其他信息。他们的首次登录后,他们的电子邮件将被添加到数据库中,并且在一个单独的过程中,我将向他们授予一些权限(他们可以访问哪些资源)。

因此,让我们想象一个标准的授权代码流程,让我们快速进入访问令牌部分。重定向URI已被调用,我们在我的客户端(后端/ API的某个地方)中,在其中检索访问令牌。此时,用户已成功通过身份验证。

但是现在呢?

  • 我不再关心Google(我仍然需要访问令牌吗?),但是我仍然想检查用户是否可以针对每个请求使用我的API,并能够根据其权限访问API资源。
  • 我如何保持用户身份验证(仅适用于2小时)并检查其权限?会话Cookie,令牌或具有到期时间的其他内容?
  • 我需要我自己的授权服务器来检查用户是否有权访问他所请求的资源吗?
  • 考虑我的要求,如果从SPA或移动应用程序访问API,是否需要PKCE?授权代码流程不够吗-SPA或移动应用程序检索授权代码,然后从API调用回调端点?

更重要的问题是,我问的是正确的问题,还是我完全偏离了轨道,这不是它应该如何工作的?

authentication oauth-2.0 authorization openid-connect
1个回答
0
投票

关于您的问题:

  • 您的API在每个请求上都需要一个访问令牌
  • 通过在每个请求上发送访问令牌来管理无状态会话
  • 建议使用您自己的授权服务器,该服务器管理重定向到社交提供程序的操作,这将简化您的UI和API,它们只需要处理一种令牌即可
  • 是的-将PKCE用于公共客户端-授权服务器和UI安全性库将为您处理此问题

您的用例在技术层面上根本不简单,需要很多理解。理解这些方面是一个很好的起点:

  • UI的作用以及编码解决方案的外观
  • 授权服务器的角色及其配置
  • API的作用以及编码解决方案的外观
  • 使用的开放式ID连接消息

我的这些链接可能对浏览有用:

© www.soinside.com 2019 - 2024. All rights reserved.