0

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

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

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

如果我要使用正则表达式找到每个身份验证机制的开始,我的理解是否正确\w+ realm=

4

1 回答 1

1

好吧,(ABNF)语法 确实描述了如何解析它。不,像这样的简单正则表达式无法正常工作。

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

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

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

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

于 2019-08-27T16:04:08.993 回答