За последние 24 часа нас посетили 22450 программистов и 1141 робот. Сейчас ищут 564 программиста ...

OAuth vs api_token

Тема в разделе "Laravel", создана пользователем nospiou, 29 апр 2018.

?

Авторизация

  1. OAuth

    3 голосов
    75,0%
  2. api_token

    1 голосов
    25,0%
  3. чо?

    0 голосов
    0,0%
Можно выбрать сразу несколько вариантов.
  1. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Давайте обсудим. Если выдавать доступ другим не планируешь есть ли смысл использовать oauth? И даже если планируется нужно ли свои приложения (фронт моб десктоп) держать на oauth? Какие преимущества можно с этого получить в сравнении с обычным ключом api_token (дополнительным уникальным полем в таблице user)
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    @nospiou это эдакий полуубунту
    --- Добавлено ---
    убунту попалам
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Не понимаю о чем ты. Что бы войти через oauth тебе нужно отправить черт знает сколько запросов. Первый с логином и паролем для получения пользователя. Потом запрос на получения его токенов. Если токена нет то снова запрос что бы его создать.
     
    #3 nospiou, 29 апр 2018
    Последнее редактирование: 29 апр 2018
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    и то и то - токен. твой вопрос лишен смысла.
    если тебе не нравится куча запросов - так и пиши.
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну а вдруг какие то скрытые преимущества есть) Ну как минимум в oauth мы получаем единую систему. В случаи с api_token и laravel придется под каждое устройство создавать свою миделвару и свой api_token так как стандартное решени не очень масштабируется. Кто чем пользуется?
    --- Добавлено ---
    @romach расскажи как оно на практике. Все запросами? Или создаешь при регистрации а при авторизации mysql? Метода который вернет все ключи пользователя (на сервере) я так и не нашел.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а задача-то какая?
     
  7. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Любопытство. Не люблю переделывать.:)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    блин

    задача какая? критерии какие? почему такие?
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну а какая задача в том что я на react переписываю вместо того что бы уже постить приложение. Псих я вот и интересно) У тебя на игровой стене что? Или ничего еще нет? Что на сайте для студентов?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    я пытался
    я честно пытался
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    passport же - бери и юзай, там есть довольно простая реализация. Шлешь логин / пароль, получаешь auth_token и refresh_token, первый протух, стучишься за вторым, оба протухли - считай и не было юзера. А что бы совсем стало весело, берешь axios, заранее его конфигурируешь, что бы он подставлял токен в каждый запрос и вешаешь event на проверку протухания. Всё.

    И таки перечитай ещё раз, passport так же предоставляет api для управления токенами клиента самим клиентом, при чем с разными настройками разрешений. Ну а какую логику ты вокруг этого навернешь - уже твои проблемы, ларка - это вам не yii, тут генераторов crud`а нет, а то что было выпилили из фрейморка ещё вроде в 4 ветке, во имя )
    а я тебе ещё тогда говорил, что api_token хоть и прост, но в его возможности легко упереться.
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @nospiou с помощью алгоритма OAuth можно организовать управляемую из браузера авторизацию серверного приложения. То есть благодаря серверному колбек, ты можешь подружить между собой два серверных приложения, имея учетную запись в каждом из них, но не передавая одному пароль от другого. Для этого она была придумана, смотри, какая у тебя задача.
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    У меня с логикой все плохо. Если б я мог хранить секретный ключ этого клиента (web) в коде js тогда ок. При входе мы берем ключ логин пароль и получаем токен при выходе токен удаляем. Или не такой уж он секретный? Если попытаться переместить логику на сервер там много вопросов по оптимизации возникает. Религия не позволяет делать с php запросы)
    @[vs] Если выдавать доступ другим для других организовать что то сложное где нужно много токенов тут oauth хорош. А если нужны токены только для своих 3 приложений возникают вопросы.
    --- Добавлено ---
    @[vs] Хакерский ник. Не подсвечивается.
    --- Добавлено ---
    @romach Ну и вопрос касательно веб стора. Ты где хранишь ключи? В куках или в нем? Поддержка с ie8. А сам vue\react c ie9
    --- Добавлено ---
    Защиту от перебора пароля придется самому писать? Или passport как то это проверяет? (после n попыток ждем...)
     
  14. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Как минимум если человек знает свой логин пароль и секретный ключ он сможет забить сервер миллионами токенов. В любом случаи нужно писать логику на сервере и с сервера уже делать запрос на получения ключей. Единственное что нашел в laravel это auth()->user()->createToken('MyApp')->accessToken а где delete check и т.д?
     
    #14 nospiou, 30 апр 2018
    Последнее редактирование: 30 апр 2018
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Методом ide нашел мистический метод auth()->user()->token()->delete() Уже хоть не придется делать лишние запросы на получения id и удаления token. Кстати а где хранятся сами токены? в базе их нет в сессиях тоже это что за полтергейст такой?
     
  16. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    auth()->user()->tokens тоже в копилку
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    просто сделай хоть как-то уже
     
  18. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Вот вечно вы пихаписты так:) Сделал уже давно. Но в непонятом нужно разобраться.
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    у тебя нет четкой задачи и чётких критериев
    но ты оцениваешь решение на соответствию критерию "мало запросов", что само по себе весьма нечётко.
    ты говоришь что то решение, что ты сейчас используешь - плохое, т.к. делает много запросов.
    но нет критериев того, сколько запросов будет нормально и почему вообще тебя это напрягает

    понимаешь?
     
    artoodetoo нравится это.
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Не сложное, а чтобы авторизовать приложение А на работу с приложением Б от имени чувака, который сидит за компом и залогинен в приложении Б.
    --- Добавлено ---
    Все 3 твоих приложения смотрят в одну БД?
     
  21. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Да. Web Mobile desktop и апи для них. классика.