2015-07-18 3 views
0

Мой вопрос не является глубоко техническим, но более системным, архитектурным.Ошибка аутентификации API

Я разрабатываю API-сервер в Go Lang. Я хотел бы иметь несколько клиентов, таких как веб-сервер, сотовые телефоны и т. Д. Я предполагаю, что все эти клиенты должны иметь секретный ключ API, чтобы проверить, что они могут использовать API. В то же время веб-интерфейс будет иметь множество пользователей с различными ограничениями. Я бы хотел, чтобы эти пользователи могли входить в систему со своей учетной записью Facebook или Google. Это, как я понимаю, требует проверки подлинности OAuth. Теперь мой вопрос: где я должен добавить OAuth. Только в интерфейсе, а затем сохраняйте пользователя в сеансе, а также между интерфейсом и бэкэнд. Я очень смущен тем, как мне настроить эту связь и аутентификацию.

Я строю веб-сервер в PHP, и я хотел бы, чтобы веб-интерфейс был действительно легким и более или менее функционировал только как пустая оболочка/представление для API Go. Я уже создавал системы в простых PHP/MySQL, но я хотел бы перейти к API на основе Go.

Как бы URI выглядел API с интерфейсом веб-сервера, скажем, на странице профиля показа? Я представляю себе что-то вроде вызова GET на «http.//backend.com:3000/[api-key]/[api-secret][oauth-token?]/profile. Затем некоторое промежуточное программное обеспечение для аутентификации веб-клиента и другой части промежуточного программного обеспечения для аутентификации пользователя. будет ли это «правильный» подход?

Я надеюсь, что вы, ребята, можете мне точку в правильном направлении.

Спасибо заранее.

ответ

2

Если вы посмотрите на Facebook или Google Developer docs, вы найдете примеры того, как интегрироваться с их системами входа в систему.

OAuth, или, по крайней мере, на последнем этапе, действительно должен быть d один на заднем конце, так как вы должны предположить, что ваш передний конец - плохой парень, поражающий вашу систему.

Для ходу OAuth, посмотрите на: https://github.com/golang/oauth2

Вы, вероятно, имеют http.HandlerFunc("/oauth/google",yourGoogleFunc) и http.HandlerFunc("/oauth/facebook",yourFBFunc) вещь типа, затем зарегистрировать этот URL на свой счет Dev с этими компаниями.

Во время тестирования проще всего использовать localhost: 8080 (или что-то еще) в качестве URL-адреса обратного вызова, чтобы он работал на любом компьютере, если вы используете локальный браузер.

+0

Спасибо за ответ. Как будет выглядеть URI API с интерфейсом веб-сервера, скажем, на странице профиля показа? Я представляю себе что-то вроде вызова GET на «http.//backend.com:3000/[api-key]/[api-secret][oauth-token?]/profile. Затем некоторое промежуточное программное обеспечение для аутентификации веб-клиента и другой части промежуточного программного обеспечения для аутентификации пользователя. Будет ли это «правильный» подход? – Zahrec

+0

Отчасти зависит от того, планируете ли вы использовать их учетные данные google/fb для чего-либо, кроме просто проверки подлинности. Например, вы хотите опубликовать на своей стене FB ваш сервер? Для моих приложений это только auth.Когда я проверяю логин, я просто создаю свой собственный сеанс для отслеживания моего пользователя. В основном у меня есть сайты, на которых у меня нет паролей, просто пользователи, связанные с профилями google/fb Я бы предпочел оставить безопасность людям, которые больше потеряли, чем я. Для сеансов Go, посмотрите: http://www.gorillatoolkit.org/pkg/sessions –

+0

Я буду использовать его только для аутентификации Хм, посмотрим, что у меня небольшая проблема с сессионным материалом, так как меня учили, что RESTful API должен быть апатридом и В то же время, может быть, это то, что меня пугает. – Zahrec

Смежные вопросы