Доброй ночи. в OM 3.0.4 google работает прописал ключи и в путь... yandex нужно изменить 'email_param_name' и 'login_param_name' с 'default_email' на 'login'. (так как в ответе от яндекса нет default_email).
facebook, vk.com решил через "костыль". :) в admin/oauth2 request_key_url=http://localhost/crutch.php request_token_attributes=code={$code}&client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uri} request_token_url=http://localhost/crutch.php?access_token={$access_token} OM обращается к моему скрипту php, скрипт на запрос 1 POST. возвращает access_token в JSON формате на запрос 2 GET. возвращает login,email,firs_name,last_name в JSON формате задача скрипта получить данные от соц. сетей и вернуть их в "нужном" формате в OpenMeeting. Думаю это важный BUG или ВОПРОС: по Русски: если я зарегистрировался через email + login + password, то попытка зайти через соц.сеть в которой указан мой email приведет к internat error! к тому же приведет если в ответе от соц. сети будет login который уже есть в системе => internat error. или например у меня один email указан в google и контакте, я смогу заходить только через то, через что был первый вход, другую кинет в internat error. => в системе не может быть более одного пользователя с login или email. то есть email и login должны быть уникальными, исключение пустые (возможно одна запить где email="" и login=""; неограниченно email="", login=random() или email=random(), login="") но если login задан, такого второго быть не может! 1. если к логин можно прикрутить префикс, то как быть с email - ВОПРОС. 2. Возможность заходить через e-mail и соц. сети одному и тому же пользователю. - как идентифицировать, что это один и тот же человек из разных систем, а не злоумышленник зарегился под чужой email в контакте и пробует зайдет с правами админа. ДОП. ВОПРОСЫ: 1. В таблице `oauth_servers` есть поле `request_method` типа int Используется ли оно, если да, то какие возможны значения? 2. Кроме login,email,firs_name,last_name - может ли система еще что-нибудь принять, например phone, photo и т.п. или нужно в базе через "костыль" ковыряться? Мои соображения: Я думаю, что тут ключевым является требования к безопасности и левел пользователя в системе. например: авторизация через соц. сети доступна только для левел гость. если нет особых требований к гостям, то пропускать в систему и идентифицировать по email переданному от сети. ведь соц. сетях обычно требуют подтверждения email. * логин от соц. сетей делать уникальным через префиксы. ! настройка в профиле пользователя для доступности входа из соц.сетей и выбор из каких. => необходима обработка ошибки доступа при наличии полученного от соц. сети email в базе и запрета на доступ. P.S. На мой взгляд сегодня решение через "костыль" оптимальное, так как соц. сети отвечают "как хотят", могут менять типы ответов и т.п. если кому-нибудь нужно, могу подробно описать как настраивал у себя OAuth2. Очень интересуют ответы на доп. вопросы и мысли по авторизации одного пользователя из разных систем. --- С уважением, Алексей Терехов. +7 926 076 15 20 Вторник, 7 апреля 2015, 23:46 +03:00 от Alexey Terekhov < deadl...@mail.ru >: > Добрый вечер. > прописал ключи для Google, yandex, facebook, vk.com > сделал клон таблицы "oauth_servers" (настройки OAuth2) > добавил в таблицу поле damp_answer > написал скрипт получение данных использую настройки OAuth2 > в damp_answer записал работу моего скрипа (html таблица запросов и ответов) > после сохранения выгрузки заменил часть ключей на 88888. > > 1. если я чего случайно не перекрутил у себя, то у меня прописан был след. > DEFAULT запрос данных из facebook: > > https://graph.facebook.com/me?access_token={$access_token}&fields=username,first_name,last_name,email > > ОН НЕВЕРНЫЙ, username следует изменить на name, иначе (если оставить > username, ответ будет NULL) > > 2. Разный формат ответа на запрос токена > google, vk.com, yandex отвечают в формате json: {"a":"X","b":y} > facebook отвечает: a=X&b=Y > в damp_answer это видно > > 3. Перегружусь под server и подправлю у себя п.1 и попробую выдрать значимую > информацию из логов > относящуюся к входам fb,vk,yandex. > > PS. Если нужно могу проверить(сделать damp) другие, например mail.ru, > одноклассники и т.п., пишите. > > > Надеюсь приложение пройдет. > 1. debugoauth2.html вывод базы > 2. oauth_servers.sql экспорт базы > > --- > С уважением, Алексей Терехов. > +7 926 076 15 20 > > Вторник, 7 апреля 2015, 17:54 +03:00 от Alexey Terekhov < deadl...@mail.ru > >: > > > >О, супер, спасибо! > > > > Прописал Google (в OM 3.0.4) - и у меня работает! > > > >теперь есть шанс понять, что с facebook и т.п. не так. > > > > > >--- > >С уважением, Алексей Терехов. > > > >Вторник, 7 апреля 2015, 18:41 +06:00 от Maxim Solodovnik < > >solomax...@gmail.com >: > >>фейсбук и контакт проверить не могу (нет учёток) > >>проверял гугел - работает нормально > >> > >>3.0.3 и 3.0.4 скорее не запустились потому что им для работы нужна java7 > >> > >>может быть кто-то пробовал настроить и поделится опытом? > >> > >>2015-04-07 15:44 GMT+06:00 Alexey Terekhov < deadl...@mail.ru >: > >> > >>> Добрый день, Сообщество! :) > >>> > >>> Возникли у меня сложности с OAuth2 (пробовал в 3.0.2 и в 3.0.4 - не решено > >>> ) > >>> сейчас речь будет о: openmeetings 3.0.4 + MariaDB на Ubuntu 14.04.2 server > >>> > >>> поставлена по инструкции для ububtu-14.04.1-desktop-amd64 > >>> ( > >>> > >>> https://cwiki.apache.org/confluence/download/attachments/27838216/Installation%20OpenMeetings%203.0.x%20on%20Ubuntu%2014.04.pdf?version=6&modificationDate=1425048449000&api=v2 > >>> ) > >>> > >>> добавил sudo apt-get install software-properies-common > >>> и все действия в /opt через sudo, а так чистая система поставленная по > >>> инструкции. > >>> > >>> 1. прописал домены в facebook и vk.com > >>> в facebook в настройках куча всего + тестовое app и т.п. отдельный вопрос > >>> что там нужно ставить и как. > >>> > >>> прописал в admin/config > >>> application.base.url=http://{MYDOMEN}:5080/openmeetings/ > >>> > >>> 2. проверил работу полученных Client_ID и Client_secret через php. > >>> > >>> !!! Особенности(отличие от facebook) vk.com: > >>> > >>> querty №1: " > >>> > >>> https://oauth.vk.com/authorize?client_id={ID}&scope=email&response_type=code&redirect_uri={URI > >>> } > >>> " > >>> если успех, вернет код и email! > >>> > >>> querty №2: " > >>> > >>> https://oauth.vk.com/access_token?client_id={ID}&client_secret={SECRET}&redirect_uri={URI}&code={CODE > >>> } > >>> " > >>> если успех, вернет access_token в формате json (facebook возвращает в виде > >>> параметров url) > >>> > >>> querty №3: " > >>> > >>> https://api.vk.com/method/users.get?uids={UIDS}&access_token={TOKEN}&fields=sex,bdate,city > >>> ...... > >>> ." > >>> если успех, вернет в формате json (facebook, так же на q№3 возвращает в > >>> формате json) > >>> > >>> => прописав в OAuth2 новую настройку 4 vk.com, после авторизации через > >>> vk.com и возврата в openmt - internal error. > >>> предположу, что из-за разного формата ответа на 2й вопрос. > >>> fb: ?a=X&b=Y > >>> vk: {"a":"X","b":y} > >>> > >>> и важно, vk.com отдает e-mail на 2м запросе, в 3м - где пользовательские > >>> данные адреса нет!!! > >>> > >>> 3. В итоге прописал ключи полученные в yandex, facebook и настройки vk.com > >>> с ключами. > >>> результат = ни один из 3х не работает. > >>> > >>> в логах у vk.com ошибка в получении данных. а вот с facebook в начале все > >>> как бы нормально, запрашивает code, по коду получает token. > >>> из брауузера выглядит так: вход через fb => соглашаюсь на передачу > >>> => возвращает на страницу ввода логина и пасс, в url содержится ?code=... > >>> > >>> концовка лога. (полная часть в входа через facebook в приложении) > >>> DEBUG 04-06 22:35:03.927 o.a.wicket.Page:871 > >>> [http-nio-0.0.0.0-5080-exec-2] - ending request for page [Page class = > >>> org.apache.openmeetings.web.pages.auth.SignInPage, id = 12, render count = > >>> 1], request > >>> org.apache.wicket.protocol.http.servlet.ServletWebRequest@4b7dfc3 > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.PageAccessSynchronizer:207 > >>> [http-nio-0.0.0.0-5080-exec-2] - 'http-nio-0.0.0.0-5080-exec-2' released > >>> lock to page with id '12' > >>> DEBUG 04-06 22:35:03.930 > >>> o.a.w.p.AsynchronousDataStore$PageSavingRunnable:354 > >>> [Wicket-PageSavingThread] - Saving asynchronously: Entry > >>> [sessionId=E0991D1744CA99FEB6BDBE919E11E65F, pageId=12]... > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.PageAccessSynchronizer:358 > >>> [http-nio-0.0.0.0-5080-exec-2] - 'http-nio-0.0.0.0-5080-exec-2' notifying > >>> blocked threads > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.DiskDataStore:186 > >>> [Wicket-PageSavingThread] - Storing data for page with id '12' in session > >>> with id 'E0991D1744CA99FEB6BDBE919E11E65F' То есть нажимаю войти через fb > >>> => в fb > >>> > >>> Возможно есть какие-нибудь решение? > >>> > >>> Хотя бы от любой системы залогиниться, я смогу на php написать прокси, > >>> который вернет в нужном формате данные для openmeetings например от vk.com > >>> > >>> Много пользователей в России пользуются vk.com и не хочется их терять. :) > >>> > >>> P.S. есть еще 3.0.2 под ubuntu 10.4, кстати 3.0.3 и 3.0.4 на 10.4 не > >>> запустились (red5.sh чего-то ругнулся..) в ней (3.0.2) авторизация так же > >>> не проходит. > >>> > >>> Спасибо! > >>> > >>> --- > >>> С уважением, Алексей Терехов. > >>> +7 926 076 15 20 > >> > >> > >> > >> > >>-- > >>WBR > >>Maxim aka solomax >