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

理解OAuth2.0和OpenID Connect如何协同工作的问题

马寒
2023-03-14

我读了很多关于这两种技术的文章,我觉得我对它们有很好的了解。然而,有一件重要的事情我似乎不太明白。OAuth用于授权,而OpenID Connect用于身份验证。但是,在面向OAuth的rfc(https://tools.ietf.org/html/RFC6749#section-4.1)中,它说我们有一个步骤来验证资源所有者(在授权代码授予中是步骤(B))。在我看来,我们已经在OAuth中有身份验证了?我错过了什么?我一直在想,是不是引用的这个身份验证没有定义,所以OpenID Connect只是我们可以在这里插入的“标准”?

我知道OpenID Connect是当你可以注册一项服务时使用的,比如你的facebook登录。在这种情况下,服务将是依赖方(OIDC行话)/客户机(OAuth行话),facebook将是身份提供者/授权服务器,facebook还将是UserInfoendpoint/资源服务器,这是否正确理解?我特别不确定facebook是否同时扮演这两个角色。在规范中,它们似乎/可以由不同的演员扮演。当考虑到OAuth的这个场景时,客户机被授权访问的资源将是关于资源所有者的信息,以便它“创建一个配置文件”,而用户实际上不必创建一个配置文件。这理解正确吗?

编辑:标识提供程序和授权服务器是一样的吗?是否有人可能有一个图表,显示了OAuth和OIDC的所有角色以及它们是如何交互的?

共有1个答案

昌和悦
2023-03-14

资源所有者密码凭据授予类型是OAuth2.0中的一个特例,它是一个反OAuth模式,只是为了向后兼容和迁移的目的。OAuth2.0一般不对用户进行身份验证,而是将此留给其他协议,可能是扩展OAuth2.0的协议,如OpenID Connect。关于这方面的一篇好文章可以在下面找到:http://oauth.net/articles/authentication/

 类似资料:
  • 我正在开发一个Spring Boot应用程序,其中的日志是通过logback完成的,并且集成了Jaeger用于检测。 MyService.java 我尝试了Zipkin而不是Jaeger,但同样的事情发生了。我的申请有什么问题?依赖性有问题吗?

  • 我是新手,并使用SBT构建了一些简单的Scala应用程序/教程。我继续使用Play框架,并使用生成了一个空项目。我做了一些测试,以确保它正确生成。这很好,我添加了sbt-idea插件,,以生成一个IntelliJ项目。这就是地狱破裂的地方。 我必须找到正确的Scala、SBT、Play框架和sbt想法版本组合才能完美编译。否则,编译会出现正确的错误或警告,让我猜测。到目前为止,我拥有的最好的“组合

  • 首先,我想知道这是否是一个普遍可行的设置。我考虑使用构建代理的Docker映像,直到我注意到Windows构建代理只在Windows服务器上运行,并且我必须通过安装msbuild等来自己配置容器。因此,在本例中,我考虑只使用本地机器及其已经设置的工具链作为构建从机。 最后,我想知道TeamCity是否提供构建队列或类似的东西。我指的是以下情况:我在火车上,在我的Macbook上完成一些事情,并将其

  • 我不明白InputStream、InputStreamReader和BufferedReader到底是做什么的。它们都有一个read()方法,对于BufferedReader,还有readLine()。为什么我不能只使用InputStream或者只添加inputStreamReader呢?为什么我需要添加BufferedReader?我知道这与效率有关,但我不明白怎么做。 我一直在研究Buffer

  • 我计划开发一个Java的网络应用程序,它将有大量集成的视频(原始内容)从我们的后端流式传输。我很难透过树木看到森林:我希望所有非媒体、客户端内容(超文本标记语言、CSS、JS等)从我的Tomcat服务器提供,但我希望媒体内容(视频)从像Red5或Wowza这样的实际媒体服务器提供。 所以我的问题是:在后端,如何对从两台服务器(Tomcat和媒体服务器)返回内容?

  • 项目落户GitHub后,一定希望有越来越多的人能参与其中。GitHub提供了包括传统的问题追踪系统、维基,还包括了分布式版本控制系统特有的协同工具。 4.1. Fork + Pull模式 4.2. 共享版本库 4.3. 组织和团队 4.4. 代码评注 4.5. 缺陷跟踪 4.6. 维基