2013-05-27 5 views
1

У меня есть приложение GAE, с URL ограничить админу:Программа администратора на GAE - oauth2

- url: /admin 
    script: _go_app 
    login: admin 

Я хочу PUT или POST на этот адрес с другой программой Go. Какой код мне нужно написать для проверки подлинности клиента для GAE и dev_server.py? Есть ли более разумный способ, который просто насмехается над веб-браузером и входит в систему? Мне не нужно проверять подлинность или авторизацию других пользователей, только учетную запись администратора для этого приложения.

Это OAuth? OAuth2? OpenID? Федеративные? Что-то другое?

Я понимаю, что это немного неудобный вопрос, так как я даже не уверен, как правильно его спросить. Однако я могу отправить сообщение (в этом примере) /admin с помощью веб-браузера после входа в систему с моей (администраторской) учетной записью gmail. В этом случае запрос (отправленный Chrome) содержит файлы cookie: __cfduid, ACSID (и, как мне кажется, идентификаторы Google Analytics). Предположительно, один из них отвечает за мою аутентификацию. Как я могу получить один из них?

И как вопрос стороны, если кто-то MITMs мое соединение (через http), может ли он захватить мой сеанс администратора, повторно используя этот файл cookie?

ответ

2

GAE likes OAuth2

Посмотрите goauth2. Кажется, это каноническая библиотека OAuth2 для Go. Они дают довольно полный пример в https://code.google.com/p/goauth2/source/browse/oauth/example/oauthreq.go.

Что касается вашего вопроса «Предположительно, один из тех, кто несет ответственность за моей аутентификации Как получить один из них?», they state:

Чтобы получить идентификатор клиента и секрет, увидеть «OAuth 2 Полномочия «раздел под „“Закладка на этой странице: https://code.google.com/apis/console/

И, наконец, мое скромное мнение о» Доступ к API, если кто-то MITMs мое подключение (через HTTP), они могут захватить мой админ сессии за счет многократного использования, что печенье?» заключается в том, что вы никогда не должны предоставлять какое-либо аутентифицированное соединение (или соединение, выполняющее аутентификацию) поверх простого http. Особенно раздел администратора.

EDIT: Чтобы уточнить вопрос MITM, убедитесь, что вы используете HTTPS для любых запросов на вход и последующих запросов для того же сеанса и не забудьте установить флаги Secure and HttpOnly на свои файлы cookie.

0

OAuth2, если вы хотите использовать учетные записи Google.

Смотрите здесь для подробностей: https://developers.google.com/appengine/docs/go/users/overview (this section конкретно касается взглядов администратора)

+0

Я настроил сервер. Как получить клиентскую программу для аутентификации с помощью этого? – Dijkstra

+1

@ Dijkstra Если вы хотите, чтобы клиент использовал OAuth2 (или OpenID), вам необходимо автоматизировать шаги входа в систему клиента. В качестве альтернативы вы можете настроить API REST для своего приложения GAE и предоставить своему «клиенту» «токен аутентификации», который он может использовать (и который можно отменить, если клиент взломан), в своих запросах к вашему приложению GAE. Просто убедитесь, что comms превышают HTTPS, если вы идете по этому маршруту. – elithrar

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