【发布时间】:2020-03-05 16:40:09
【问题描述】:
在阅读了有关 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