【问题标题】:Specifying multiple authentication schemes in an www-authenticate header在 www-authenticate 标头中指定多个身份验证方案
【发布时间】:2019-08-27 14:36:01
【问题描述】:

RFC 7235 指出此标头提供了两种身份验证机制:

 WWW-Authenticate: Newauth realm="apps", type=1,
                   title="Login to \"apps\"", Basic realm="simple"

我在解析这个语法时遇到问题,RFC 没有帮助,因为它没有描述它。如果应用程序应该尝试这样做,我不能只尝试用逗号分隔,因为它既用于分隔身份验证机制及其参数。

如果我要使用像 \w+ realm= 这样的正则表达式来查找每个身份验证机制的开头,我的理解是否正确?

【问题讨论】:

    标签: http authentication www-authenticate


    【解决方案1】:

    好吧,the (ABNF) grammar确实描述了how to parse it。不,像这样的简单正则表达式无法正常工作。

    字段值由逗号分隔的挑战组成。每个挑战都以方案名称开头,可选地后跟单个 SP 字符和参数,每个都以逗号分隔。您不能依赖“领域”作为第一个参数。

    是的,这很难解析。不幸的是,这个烂摊子是在 90 年代造成的,向后兼容很难修复它。

    (顺便说一句:你不能在 "," 上拆分,因为参数的值在双引号中确实可以包含逗号)。

    PS:http://test.greenbytes.de/tech/tc/httpauth/ 有一个测试套件。它使用基于ABNF grammar 的正则表达式。

    【讨论】:

    • ABNF 语法?好的...我没有在该部分中看到对此的引用。你从哪里得到这些信息的?我真的很想找到类似的东西:-)
    • 通过搜索 ABNF 找到它。它在前言第 1.2 节中说
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2021-04-28
    • 2018-04-13
    • 2011-05-15
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多