Доброй ночи.

в 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
> 

Ответить