Oauth 2.0 授权标头中是否支持多个承载令牌

Oauth 2.0 授权标头中是否支持多个承载令牌,oauth-2.0,authorization,jax-rs,bearer-token,jwt-auth,Oauth 2.0,Authorization,Jax Rs,Bearer Token,Jwt Auth,在基于JAVA的应用程序中,我们通过authorizationHttpHeader接收JWT令牌。据我所知,HttpHeader可以针对一个头键包含多个值 所以这里想知道授权http报头是否也可以在同一报头中包含多个承载令牌值?我知道授权头可以包含多种不同类型的令牌,如基本令牌、承载令牌等 但它是否也可以包含多个与值相同类型的令牌? as example: (Whether it is valid or not) "Authorization" : "Bearer XXXXXX1, Bearer

在基于JAVA的应用程序中,我们通过
authorization
HttpHeader接收JWT令牌。据我所知,HttpHeader可以针对一个头键包含多个值

所以这里想知道
授权
http报头是否也可以在同一报头中包含多个
承载
令牌值?我知道
授权
头可以包含多种不同类型的令牌,如基本令牌、承载令牌等

但它是否也可以包含多个与值相同类型的令牌?

as example: (Whether it is valid or not)
"Authorization" : "Bearer XXXXXX1, Bearer XXXXX2" 

任何RFC参考都会有帮助。TLDR这是可能的,某些服务器可能正在处理它,但它不是RFC有效的

长答案:

这可以是有效的,如字段顺序中所定义:

收件人可以将具有相同字段名的多个标题字段组合成一个“字段名:字段值”对,而不改变消息的语义,方法是将每个后续字段值按顺序附加到组合字段值,并用逗号分隔。因此,具有相同字段名称的标题字段的接收顺序对于组合字段值的解释非常重要;转发邮件时,代理不得更改这些字段值的顺序

每个“承载XXXX”应视为单独的字段值

所以一些服务器可能可以处理它

。。。但是“Authorization”RFC()为Authorization头添加了更多特定的规则

授权=凭证

credentials=auth scheme[1*SP(token68/[(“,”/auth param) *(OWS“,”[OWS验证参数])]

auth param=令牌BWS“=”BWS(令牌/带引号的字符串)

因此,您似乎不能包含不同类型的多个令牌,如Basic、Bearer等,因为它只接受一个auth方案

Bearer()的RFC更简单

b64token=1*(字母/数字/ “-”/“/”/“\u”/“~”/“+”/“/”/”*”=”

credentials=“Bearer”1*SP b64token


因此,它可以包含相同或不同方案的多个值,一些服务器会接受它,因为它是一个有效的头,但它不会是RFC有效的,因为授权头更严格。

TLDR这是可能的,某些服务器可能正在处理它,但它不是RFC有效的

长答案:

这可以是有效的,如字段顺序中所定义:

收件人可以将具有相同字段名的多个标题字段组合成一个“字段名:字段值”对,而不改变消息的语义,方法是将每个后续字段值按顺序附加到组合字段值,并用逗号分隔。因此,具有相同字段名称的标题字段的接收顺序对于组合字段值的解释非常重要;转发邮件时,代理不得更改这些字段值的顺序

每个“承载XXXX”应视为单独的字段值

所以一些服务器可能可以处理它

。。。但是“Authorization”RFC()为Authorization头添加了更多特定的规则

授权=凭证

credentials=auth scheme[1*SP(token68/[(“,”/auth param) *(OWS“,”[OWS验证参数])]

auth param=令牌BWS“=”BWS(令牌/带引号的字符串)

因此,您似乎不能包含不同类型的多个令牌,如Basic、Bearer等,因为它只接受一个auth方案

Bearer()的RFC更简单

b64token=1*(字母/数字/ “-”/“/”/“\u”/“~”/“+”/“/”/”*”=”

credentials=“Bearer”1*SP b64token

因此,它可以包含相同或不同方案的多个值,一些服务器会接受它,因为它是一个有效的头,但它不会是RFC有效的,因为授权头的限制性更强