开放ID令牌与Oauth令牌

开放ID令牌与Oauth令牌,oauth,oauth-2.0,openid,openid-connect,Oauth,Oauth 2.0,Openid,Openid Connect,我是OAuth和OpenId的新手,在阅读了多个页面和信息之后,我仍然一点也不自信 我的目标是创建一个与be通信的iOS应用程序。我需要iOS应用程序来验证用户访问其资源的身份 阅读关于OAuth的文章,解决方案似乎是直截了当的。只需使用PKCE的授权代码流,即可使应用程序具有访问令牌。通过这种方式,我授权我的iOS应用程序访问用户数据。当iOS应用程序调用https://example.org/user使用访问令牌,资源服务(my BE server)可以获取访问令牌并调用内省API,以了解访

我是OAuth和OpenId的新手,在阅读了多个页面和信息之后,我仍然一点也不自信

我的目标是创建一个与be通信的iOS应用程序。我需要iOS应用程序来验证用户访问其资源的身份

阅读关于OAuth的文章,解决方案似乎是直截了当的。只需使用PKCE的
授权代码流
,即可使应用程序具有
访问令牌
。通过这种方式,我授权我的iOS应用程序访问用户数据。当iOS应用程序调用
https://example.org/user
使用访问令牌,资源服务(my BE server)可以获取访问令牌并调用内省API,以了解访问令牌绑定到哪个用户,并返回正确的用户数据。由于授权首先需要进行身份验证,因此拥有访问令牌将意味着用户已经(或至少已经)进行了身份验证

让我困惑的第一件事是:根据OAuth规范,OAuth不是一个身份验证协议,但该协议仍然使用用户的凭据对用户进行身份验证为什么OAuth要求用户提供凭据,而不是依赖另一个协议/流进行用户身份验证?这样的协议只会向OAuth确认身份验证成功

这第一个问题使我开始阅读关于开放ID连接规范和ID令牌的内容。iOS应用程序将接收此令牌iOS应用程序应该如何处理它?我已经可以通过调用
/user
端点获取用户信息此ID令牌如何成为优势?tldr

  • 访问令牌(OAuth 2.0)-针对受保护的OAuth进行授权 端点

  • ID令牌(OIDC)-客户端应用程序的身份验证

  • 授权服务器身份验证—用于检测 两个协议中涉及的最终用户的真实性(伪 从客户端应用程序角度进行身份验证)

OAuth不是身份验证协议,但该协议仍然包含使用用户凭据对用户进行身份验证的步骤

正确,OAuth不是身份验证协议。它用于授权,这意味着识别是否有正确的访问授权来访问受保护的资源(受保护的资源?例如:-一个API,一张存储在后端的照片)

那个么为什么会看到最终用户登录对话框呢?这就是授权服务器的工作。它对终端用户进行身份验证,以使其知晓,然后向客户端发出访问令牌(简单地说,客户端==终端用户使用的应用程序)。因此,确实发生了AuthenitAction,但这不适用于您的客户端应用程序或受保护的端点。可以将其定义为伪身份验证

OpenID Connect-用于客户端应用程序的身份验证

在最初的RFC()中,oauth2.0被定义为一个框架。OpenIDConnect是基于此框架构建的扩展。它提供了什么?正如您所发现的,它引入了ID令牌。ID令牌由授权服务器颁发,供客户端应用程序使用。它包含JWT格式的最终用户身份信息。通过验证此令牌的完整性,客户端应用程序可以对最终用户进行身份验证。和访问令牌?这是用来对付受保护端点的。它没有说任何关于终端用户对客户端的内容

tldr

  • 访问令牌(OAuth 2.0)-针对受保护的OAuth进行授权 端点

  • ID令牌(OIDC)-客户端应用程序的身份验证

  • 授权服务器身份验证—用于检测 两个协议中涉及的最终用户的真实性(伪 从客户端应用程序角度进行身份验证)

OAuth不是身份验证协议,但该协议仍然包含使用用户凭据对用户进行身份验证的步骤

正确,OAuth不是身份验证协议。它用于授权,这意味着识别是否有正确的访问授权来访问受保护的资源(受保护的资源?例如:-一个API,一张存储在后端的照片)

那个么为什么会看到最终用户登录对话框呢?这就是授权服务器的工作。它对终端用户进行身份验证,以使其知晓,然后向客户端发出访问令牌(简单地说,客户端==终端用户使用的应用程序)。因此,确实发生了AuthenitAction,但这不适用于您的客户端应用程序或受保护的端点。可以将其定义为伪身份验证

OpenID Connect-用于客户端应用程序的身份验证

在最初的RFC()中,oauth2.0被定义为一个框架。OpenIDConnect是基于此框架构建的扩展。它提供了什么?正如您所发现的,它引入了ID令牌。ID令牌由授权服务器颁发,供客户端应用程序使用。它包含JWT格式的最终用户身份信息。通过验证此令牌的完整性,客户端应用程序可以对最终用户进行身份验证。和访问令牌?这是用来对付受保护端点的。它没有说任何关于终端用户对客户端的内容