26

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

deal wrote:

Стучаться на oauth.html напрямую с логином и паролем - это по сути уязвимость,
которую мы на первом этапе внедрения токенов не учитывали. Сама по себе задача по переходу на oAuth
совсем не простая и быстрая и потребовала множество правок, доработок и т.д.
На первом этапе мы сконцентрировались на корректной поддержке токенов и внедрению на всех сайтах.
Сейчас, когда все основные проблемы по работе с токенами решены, можно переключиться на
закрытие уязвимостей. Конкретно эту уже исправили и в ближайшем обновлении так токен нельзя будет получить.
Про существование этой мы знали, но откладывали правки.
Что касается Вашего кода - особым достижением я бы это не назвал.
Но в любом случае спасибо за то, что подтолкнули нас исправить эту уязвимость сейчас)

Видимо браузер пользуется этой же уязвимостью.

Токен получен.... И видимо вы не обновили хостинг.

27

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Ближайшее обновление - понедельник. Но возможно завтра обновим.

Solutions Department
Gurtam
28

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

deal wrote:

Ближайшее обновление - понедельник. Но возможно завтра обновим.

Я смотрю вы пофиксили баг с авторизацией.
Добавили  на странице http://hosting.wialon.com/login.html в html документ тег
<input type="hidden" name="sign" value="GZhR8TXwJBfx6bhezQVyd9+qOHCmMVisgiWGF9aetiE=">

Думаете тяжело выдрать вот этот ключ (GZhR8TXwJBfx6bhezQVyd9+qOHCmMVisgiWGF9aetiE=) и постучаться по ссылке http://hosting.wialon.com/oauth.html с доп. параметром.

И в результате получить токен.

По итогу... Ваша правка дала защиты 0. Обходится ваш костыль за 15 минут.

Рекомендую усилить защиту вот таким способом.

1 Пользователь звонит к вам.
2 Вы задаете секретный вопрос (Ваше любимое блюдо?/ Девичья фамилия матери?/ Ваш любимый фильм?)
3 Пользователь говорит правильный ответ
4 Вы выдаете токен.

29

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Ещё раз повторимся:
обращаться в oauth.html напрямую минуя форму логина http://hosting.wialon.com/login.html - не допускается.
Данная брешь закрыта 2 недели назад.

P.S. На гениев криптоанализа естественно это не распространяется.

Solutions Department
Gurtam
30

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Добрый день.
Делаю POST запрос к http://hosting.wialon.com/oauth.html в итоге возвращается ответ 200 вместо 301 и в теле "{"error": "insecure or allowed time expired"}" с чем это может быть связано? Авторизационные данные верные

31

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Bartezz wrote:

Добрый день.
Делаю POST запрос к http://hosting.wialon.com/oauth.html в итоге возвращается ответ 200 вместо 301 и в теле "{"error": "insecure or allowed time expired"}" с чем это может быть связано? Авторизационные данные верные

Читайте выше - обращаться в oauth.html напрямую минуя форму login.html НЕ допускается.
Поэтому вы и получаете такой ответ.

Solutions Department
Gurtam
32

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Здравствуйте!
Можно ли использовать token выданный при авторизации одного из клиентов для авторизации других ?
Вопрос связан с тем, что наша система на базе 1С (в основном используется web-клиент), и все общение с телематами (в том числе и с вашим) осуществляется с клиентов.
В результате многие клиенты не довольны необходимостью операторов вводить логин/пароль от телемата (или хотя бы его знать, на случай если авторизация истечет).

В связи с этим конкретный вопросы:
1) Обязательно ли IP должен быть одним и тем же при получении token и его использовании для авторизации ?
2) Сколько авторизаций можно осуществить с одним token (и если "да", то сколько одновременных сессий возможно от одного token) ?

33

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Здравствуйте.
1. Нет, токен можно использовать с любого IP так же как  логин и пароль.
2. На токены нет особых ограничений, все те же что и на пару логин/пароль

Mobile Development
Gurtam
34

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Просто замечательно!

И небольшое уточнение...

