【问题标题】:Can multiple bearer token supported in Authorization header授权标头中是否支持多个不记名令牌
【发布时间】:2020-03-27 19:56:26
【问题描述】:

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

所以这里想知道Authoriztion http header 是否也可以在同一个 header 中包含多个bearer token 值?我知道Authorization 标头可以包含多个不同类型的令牌,例如 Basic、Bearer 等。

但它是否也可以包含多个相同类型的token作为值?

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

任何 RFC 参考都会有所帮助。

【问题讨论】:

    标签: oauth-2.0 authorization jax-rs bearer-token jwt-auth


    【解决方案1】:

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

    长答案:

    这可能是有效的,如RFC7230, section 3.2.2 中所定义,字段顺序:

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

    每个“Bearer XXXX”都应被视为单独的字段值。

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

    ...但是“授权”RFC (RFC7235, Appendix C) 为授权标头添加了更多规则

    授权 = 凭据

    凭证 = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ]

    auth-param = token BWS "=" BWS (token/quoted-string)

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

    承载 (RFC6750 section2.1) 的 RFC 更加简单

    b64token = 1*( ALPHA / DIGIT / “-”/“。” / "_" / "~" / "+" / "/" ) *"="

    凭证 = "承载者" 1*SP b64token

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2015-05-26
      • 1970-01-01
      • 2018-09-22
      • 2021-06-02
      • 2021-01-01
      • 2021-07-27
      相关资源
      最近更新 更多