Мой вопрос не глубоко технический, а скорее системный.
Я разрабатываю бэкэнд 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. Затем какое-то промежуточное программное обеспечение для аутентификации веб-клиента и другой кусок промежуточного программного обеспечения для аутентификации пользователя. Это был бы «правильный» подход?
Я надеюсь, что вы, ребята, можете указать мне правильное направление.
Заранее спасибо.
Если вы посмотрите документы в Facebook или Google для разработчиков, вы найдете примеры того, как интегрироваться в их системы входа в систему oauth.
OAuth, или, по крайней мере, последний шаг, действительно должен быть сделан на заднем конце, так как вы должны предположить, что ваш передний конец — плохой парень, поражающий вашу систему.
Для того, чтобы пойти, посмотрите на: https://github.com/golang/oauth2
У вас скорее всего будет http.HandlerFunc("/oauth/google",yourGoogleFunc)
а также http.HandlerFunc("/oauth/facebook",yourFBFunc)
введите вещь, затем вы зарегистрируете этот URL в своей учетной записи разработчика в этих компаниях.
во время тестирования проще всего использовать localhost: 8080 (или любой другой) в качестве URL обратного вызова, чтобы он работал на любой машине, если вы используете локальный браузер.
Других решений пока нет …