В описании oAuth не говорится, о бессрочном действии докена (упоминается только о действии по умолчанию - 30 дней), а в этой теме говорится, что если задать атрибут duration в 0, то токен будет бессрочным, если используется хотя бы раз в течении 100 дней (как я понимаю, как после выдачи, так и после последнего использования).

Действительно ли можно использовать один и тот же токен неопределенное время, если он используется чаще 100 дней ?

35

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Да. Для токена с duration 0, чтобы он продолжал существовать нужно его использовать хотя бы раз в 100 дней. Иначе он автоматически удалится.

Solutions Department
Gurtam
36

Все вопросы по новому способу авторизации в Wialon (oAuth)

(edited by dark_max 30/09/2015 21:14:20)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Раньше у нас на сайте была сделана "сквозная" авторизация посредством отправки формы вот такого типа:

<form action='http://hosting.wialon.com/login_action.html' method='post'>
               <input type='hidden' name='user' value='user}'>
               <input type='hidden' name='passw' value='password'>
               <input type='hidden' name='action' value='login'>
               <input type='hidden' name='skip_auto' value='1'>
               <input type='hidden' name='lang' value='ru'>
             </form>

Теперь такая штука не проходит. Собственно, вопрос: Можно ли с новой системой авторизации сделать так, чтобы пользователь, который один раз получил токен введя логин и пароль на http://hosting.wialon.com/login.html при следующем входе не вводил логин и пароль, а как-то передавал свой токен (ну не лично, конечно, а из БД сайта), что-бы таки вернуть "автологин" хоть в каком-то  виде.  А-то неудобно каждый раз сначала логиниться в нашу систему, а потом ещё отдельно и в мониторинг слежения...

37

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

dark_max, Вы можете реализовать сохранение полученного токена в localStorage браузера после формы login.html.
При следующем запуске сайта можно по этому токену пробовать залогиниться при помощи запроса svc=token/login&params={"token":"<access_token>","operateAs":"<optional_sub_user>"}.
А вообще, можно не изобретать велосипед, а посмотреть в сторону упрощённой формы авторизации, пример - http://sdk.wialon.com/playground/demo/t … mple_form.

Solutions Department
Gurtam
38

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

dark_max
Если токен уже есть в БД, то ссылка вида http://hosting.wialon.com/?token=<USER_TOKEN> выполнит автологин

39

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

deal wrote:

Ещё раз повторимся:
обращаться в oauth.html напрямую минуя форму логина http://hosting.wialon.com/login.html - не допускается.
Данная брешь закрыта 2 недели назад.

P.S. На гениев криптоанализа естественно это не распространяется.

#!/bin/bash

import urllib
import urllib2
import re
import time
from bs4 import BeautifulSoup

content = urllib2.urlopen("http://hosting.wialon.com/login.html").read()
soup = BeautifulSoup(content, 'lxml')

signKey = ""

for input in soup.find_all('input'):
    if input.get('name') == 'sign':
      signKey =  input.get('value')
      break

url = "http://hosting.wialon.com/oauth.html"
values = {"client_id": "Wialon Hosting", "redirect_uri":"http://hosting.wialon.com/login.html", "access_type":"0x100", "activation_time":"0", "duration":"2592000", "flags":"6", "login":"", "passw":"", "sign": signKey}

print values

time.sleep(1)

data = urllib.urlencode(values)
req = urllib2.Request(url, data)

response = urllib2.urlopen(req)
#he_page = response.read()
redirect_url = response.geturl()
#print the_page

print "REDIRECT_URL: " + redirect_url

pattern = re.compile(".*" + "access_token=([0-9a-fA-F]{72})" + "\&" + "svc_error=(\\d)" + ".*")
parser = pattern.match(redirect_url)
token = parser.group(1)
svc_error = parser.group(2)

print "TOKEN: " + token
print "SVC_ERROR: " + svc_error

Данная брешь не закрыта. С помощью скрипта выше можно получить токен.

