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

OAuth 2.0授权服务器和访问令牌

王扬
2023-03-14

我目前正在学习OAuth 2.0和OpenID Connect,我对授权服务器和访问令牌有疑问。规范将授权服务器定义为:

服务器在成功验证资源所有者并获得授权后向客户端发放访问令牌。

因此,据我所知,客户端将用户重定向到授权服务器,用户在授权服务器上进行身份验证,授权服务器向客户端发出访问令牌。

现在有一件事发生了,直到现在我才明白。有两种可能的方法来理解这一点,我正在努力找到正确的方法:

>

  • 授权服务器发出包含用户声明的访问令牌。带有用户的权利要求的访问令牌与每个请求一起被发送到资源服务器并且资源服务器能够读取那些权利要求并且基于这些权利要求然后允许或拒绝对资源的访问。

    授权服务器发出已包含明确指令的访问令牌,以允许或拒绝访问资源服务器上的资源。因此,资源服务器只是读取这些信息,以查看用户是否可以执行某些操作。

    第一个选项似乎是理解事物的正确方式。在这种情况下,授权服务器将管理用户的声明,并发布只包含声明(如生日、年龄、角色等)的令牌。这反过来又赋予了资源服务器另一项责任:根据声明决定资源是否可用。

    第二种选择要有限得多。授权服务器需要为每个资源发出授权,而不是仅仅发出声明,令牌可能会变得相当沉重,管理这种复杂性似乎很困难。

    那么我的理解正确吗?因此,授权负责管理用户声明并发布仅包含声明的令牌?另一方面,资源服务器负责根据声明是否允许访问资源?

  • 共有1个答案

    阚亮
    2023-03-14

    访问令牌不包含用户声明,但ID令牌包含用户声明。

    授权服务器负责管理访问令牌,但不一定要管理用户的声明。应该有一个单独的服务器来管理用户的声明。

    第2条听起来很奇怪,因为访问令牌的存在意味着“授权已被授予”

    OAuth2.0(RFC6749)是授权规范。OpenID Connect是一种身份验证规范。别糊涂了。

     类似资料:
    • 目标:Java授权服务器: OAuth2.0授权代码授予细粒度权限流(不仅仅是SSO服务器) 用户管理和身份验证:自定义数据库 客户端管理和身份验证:KeyCloak 在开发中应该使用什么Keycloak适配器/API? 如果用户要出现在Keycloak中,应该如何管理/显示它们? 我是Keycloak的初学者,虽然我认为我理解主要原理,但它似乎是一个丰富的工具,我担心我可能仍然在使用它的最佳方法

    • 我试图使用以下所需信息从API生成访问令牌: 授权endpoint:https://api.paylocity.com/identityserver/connect/token 其他值请求必须在请求正文中发布以下表单编码值: grant_type=client_credentials范围=WebLinkAPI 我尝试使用Python'requests'包,但没有成功,请参见下面: 我已经验证了我的

    • 当客户端请求资源服务器使用OAuth2.0访问令牌获取受保护的资源时,该服务器如何验证该令牌?OAuth 2.0刷新令牌协议?

    • 但是,在谈到安全性时,尝试为api网关实现oauth。但是现在我在Spring1.x版本中用来获取访问令牌的'oauth/token'endpoint在SpringBoot2中无法工作。 当我在谷歌搜索时,spring Boot2对spring security 5进行了一些更改,使其默认加密和解密 客户端ID 客户端-机密 用户密码 {“时间戳”:“2018-06-28T17:31:07.181

    • 有两个< code >Spring启动应用程序。 有用作 dev okta 帐户 (这两个应用程序是标准的< code>Spring Boot客户端- -安全地将消息发送到-- (它按预期工作) 但我试图弄清楚他们之间发生了什么,交通明智 我试图发现检查它从从获取的令牌的那一刻。 这是标准< code>oauth 2.0流程和我想调试部分的序列图(箭头) 之间有一个通信,器: 我似乎无法确认资源服

    • 现在,我了解了访问令牌和刷新令牌,但我不知道如何实现它。 我有一个项目,前端是棱角分明的,后端是node.js的,前面有微服务架构和网关。我可以使用像oaust2授权服务器一样的aust0,用户存储在里面? 怎么做?在aust0文档中有大量的说明,我不明白哪个适合我。 我必须通过网关拦截登录、注销和注册,并重定向到auth0,或者我必须在我的用户微服务内部完成这些操作? 在我的项目中,还有个人信息