使用 OpenId Connect 保护 API

Using OpenId Connect for securing API

我有几个 REST API,我想使用联合授权服务器来保护它们。此页面:https://oauth.net/articles/authentication/ 建议单独使用 OAuth2 不足以进行身份​​验证,应该使用 OpenId Connect 扩展来获得正确的身份验证。

但是,我感觉 OIDC 所做的只是定义一个身份端点以及相关的范围和声明。如果我不是特别需要这些身份声明,那么使用普通 OAuth 授权代码来验证用户和保护资源有什么问题?或者 OAuth2 仅用于委托对代表用户工作的客户端应用程序的访问权限(这不是我的用例)?

感谢您的意见!

OAuth 是一个授权框架。在 OpenID Connect 之前,正如您在问题中所述,一些组织越来越多地使用 OAuth 作为身份验证机制。虽然这在技术上是可行的,但在一种实现与另一种实现之间存在着不一致。这种方法的标准化出现在 OpenID Connect 中,这组供应商基本上说让我们为我们一直在做的事情想出一个标准化的方法。标准化方法的好处是协作、安全等。OAuth 的 openid 范围诞生了。

大多数与最终用户身份验证相关的工作发生在 UI 方面,当然还涉及授权重定向、身份提供者、同意书等。

就安全 REST API 的代码而言,您改为执行以下类型的操作。正如您所说,这主要是 OAuth 2.0 行为,尽管 Open Id Connect 端点可能很有用:

  • 验证从授权服务器收到的访问令牌
  • 读取令牌声明以识别经过身份验证的用户
  • 为此,您可能需要从 JWKS 端点下载令牌签名密钥
  • 您的 API 可以从用户信息端点查找更多详细信息
  • 您的 API 可以使用元数据端点获取上述端点位置
  • 然后您的 API 将根据声明和范围应用授权规则