DSS对RTSP协议中的ANNOUNCE有一个认证的过程。需要事先通过web管理界面设定movie broadcast password,然后用这个账号进行Digest Authentication, DSS才会允许客户端上传一个流。如要修改这个认证机制,首先需要了解其原理。根据上一篇博客《DSS源码分析--对RTSP请求的状态机处理机制》的分析,DSS对RTSP请求的认证过程主要涉及kAuthenticatingRequest和kAuthorizingRequest两个阶段。
kAuthenticatingRequest阶段,根据RTSP请求的类型,分别设置qtssActionFlagsWrite和qtssActionFlagsRead两个flag,然后交给注册了QTSS_RTSPAuthenticate_Role角色的模块去判断是否为合法用户。
case kAuthenticatingRequest:
{
......
if((method == qtssAnnounceMethod) || ((method == qtssSetupMethod) && fRequest->IsPushRequest()))
{ fRequest->SetAction(qtssActionFlagsWrite);
break;
}
void* theSession = NULL;
UInt32 theLen = sizeof(theSession);
if (QTSS_NoErr == fRTPSession->GetValue(