2011-01-31 125 views
0

我正在推動SIP摘要式身份驗證。這是來自服務器的401響應。需要關於SIP摘要式身份驗證的幫助

SIP/2.0 401 Unauthorized 
Call-ID: [email protected]:0:0:0:0:0:0:0 
CSeq: 7 REGISTER 
From: "myuser" <sip:[email protected]>;tag=c41616b8 
To: "myuser" <sip:[email protected]>;tag=ac7e0189ab09b4fde10c77c8597b662a.5cbe 
Via: SIP/2.0/UDP 172.22.162.100:5060;branch=z9hG4bK-333333-dd5444afbd4938fe01d9e1a47ccaf139 
WWW-Authenticate: Digest realm="sip2sip.info", nonce="4d417ba7bb1906c1434ba9645b35d5a84d0e71ad" 
Server: SIP Thor on OpenSIPS XS 1.4.5 
Content-Length: 0 

根據RFC 2617代碼來構建摘要響應應該是這樣的(用Groovy)

def md5(user, realm, pass, method, String uri, nonce) { 
    def paramsDump = """md5() params 
    user: $user 
    realm: $realm 
    password: $pass 
    method: $method 
    uri: $uri 
    nonce: $nonce 
""" 
    print paramsDump 

    def A1 = DigestUtils.md5Hex ("$user:$realm:$pass")  
    def A2 = DigestUtils.md5Hex ("$method:$uri") 

    def left = DigestUtils.md5Hex (A1)  
    def right = DigestUtils.md5Hex (A2) 

    DigestUtils.md5Hex ("$left:$nonce:$right") 
} 

md5 ('myuser', 
    'sip2sip.info', 
    'mypass', 
    'REGISTER', 
    'sip:sip2sip.info', 
    '4d417ba7bb1906c1434ba9645b35d5a84d0e71ad') 

出於某種原因,它的產量從一個我期待不同的值(我知道的預定義值應該適用於我的帳戶 - 我已經完成了SIP Communicator應用程序的一些流量嗅探)。 DigestUtils類型來自Apache Codec。有任何想法嗎?

回答

4

我不明白你爲什麼創建左,右像,不會

def A1 = DigestUtils.md5Hex ("$user:$realm:$pass")  
def A2 = DigestUtils.md5Hex ("$method:$uri") 

DigestUtils.md5Hex ("$A1:$nonce:$A2") 

可根據3.2.2.1節?

但我可能只是失去了一些東西...;)

+0

感謝您的幫助 - 你剛纔救了我的一天 – nixau 2011-01-31 17:52:52