TR-069第一期第六修正版-10
3.4.4 认证
Kevin: 认证是比较基础的功能。理论上来说,我们在实现的时候应该完全按照协议的约定来做,但有时还是会遇到不按标准开发的设备或ACS,这时就会带来不必要的认证麻烦,并不会省力。
当CPE不使用TLS进行身份验证时,则ACS必须使用HTTP身份验证[8]对CPE进行身份验证。若只使用TLS进行加密,ACS应使用[10]中定义的basic身份验证方案。如果未使用TLS,则ACS必须使用[9]中定义的digest认证方案。
CPE必须同时支持HTTP basic和digest认证方案。ACS通过提供basic或digest认证质询来选择认证方案。如果TLS用于加密,CPE应按照定义[10]先发制人地发送基本身份验证凭证。
注意-使用身份验证挑战需要发送初始消息(通常是Inform RPC方法请求);在TLS中使用抢占式basic身份验证是安全的,无需额外请求。
如果CPE已收到来自ACS的认证质询(basic或digest),则CPE应在TCP连接期间的所有后续HTTP请求中发送Authorization头。无论CPE是否这样做,ACS都可以在单个或多个TCP连接内的会话的任何阶段发出后续认证质询。
不论使用任何形式的HTTP身份验证对CPE进行身份验证,CPE都应使用在所有CPE制造商中全局唯一的标识username/userid。具体而言,CPE username/userid应采用以下两种格式之一:
<OUI> "-" <ProductClass> "-" <SerialNumber>
<OUI> "-" <SerialNumber>
如果使用上述格式的username/userid,
百分比编码必须通过将每个字符转换为UTF-8,然后对每个八位字节进行百分比编码来执行。例如,字符é(带锐音符的拉丁文小写字母E)在UTF-8中表示为两个八位字节0xC3 0xA9,因此百分比编码为“%C3%A9”。
注意-在将username/userid转义百分号格式之前,应该先澄清UTF-8。例如,有一种可能,会将字符é处理为ISO拉丁语-1八位字节0xE9,这将被百分比编码为“%E9”。
如果使用了上述格式的username/userid,当且仅当ProductClass参数的值为空时,必须使用第二种形式
例如:
012345-0123456789
012345-STB-0123456789
012345-Set%2DTop%2DBox-0123456789
在任一种HTTP身份验证形式中使用的密码对于每个CPE都应该是唯一的值。也就是说,多个CPE不应共享同一密码。这个密码是一个共享的秘密,因此CPE和ACS都必须知道这个密码。初始CPE安装时两个实体都知道共享秘密的方法不在本规范的范围内。CPE和ACS均应采取适当措施,防止未经授权访问密码或ACS情况下的密码列表。

浙公网安备 33010602011771号