40

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Уважаемый shreding.kot, Вы можете использовать вышеуказанный способ
(если Вам так хочется и для Вас ничего не значат наши слова "не допускается").
Однако Вы должны сами понимать, что если это работает сейчас,
то нет никаких гарантий что оно будет работать завтра.
Мы в любой момент можем скорректировать и усложнить защиту.
И Вам придётся заново переписывать свои обходные пути.

Solutions Department
Gurtam
41

Все вопросы по новому способу авторизации в Wialon (oAuth)

(edited by mulder-203 01/10/2015 22:03:41)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Добрый день!  У меня небольшое некоммерческое веб-приложение по отслеживанию автобусов до нашего района. До 1 октября оно работало как надо, а сейчас авторизация не проходит. Есть какие-то инструкции по новому API авторизации и как ее организовать теперь?

Я довольно слаб в вопросе, но успешно пользовался допиленным кодом с github.

Вся моя программа укладывается в 1 файл вот тут (в кодировке UTF-8): http://suvorovski.ru/auto_bus/route.js

А саму функцию авторизации приведу ниже:

  /** App login
     * @param {String} user   wialon username (@default: 'Cebit')
     * @param {String} password   password (@default: 'cebit')
     * @param {String} url   serher host url (@default: '[url]https://hst-api.wialon.com[/url]')
     */
    self.login = function (user, password, url) {
        user = user || 'Cebit';
        password = password || 'cebit';
        url = url || '[url]https://hst-api.wialon.com[/url]';
        if (wialon) {
            session = wialon.core.Session.getInstance();
            session.initSession(url); // init session
            session.login(user, password, '', function (code) { // login callback
                // if error code - print error message
                if (code) {
                    msg(wialon.core.Errors.getErrorText(code));
                } else {
                    msg('Logged successfully');
                    // hide overlay
                    //document.getElementById('overlay').style.display = 'none';
                    // when login succeed then run init() function
                    init();
                }
            });

        } else {
            msg('wialon.js load error');
        }
    };

Вызов этой функции: self.login("ЛОГИН", "ПАРОЛЬ");

Может, вы можете подсказать, как преобразовать эту функцию или в чем дело, если не в ней? Спасибо!

42

Все вопросы по новому способу авторизации в Wialon (oAuth)

(edited by a_titeev 02/10/2015 00:00:35)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

shreding.kot wrote:

Данная брешь не закрыта. С помощью скрипта выше можно получить токен.

да бросьте Вы в самом деле. с помощью данного механизма решилась довольно важная проблема - необходимость промежуточного сохранения связки логин-пароль для выполнения серии запросов из внешней системы. действительно таким образом можно говорить о "безопасном входе" в свою систему с учеткой wialon...

43

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

deal wrote:

....

Добавьте капчу...?

