我感到困惑的是,在向授权服务器发送授权请求时,似乎没有标准的方法来指定访问令牌的受众。
OAuth2将访问令牌指定为不透明字符串;规范中只有一处提到了“观众”,即访问令牌可以是“观众限制的”。许多最近的授权服务器实现似乎产生了JWT访问令牌,JWT指定了受众(aud)声明。
据我所知:-Auth0使用“audience”参数-Connect2id使用“resource”参数-Identity Server对“aud”声明使用基于颁发者的固定值,并假设范围足够-然而,这并不适合所有用例。-优秀的“OAuth2 in Action”一书在“aud”声明中展示了一个资源服务器URI的示例,但没有说明它来自哪里。
那么,如何以标准方式为特定受众(资源服务器、API、...)获取访问令牌?
您在对已接受答案的评论中提到了Tschofeniq草案,但实际上看起来doc实际上支持使用“受众”字段:
受众URI必须是[3]第4.3节定义的绝对URI。它可能包括一个“Application/x-wan-form-urlencoded”格式的查询组件
事实上,这有力地说明了这一步很重要,应该以这种方式完成:
步骤(2):当客户端与令牌endpoint交互以获取访问令牌时,它必须填充新定义的访问群体参数。。。
因此,似乎Auth0的方向可能是正确的。正如您在评论中指出的那样,aud字段用于响应,而不是请求(NodeJs中常见的库,如jsonwebtoken,设置了这样的字段(以及sub
、
jti
和
iss
),当您解码JWT时。
为特定受众/API/资源服务器请求访问令牌的“提议标准”方式是使用授权请求上的资源
查询参数。
当在对授权endpoint的授权请求中使用“resource”参数时,它表示请求访问的受保护资源的标识。
资源
指示请求访问的目标服务或资源。它的值必须是绝对URI
RFC8707:OAuth 2.0的资源指标https://datatracker.ietf.org/doc/html/rfc8707#section-2
我想你是对的。有几个可用的指南。OAuth 2.0授权框架:无记名令牌使用OAuth 2.0:受众信息(draft-tschofenig-oauth-audience-00.txt)
OpenID连接一个明确定义的“aud”参数,如下所示:
必修的。此ID令牌的目标受众。它必须包含依赖方的OAuth 2.0客户端id作为访问群体值。它还可能包含其他受众的标识符。在一般情况下,aud值是一个区分大小写的字符串数组。在常见的特殊情况下,当有一个受众时,aud值可能是一个区分大小写的字符串。
我得到的令牌是: http://localhost:8080/servicesmem/oauth/token?username=myuser&password=mypassword&grant_type=password&scope=read,write,trust 我得到: 我得到: 我使用头:Authorization Bearer ACCESS_TOKEN,但我得到了同样的错误。我错过了什么
我有一些问题,当我想要获得“访问令牌”,我使用Spring Security在我的项目 WebSecurity配置 我在内存中设置了user以便在该类中进行身份验证,并且我使用的是内存令牌 我正确地发送了grant_type,client_id,client_secret,username和password,但没有在API上响应“访问令牌
下面是security.xml文件,我正在使用它合并spring-security-oauth2。 我必须在spring-security.xml文件中做哪些更改,以便在JSON中发送查询参数?
当且仅当用户在发出OAuth2请求时登录到LinkedIn时,它才起作用。 如果用户未登录,则会遇到错误。 我们的行动顺序: 成功获取新的访问令牌 使用访问令牌,发布到apiendpoint 之后,我们将收到一份401,内容如下: 有时,经过一段时间后,使用相同的访问令牌重试会得到200。有时不会。 如果用户在“401期间”登录LinkedIn,那么之前获取的访问令牌就会神奇地开始工作。 我不知道
访问令牌凭据(以及任何机密的访问令牌属性)在传输和储存时必须保持机密性,并只与授权服务器、访问令牌生效的资源服务器和访问令牌被颁发的客户端共享。访问令牌凭据必须只能使用带有RFC2818定义的服务器身份验证的1.6节所述的TLS 传输。 当使用隐式授权许可类型时,访问令牌在URI片段中传输,这可能泄露访问令牌给未授权的一方。 授权服务器必须确保访问令牌不能被生成、修改或被未授权一方猜测而产生有效的
访问令牌是用于访问受保护资源的凭据。访问令牌是一个代表向客户端颁发的授权的字符串。该字符串通常对于客户端是不透明的。令牌代表了访问权限的由资源所有者许可并由资源服务器和授权服务器实施的具体范围和期限。 令牌可以表示一个用于检索授权信息的标识符或者可以以可验证的方式自包含授权信息(即令牌字符串由数据和签名组成)。额外的身份验证凭据——在本规范范围以外——可以被要求以便客户端使用令牌。 访问令牌提供了