当前位置: 首页 > 知识库问答 >
问题:

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

章远航
2023-03-14

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

我的用例相当简单。我希望我的用户能够使用谷歌、亚马逊、Okta或其他任何方式登录,我想从他们那里得到的唯一信息是他们用来登录的电子邮件地址,没有别的。在他们第一次登录后,他们的电子邮件将被添加到数据库中,在一个单独的过程中,我将授予他们一些权限(他们可以访问哪些资源)。

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

但是现在怎么办?

  • 我不再关心谷歌了(我还需要访问令牌吗?),但是我仍然想检查用户是否可以对每个请求使用我的应用编程接口,并且能够根据他的权限访问应用编程接口资源。
  • 我如何保持用户身份验证(仅2h)并检查他的权限?会话Cookie、令牌或其他有过期时间的东西?
  • 我是否需要自己的授权服务器来检查用户是否可以访问他请求的资源?
  • 考虑到我的要求,如果从SPA或移动应用程序访问API,我需要PKCE吗?授权代码流难道还不够吗——SPA或移动应用程序检索授权代码,然后从应用编程接口调用回调终结点?

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

共有1个答案

荆利
2023-03-14

就你的问题而言:

  • 您的API在每次请求时都需要一个访问令牌

您的用例在技术层面上一点也不简单,需要大量的理解。一个好的起点是了解以下方面:

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

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

  • 初始代码示例和教程
  • 包括PKCE的消息工作流

给定一个访问令牌,UI和API都可能通过第二个链接中的步骤12获取电子邮件,以查找用户信息。

 类似资料:
  • 问题内容: 我一直在努力用Spring-Security 正确实现Stomp(websocket) 身份验证 和 授权 。 为了后代,我将回答我自己的问题以提供指导。 问题 Spring WebSocket文档(用于身份验证)看起来不清楚ATM(IMHO)。而且我不明白如何正确处理 身份验证 和 授权 。 我想要的是 使用登录名/密码对用户进行身份验证。 防止匿名用户通过WebSocket连接。

  • 我不熟悉spring微服务世界。由于我处于学习阶段,我尝试并实施了以下内容。 > 路由(能够使用Spring云网关进行路由) 负载平衡(Netflix Eureka) 限速和断路器 我只需要一些澄清和建议,说明在这些情况下该怎么做: 因为我已经创建了身份验证/授权作为一个单独的微服务集中。现在我如何实现这样的每个请求必须包含jwt令牌和通过API网关调用其他微服务也应该检查哪个用户有权限访问其他微

  • 我有一个客户端服务器场景。 我有厚客户端和瘦客户端(浏览器),它们与我的服务器进行通信。 我的胖客户端使用X-509系统证书进行客户端证书身份验证,并与服务器通信 此外,此证书用于生成签名URL(带过期时间),以便我的瘦客户机与服务器通信,用于完整性和授权目的。在这种情况下,我也有一个基于令牌的方法用于身份验证。 现在,我想使用客户端凭据或基于身份验证代码将身份验证机制移动到基于OAuth的流。

  • 我正在实现一个基于Spring Data REST的应用程序,我想知道是否有一种优雅的方法可以使用此框架或相关框架来实现身份验证和授权规则。 对REST服务器的所有HTTP请求都必须带有身份验证标头,我需要检查它们并根据HTTP方法和经过身份验证的用户与所请求资源的关联来决定是否授权。例如,(该应用程序是电子学习系统的REST服务器),讲师只能访问他们自己的课程部分,学生只能访问他们订阅的课程部分

  • 我遵循了以下教程/信息来源:https://cwiki.apache.org/confluence/display/solr/authentication+and+authorization+plugins和https://lucidworks.com/blog/2015/08/17/securing-solr-basic-auth-permission-rules/ 然后我创建了这个securi