44

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Я преобразовал старую функцию логина в эту (тут выдуманный токен, а вообще я его получил через форму http://hosting.wialon.com/login.html):

    /** 
     * 
     * App login
     *
     */
    function login() {
    var sess = wialon.core.Session.getInstance(); // get instance of current Session
    var user = sess.getCurrUser(); // get current User
        
    sess.initSession("https://hst-api.wialon.com"); // initialize Wialon session
    sess.loginToken(token, "2242424245954766A508", // trying login 
        function (code) { // login callback
            if (code) msg(wialon.core.Errors.getErrorText(code)); // login failed, print error
            else msg("Logged successfully"); // login succeed
        }
    );
}

В итоге пишет Uncaught ReferenceError: token is not defined...

45

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Замените эту строку:

sess.loginToken(token, "2242424245954766A508", // trying login 

на

sess.loginToken("2242424245954766A508", // trying login 
Mobile Development
Gurtam
46

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

a_titeev wrote:

Добавьте капчу...?

Добавление капчи это крайний случай.
Конечно это защитит, скажем так, от недобросовестных разработчиков.
Но вместе с тем усложнит вход обычным пользователям.
Пока мы пойдём другим путём, т.е. сделаем ещё более хитрую защиту,
но незаметную обычным пользователям и разработчикам.

Solutions Department
Gurtam
47

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

a_titeev wrote:
shreding.kot wrote:

Данная брешь не закрыта. С помощью скрипта выше можно получить токен.

да бросьте Вы в самом деле. с помощью данного механизма решилась довольно важная проблема - необходимость промежуточного сохранения связки логин-пароль для выполнения серии запросов из внешней системы. действительно таким образом можно говорить о "безопасном входе" в свою систему с учеткой wialon...

Я не говорю, что новая система авторизации плоха и скорей всего, кому-то она помогла решить его вопросы.  Вот допустим вам помогла решить проблему. А вот мне она создала дополнительные проблемы.

Просто  новая система авторизации ничего прогрессивного не принесла.  Раньше нужно было вводить логин и пароль, теперь ещё нужно использовать токен. Раньше можно было сделать свою форму, теперь я должен использовать форму гуртам. Т.е. новая система авторизации создает дополнительные проблемы, разработчикам, которые разрабатывают клиентские приложения. И мне приходится городить костыли, для того чтобы зайти на веб форму и получить токен, который я должен использовать. И не понятно, какого черта гуртам на словах запрещает использовать доп скрипты для эмуляции обычной авторизации, если таким же образом поступает обычный браузер.

48

Все вопросы по новому способу авторизации в Wialon (oAuth)

(edited by titeev-an 03/10/2015 14:01:18)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Нашел ошибку в описании. Написано про флаги уровня доступа

-1 или 0xffff — полные права

. На самом деле "0xffff" полных прав не дает, а значение "-1" дает. По флагу "0xffff", например, не смог получить доступ к изменениям флагов учетной записи и т.п.
В списке токенов права для "0xffff" обозначены как

Слежение онлайн; Просмотр данных; Редактирование малозначительных данных; Редактирование важных данных; Редактирование критических данных; Выполнение команд

А для "-1" как

Полный доступ

Вопрос: Какая ошибка в операции будет возвращена если токен удален или просрочен? Попробовать очистить все боюсь, так как есть работающие пользователи. А в списке токенов кто есть кто - не видно.

Отсюда второй вопрос: В запросе есть флаг "0x1 — возвращать в ответе имя пользователя"? Нельзя ли в списке токенов показывать то самое имя пользователя и дату создания/срок токена? Это было бы очень удобно админу. А сейчас получается просто список с одним и тем-же именем приложения (а оно действительно одно) и уровнем доступа (а он тоже один).

ЦЕНТР ТЕХНОЛОГИЙ, ИП Титеев Артем Николаевич
www.corpnova.ru
49

Все вопросы по новому способу авторизации в Wialon (oAuth)

(edited by chdi 03/10/2015 23:10:51)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Если токен удален (Просроченные токены удаляются автоматически), то при логине с ним будет ошибка - {"error":8}

>>> Нельзя ли в списке токенов показывать то самое имя пользователя и дату создания/срок токена?
если вы про запрос svc=token/list  тут как раз и возращается дата создания
на сайте мониторинга в свойствах пользователя ,да, только имя приложения и права доступа - имя пользователя нет смысла тут выводить,
а дата создания для пользователей будет лишней на просмотр

возможно как для администратора вам будет удобно пользоваться следующим приложением http://apps.gurtam.by/tman/ работает с Wialon Hosting, логин/пароль как и для Hosting
Удобно управлять токенами, в том числе и дочерними (создавать, редактировать, удалять) для тестирования, каких-то проверок
Будем рады фидбеку на support@gurtam.by

Diana Cheley
Wialon Hosting Expert
Gurtam
50

Все вопросы по новому способу авторизации в Wialon (oAuth)

Re: Все вопросы по новому способу авторизации в Wialon (oAuth)

Понял, спасибо! Будем для тестов этим приложением и пользоваться. В рабочем режиме оно скорее всего не потребуется, конечно. Но на данном этапе куча бессрочных токенов насоздавалась.

ЦЕНТР ТЕХНОЛОГИЙ, ИП Титеев Артем Николаевич
www.corpnova.ru