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

Auth0 JWT访问令牌

叶嘉颖
2023-03-14

我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。

我正在使用Auth0lock登录,并使用/oauth/token获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数/oauth/token负载),但没有成功-返回访问令牌,但不是JWT。

或者,是否有用于验证“本机”Auth0访问令牌的Java库?

var options = {
    auth: {
        redirectUrl: '<redirect_link>',
        responseType: 'code',
        params: {
            audience: '<API_identifier>',
            scope: 'openid offline_access'
        }
    },
    allowedConnections: ['Username-Password-Authentication']
};

var lock = new Auth0Lock('<clientId>', '<auth0_Host>', options); 
lock.show();

返回的代码用于POST到https://

client_id=<client_id>&redirect_uri=<redirect_url>&client_secret=<client_secret>&code=<returned_code>&grant_type=authorization_code&audience=<API_identifier>

这是成功的,但访问令牌不是JWT,例如:“访问令牌”:“sG99DAJI789SYgTj”

使用scope openid返回JWT格式的id_令牌,但从阅读文档来看,此令牌不应用于API授权。


共有1个答案

桓瀚
2023-03-14

Auth0似乎正在使用OpenID connect,这是OAuth2的扩展。最终用户身份验证成功后,服务器返回JWT格式的ID令牌和访问令牌

ID令牌

ID令牌是一种安全令牌,其中包含授权服务器在使用客户端时对最终用户进行身份验证的声明,以及可能请求的其他声明。ID令牌表示为JSON Web令牌(JWT)[JWT]。

您可以使用任何JWT库在客户端验证ID令牌,但是访问令牌的验证规则是不同的

3.2.2.9. 访问令牌验证

要使用ID令牌验证从授权endpoint发出的访问令牌,客户端应执行以下操作:

>

  • 使用JWA中为ID Token的JOSE Header的alg Header参数指定的哈希算法哈希access_token的ASCII表示的八位字节。例如,如果alg是RS256,则使用的哈希算法是SHA-256。

    取哈希的最左边的一半,并对其进行Base64url编码。

    ID标记中的at_hash值必须与上一步中生成的值匹配。

    因此,基本上要验证它,您需要使用ID-token的哈希算法计算access\u-token的摘要,并检查它是否与ID-token的at\u-hash声明匹配

  •  类似资料:
    • 访问令牌凭据(以及任何机密的访问令牌属性)在传输和储存时必须保持机密性,并只与授权服务器、访问令牌生效的资源服务器和访问令牌被颁发的客户端共享。访问令牌凭据必须只能使用带有RFC2818定义的服务器身份验证的1.6节所述的TLS 传输。 当使用隐式授权许可类型时,访问令牌在URI片段中传输,这可能泄露访问令牌给未授权的一方。 授权服务器必须确保访问令牌不能被生成、修改或被未授权一方猜测而产生有效的

    • 访问令牌是用于访问受保护资源的凭据。访问令牌是一个代表向客户端颁发的授权的字符串。该字符串通常对于客户端是不透明的。令牌代表了访问权限的由资源所有者许可并由资源服务器和授权服务器实施的具体范围和期限。 令牌可以表示一个用于检索授权信息的标识符或者可以以可验证的方式自包含授权信息(即令牌字符串由数据和签名组成)。额外的身份验证凭据——在本规范范围以外——可以被要求以便客户端使用令牌。 访问令牌提供了

    • 难以理解oauth2令牌和刷新令牌进程 我有这个代码 上面的代码给了我一个访问令牌,我遵循了stackoverflower的同事pinoyyid建议的链接,但是,我对如何正确使用生成的访问令牌访问驱动器和复制文件感到困惑。。。 我看到的所有过程通常都涉及到,我不确定如何使用整个帖子http://.....事情,所以基本上我需要弄清楚,如果我在谷歌客户端的一个新实例中使用上面的代码获得的访问令牌,或

    • 我想要下一个:从我的网站能够启动虚拟服务器(Ubuntu、linux、windows服务器)。我用AWS编辑了这个,通过IAM很容易找到访问密钥和令牌。 如果可能的话,我也希望使用Azure来获得访问密钥和令牌。我在这里找到了一些关于如何欣赏的教程:https://www.youtube.com/watch?v=ujzrq8Fg9Gc 我看到还有oAuth2,这太多了,无法为这个项目设置它。 还有

    • 本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源

    • 访问令牌的类型给客户端提供了成功使用该访问令牌(和类型指定的属性)发起受保护资源请求所需的信息 若客户端不理解令牌类型,则不能使用该访问令牌。 例如,RFC6750定义的“bearer”令牌类型简单的在请求中包含访问令牌字符串来使用: GET /resource/1 HTTP/1.1 Host: example.com Authorization: Bearer F_9.B5f-4.1JqM 而