...

Получаем token пользователя зная log/pass

Тема в разделе "Примеры сценариев", создана пользователем sabir, 19 апр 2023.

  1. sabir

    sabir Участник

    Для выполнения каких-либо действий ( подразумеваются действий которые, существуют в рамках elma 365, но еще не получили соответствующие методы для работы с ними стандартным способом ) от имени пользователя может понадобиться его токен, для того что бы его получить нам необходимо знать логин и пароль.

    Код:
    
    
    // Получаем первичный токен для прохождения аутентификации
       
    const res_log await fetch('http://elma.expert.ru/guard/login', {
            
    method'POST',
            
    headers: {
                
    "POST""/guard/login HTTP/1.1",
                
    "Accept""application/json, text/plain, */*",
                
    "Accept-Encoding""gzip, deflate",
                
    "Accept-Language""ru-RU,ru;q=0.9",
                
    "Connection""keep-alive",
                
    "Content-Length""54",
                
    "Content-Type""application/json",
                
    "Host""elma.expert.ru",
                
    "Origin""http://elma.expert.ru",
                
    "Referer""http://elma.expert.ru/_login",
                
    "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
            },
            
    bodyJSON.stringify({
                
    email:"mail@mailto.plus",
                
    password:"pass1234567890"
            
    })
        });

        const 
    token await res_log.json();


    // Получаем конечный токен 
        
    const res_auth await fetch("http://elma.expert.ru/api/auth", {
            
    method'GET',
            
    headers: {
                
    "Cookie""vtoken="+token.token
            
    }
        });

        const 
    token_auth res_auth.headers;
        const 
    token_after_auth token_auth.get("token");

        
    Context.data.token token_after_auth;

        
  2. mrmaxonline

    mrmaxonline Участник

    Хороший пример. Спасибо. Работает для внешних систем (ранее не могли достучаться до корневого API).
  3. nosova.olga

    nosova.olga Участник

    При попытке вернуть конечный токен возвращает Unauthorized. Не встречали подобную ошибку?
  4. sabir

    sabir Участник

    К сожалению не встречал, если удалось решить поделитесь.
  5. nosova.olga

    nosova.olga Участник

    не удалось. а поддержка говорит, что такие запросы API и не должны работать и ошибка тому доказательство
  6. iliya.fertikov

    iliya.fertikov Участник

    К сожалению не заработало, ситуация аналогичная той, что у Ольги. Хотя взаимодействие по api через токен для внешнего пользователя, например, через портал было бы очень полезным сценарием в работе, а api, генерирующийся для работы с микросервисами тут не подходит, тк всё в системе будет тогда создавать один пользователь. Нужно тогда хотя бы сделать проп __created_By не ридонли
  7. sabir

    sabir Участник

    Попробуйте воспроизвести в Postman
    [​IMG] [​IMG]

    Как мы видим на втором скриншоте все же токен для доступа к корневому api мы получаем, если останутся вопросы можете стукнуться в телегу, постараюсь помочь.
  8. sabir

    sabir Участник

    На данный момент стабильно работает на on-premises
    [​IMG]

    и на SaaS

    [​IMG]
  9. nosova.olga

    nosova.olga Участник

    В postman выходит с ошибкой
    [​IMG]
  10. sabir

    sabir Участник

    elma находить не на локальной машине и не в внутренних сетях?


    Попробуйте воспроизвести на тестовом стенде с данными ниже:

    vosawep769@rc3s.com - login
    123456 - pass
    https://gw5thrxrgn6va.elma365.ru/ - elma 365

    [​IMG] [​IMG]
    Последнее редактирование: 21 июл 2023