【问题标题】:RTSP Authentication : digest issueRTSP 身份验证:摘要问题
【发布时间】:2013-06-30 22:40:46
【问题描述】:

我需要向流媒体服务器验证我的 RTSP 流,这是挑战:

RTSP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="Streaming Server",  nonce="76bfe6986d3e766424de9bd6e7d3ccc1"
Session: 1845562184;timeout=60
Cseq: 1
...

Wirecast 成功使用这些设置进行身份验证:

Host name : 192.168.33.9:1935/live/my_stream.sdp
location : live/my_stream.sdp
username : user
password : test

它的响应是:e1dff363b9763df0c7615429af79715c

所以根据wikipedia我尝试用这个方法进行身份验证:

//H(data) = MD5(data)
//KD(secret, data) = H(secret:data)
//A1 = username:realm:password
//A2 = http-method:uri
//response = KD( H(A1), nonce:H(A2))

HA1 = md5("user:Streaming Server:test")
HA2 = md5("POST:live/my_stream.sdp")
RESPONSE = md5(HA1+":"+nonce+":"+HA2)

但使用此代码,我得到响应“0963c3a7b1481523f809e6affa7e792e”和 401 Unauthorized

你能帮帮我吗?

【问题讨论】:

    标签: authentication streaming rtsp http-authentication digest-authentication


    【解决方案1】:

    响应的计算应该是:

    HA1 = md5("user:Streaming Server:test")
    HA2 = md5("DESCRIBE:/live/my_stream.sdp")
    RESPONSE = md5(HA1+":"+nonce+":"+HA2)
    

    以及完整的认证字符串:

    Authorization: Digest
    username="user",
    algorithm="MD5",
    realm="Streaming Server",
    nonce="76bfe6986d3e766424de9bd6e7d3ccc1",
    uri="/live/my_stream.sdp",
    response="de73283590f7ad76929d20f0d06e914b"
    

    【讨论】:

    • 也就是说:HA2应该使用RTSP动词。问题说“HTTP动词”,因为它指的是HTTP身份验证,但RTSP有不同的动词。
    【解决方案2】:

    假设您的摘要方法很好,您可以尝试使用这些参数来回答:

    Authorization: Digest
    username="user",
    realm="Streaming Server",
    nonce="76bfe6986d3e766424de9bd6e7d3ccc1",
    uri="rtsp://192.168.33.9:1935/live/my_stream.sdp",
    

    【讨论】:

    • 这肯定是错误的,因为它不包含计算出来的response哈希。
    • 另外 uri 应该是 localpath,在这种情况下是“/live/my_stream.sdp”
    • @Matyas:规范说“per HTTP 1.1”,它允许绝对路径。主要的是 Authorization 响应包含明文 uri 和散列响应;他们显然应该匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多