RFC 7235指出此标头提供了两种身份验证机制:
WWW-Authenticate: Newauth realm="apps", type=1,
title="Login to \"apps\"", Basic realm="simple"
我在解析此语法时遇到问题,RFC没有帮助,因为它没有描述它。如果应用程序应该尝试这样做,则我不能只是尝试用逗号分割,因为这用于分隔身份验证机制及其参数。
如果我要使用\w+ realm=
这样的正则表达式来找到每种身份验证机制的开始,我的理解会正确吗?
答案 0 :(得分:1)
好吧,the (ABNF) grammar 确实描述了how to parse it。不,这样的简单正则表达式无法正常工作。
字段值由逗号分隔的挑战组成。每个质询都以方案名称开头,可以选择后跟单个SP字符和参数,每个逗号和参数用逗号分隔。您不能依靠“领域”作为第一个参数。
是的,这很难解析。不幸的是,这个烂摊子是在90年代创建的,向后兼容使其很难修复。
(顺便说一句,您不能在“,”上进行拆分,因为参数的值在使用双引号引起来时确实可以包含逗号)。
PS:http://test.greenbytes.de/tech/tc/httpauth/有一个测试套件。它使用基于ABNF grammar的正则表达式。