|
|
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
Существует протокол SIP, который для регистрации пользователя на сервере использует WWW-авторизацию, описаную в RFC 2617 (всю инфу я брал оттуда). Есть некая программа, которая успешно использует данный алгоритм. Мне удалось перехватить траффик, передаваемый и получаемый этой программой. Имя пользователя - Pat Пароль - password Входящий запрос от сервера на авторизацию: WWW-Authenticate: Digest realm="Tario Networks", nonce="403cb95b62b32b8517ecfcafc74b0242" Исходящий запрос на авторизацию от программы на сервер: Authorization: Digest username="Pat", realm="Tario Networks", nonce="403cb95b62b32b8517ecfcafc74b0242", response="d0bae9c1d93a3e068a3e23589b678d60" uri="sip:Pat@212.53.35.244" Передо мной стоит задача - зная имя пользователя и пароль пройти авторизацию на сервере. Пытаюсь получить строку response вручную, начитавшись сказок на ночь :-)) (RFC 2617) Из RFC 2617 для данного примера я получил следующий алгоритм: unq("X") = X H(data) = MD5(data) KD(secret, data) = H(concat(secret, ":", data)) request-digest =<"><KD(H(A1),unq(nonce-value)":"H(A2))><"> A1 = unq(username-value) ":" unq(realm-value) ":" passwd where passwd = < user's password > A2 = Method ":" digest-uri-value Method = 5.1.1 in RFC 2616 Поле Method я взял = "GET" A1 = Pat:Tario Networks:password A2 = GET:sip:Pat@212.53.35.244 H(A1) = f22688dc8585618b67e907c6a2ddae9c H(A2) = 537e6f4eb51c8670ba53da5103c1d81a request-digest=MD5(f22688dc8585618b67e907c6a2ddae9c: 403cb95b62b32b8517ecfcafc74b0242:537e6f4eb51c8670ba53da5103c1d81a) = 42ff0a9d629c1ab6d2fd89d9f77d6017 Как видно результат не совпадает с "эталоном" :-((( Если кто сталкивался с WWW-авторизацией, расскажите что я делаю не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 00:40 |
|
||
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
я всегда basic делал :0-) Можно заметить ,что конечная строка зависит от метода выбранного в A2 а что на POST и PUT получается? Или все равно сервер не берет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 08:22 |
|
||
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
Надо юзать библиотеку WinInet, берет на себя массу ломовой работы. В том числе и авторизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 10:33 |
|
||
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
>я всегда basic делал :0-) К сожалению, необходимо делать только digest >Можно заметить ,что конечная строка зависит от метода выбранного в A2 >а что на POST и PUT получается? Тоже не совпадает. Тем более, что в RFC2617 идет исходник на С, в нем поле Method = "GET". Кстати, здесь используется "упрощенная" схема алгоритма, где не присутствует поле qop. А пример с полем qop в RFC2617 у меня сошелся. МОжет что-то не договаривают в RFC? :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2004, 14:44 |
|
||
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
Поле метод нужно брать из SIP сообщения в котором отсылается Authorization: Digest username="Pat" и т.д. ... скорее всего это REGISTER (GET - это для HTML, а не для SIP), осталдьное все вроде бы верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 13:57 |
|
||
|
WWW-авторизация
|
|||
|---|---|---|---|
|
#18+
сейчас столкнулся с такой же проблемой... Вот сессия авторизации Запрос Код: 1. 2. 3. 4. 5. 6. 7. Ответ Код: 1. 2. 3. 4. 5. 6. 7. 8. Пароль я заведомо знаю: test Пишу скрипт по RFC: Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В ответ получаю Код: 1. 2. т.е. хеши не совпадают!!! В чем может быть проблема???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2008, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=32421995&tid=1344899]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 348ms |

| 0 / 0 |
