Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Anmelden an SIP Server(Asterisk)

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    5

    Anmelden an SIP Server(Asterisk)

    Hi @ all,

    ich bin gerade damit angefangen ein Softphone zu proggen. Ich scheitere bereits dabei mich am Server zu authorisieren. Benutzt wird der Asterisk Server.

    Also ich eröffne eine neues Socket für UDP.
    Code:
    socket (mysocket, SOCK_DGRAM, IPPROTO_UDP);
    Funktioniert auch wunderbar. Connect ebenfalls.
    Für das SOCKADDR_IN nutze ich die IP des Registrars und den Standardport 5060 für SIP.
    Nun sende ich Bspw. ein INVITE sip:user@registrar.tld.
    Lässt sich auch noch an den Server senden. Dann kommt der recv und tschüß.

    Habe auch bereits versucht mich erstmal zu registrieren.
    Mit REGISTER sip:uacName@registrar.tld SIP/2.0 aber auch das endet mit Stillstand.

    Es passiert einfach gar nichts mehr. Nicht mal irgendein Fehler kommt zurück und wenn es nur ein Timeout wäre, wäre ich bereits zufrieden.

    Da ich mich mit SIP zum ersten mal auseinandersetze weiß ich gerad nicht so recht weiter und die Quellen die ich im Netz finden konnte sind für das Problem auch nicht wirklich hilfreich.

    Muss ich mich vorab noch authorisieren?


    Hoffe hier findet sich jemand der sich mit dem Thema etwas auskennt und mir weiterhelfen kann.

    Gruß

    CrazyPlaya

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Zu SIP kann ich Dir jetzt konkret nichts sagen. Aber schau doch einfach mal auf die Leitung was ein ordentliches Programm macht und was Du machst und vergleiche dann. Dann sollte man eigentlich auch den Fehler finden.
    Auf die Leitung schauen kann man z.B. mit tcpdump oder besser tcpflow.
    Homepage: www.pingu.info

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    5
    Ok das mit der Anmeldung habe ich bereits hinbekommen, scheitere jetzt aber an der Autorisierung am Registrar.

    ich sende folgenden Request:

    Code:
    REGISTER sip:registrar.de SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.1:5060;branch=z9hG4bKnashds
    From: <sip:userid@registrar.de>;tag=ja743ks76zlflH
    To: <sip:userid@registrar.de:5060>
    Call-ID: 1j9FpLxk3uxtm8tn@192.168.0.1
    CSeq: 2 REGISTER
    Contact: <sip:userid@192.168.0.1>
    Expires: 3600
    Content-Length: 0
    branch und tag sind rein zufällig erstellte Werte.

    bekomme nun zurück

    Code:
    SIP/2.0 401 Unauthorized
    Via: SIP/2.0/UDP 192.168.0.1:5060;rport=1685;branch=z9hG4bKnashds
    From: <sip:userid@registrar.de>;tag=ja743ks76zlflH
    To: <sip:userid@registrar.de:5060>;tag=fe1721141f05bd30d4b50c70da3ae228.2ed5
    Call-ID: 1j9FpLxk3uxtm8tn@192.168.0.1
    CSeq: 2 REGISTER
    WWW-Authenticate: Digest realm="registrar.de", nonce="488a1dcea7bd70b7fc2cfe971ebd67f5c975be12"
    Content-Length: 0
    So nun soll ich laut RFC eine weitere REGISTER Anfrage senden aber eine Autorisierung hinzufügen.
    Dazu benötige ich wenn ich es richtig verstanden habe, den usernamen, nonce und realm aus der Response, sowie die response-value und eine opaque-value. Nun meine Frage, wie erzeuge ich response- und die opaque-value denn korrekt? Und ist das überhaupt richtig, wie ich hier vorgehe?
    Vllt. noch zur Information mein Registrar ist sipgate.de.

    Wäre sehr erfreut und dankbar wenn mir jemand das mit der Authentifizierung etwas genauer erklären könnte.

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Also ich selber habe mich noch nicht gross selber mit dem SIP-Protokoll beschäftigt. Aber so sieht es bei mir aus, wenn sich XMeeting an meinem Asterisk anmeldet:
    Code:
    	REGISTER sip:192.168.1.3 SIP/2.0
    	CSeq: 1 REGISTER
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bKe0a68d0d-0559-dd11-9bff-e0df5bff982c;rport
    	User-Agent: XMeeting/0.3.4
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	To: <sip:[name]@192.168.1.3>
    	Contact: <sip:[name]@192.168.1.119:5000;transport=udp>
    	Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,NOTIFY,REFER,MESSAGE,INFO,PING
    	Expires: 3600
    	Content-Length: 0
    	Max-Forwards: 70
    
    	SIP/2.0 100 Trying
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bKe0a68d0d-0559-dd11-9bff-e0df5bff982c;received=192.168.1.119;rport=5000
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	To: <sip:[name]@192.168.1.3>
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	CSeq: 1 REGISTER
    	User-Agent: Asterisk PBX
    	Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
    	Supported: replaces
    	Contact: <sip:[name]@192.168.1.3>
    	Content-Length: 0
    
    	SIP/2.0 401 Unauthorized
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bKe0a68d0d-0559-dd11-9bff-e0df5bff982c;received=192.168.1.119;rport=5000
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	To: <sip:[name]@192.168.1.3>;tag=as64f0b0c9
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	CSeq: 1 REGISTER
    	User-Agent: Asterisk PBX
    	Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
    	Supported: replaces
    	WWW-Authenticate: Digest algorithm=MD5, realm="sip.pingu.info", nonce="0fd3e6c8"
    	Content-Length: 0
    	
    	REGISTER sip:192.168.1.3 SIP/2.0
    	CSeq: 2 REGISTER
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bK8ad28f0d-0559-dd11-9bff-e0df5bff982c;rport
    	User-Agent: XMeeting/0.3.4
    	Authorization: Digest username="[name]", realm="sip.pingu.info", nonce="0fd3e6c8", uri="sip:192.168.1.3", algorithm=md5, response="d40b4aac0dc440143d58613a4f459410"
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	To: <sip:[name]@192.168.1.3>
    	Contact: <sip:[name]@192.168.1.119:5000;transport=udp>
    	Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,NOTIFY,REFER,MESSAGE,INFO,PING
    	Expires: 3600
    	Content-Length: 0
    	Max-Forwards: 70
    	
    	SIP/2.0 100 Trying
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bK8ad28f0d-0559-dd11-9bff-e0df5bff982c;received=192.168.1.119;rport=5000
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	To: <sip:[name]@192.168.1.3>
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	CSeq: 2 REGISTER
    	User-Agent: Asterisk PBX
    	Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
    	Supported: replaces
    	Contact: <sip:[name]@192.168.1.3>
    	Content-Length: 0
    
    	SIP/2.0 200 OK
    	Via: SIP/2.0/UDP 192.168.1.119:5000;branch=z9hG4bK8ad28f0d-0559-dd11-9bff-e0df5bff982c;received=192.168.1.119;rport=5000
    	From: <sip:[name]@192.168.1.3>;tag=0e9c8d0d-0559-dd11-9bff-e0df5bff982c
    	To: <sip:[name]@192.168.1.3>;tag=as64f0b0c9
    	Call-ID: f8ee8c0d-0559-dd11-9bff-e0df5bff982c@ts-mobile.local.pingu.info
    	CSeq: 2 REGISTER
    	User-Agent: Asterisk PBX
    	Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
    	Supported: replaces
    	Expires: 3600
    	Contact: <sip:[name]@192.168.1.119:5000;transport=udp>;expires=3600
    	Date: Fri, 25 Jul 2008 22:16:53 GMT
    	Content-Length: 0
    Homepage: www.pingu.info

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    5
    Und mein Problem dabei ist halt wie sich die response value berechnet. Diese Value soll laut RFC dem Server zeigen, dass der benutzer das Passwort kennt. Also muss das Passwort ja in der Response enthalten sein.

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Laut dem hier: https://lists.cs.columbia.edu/piperm...ly/005192.html
    steht dies in der RFC2617. Hier steht auch ein Beispiel-Code am Ende. Allerdings muss ich gestehen, auf die Schnelle bin ich nicht auf den richtigen Wert gekommen. Bei mir hängt es aber vielleicht damit zusammen, dass ich nur das Terminal-Programm md5 habe, was wahrscheinlich immer ein NewLine mit einbezogen hat.
    Homepage: www.pingu.info

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.07.2008
    Beiträge
    5
    So nun habe ich eigentlich alles implementiert.

    Habe die Digest Authentifizierung durchgeführt.
    Dazu habe ich auf folgende Weise Hashes gebildet:

    Code:
    hash1 = md5(user:realm:passwd)
    hash2 = md5(register:uri)
    response= md5(hash1:nonce:hash2)
    Somit habe ich meine response value.

    mache ich nun einen REREGISTER mit der Autorisierung, dann bekomme ich die Response 403 Forbidden(Bad Auth)

    Meine Frage zu der Berechnung der Hashes,
    für den realm habe ich den Wert genommen der mir bei der Unauthorized Response zurückgeliefert wurde. Diese ist anders als der URI. Sollte aber doch kein Prob sein.
    Dann wie ist das mit den werten für den 2. Hash für die Methode "REGISTER" oder "Digest" nehmen?
    Für die URI, nehme ich hier die IP des Servers oder muss ich noch die index datei mit angeben? also bspw. so: uri/index.html. oder einfach nur uri?

    Gruß
    CrazyPlaya

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •