GAE上的程序访问管理员 - oauth2

时间:2013-05-27 12:11:50

标签: google-app-engine go

我有一个GAE应用,我的网址限制为管理员:

- url: /admin
  script: _go_app
  login: admin

我想用另一个Go程序PUT或POST到这个url。我需要为客户端编写哪些代码才能对GAE和dev_server.py进行身份验证?是否有一种更明智的方式来嘲笑网络浏览器并登录?我不需要对其他用户进行身份验证或授权,只需要该应用的管理员帐户。

这是OAuth吗? OAuth2用户? OpenID的?联合?还有别的吗?

我意识到这是一个尴尬的问题,因为我甚至不确定提出问题的正确方法。但是,在使用我的(管理员)Gmail帐户登录后,我可以使用Web浏览器发布(在此示例中)/admin。在这种情况下,请求(由Chrome发送)包含Cookie:__cfduidACSID(以及我认为的Google Analytics ID)。据推测其中一个负责我的身份验证。我怎么得到其中一个?

作为一个附带问题,如果有人MITM我的连接(通过http),他们可以通过重用那个cookie来劫持我的管理会话吗?

2 个答案:

答案 0 :(得分:2)

GAE likes OAuth2

看看goauth2。它似乎是Go的规范OAuth2库。它们在https://code.google.com/p/goauth2/source/browse/oauth/example/oauthreq.go提供了一个相当全面的例子。

关于你的问题“据推测其中一个人对我的身份验证负责。我如何获得其中一个?”,they state

  

要获取客户端ID和密钥,请参阅下面的“OAuth 2凭据”部分   此页面上的“API访问权限”标签:https://code.google.com/apis/console/

最后,我对“如果有人MITM我的连接(通过http),我可以通过重用那个cookie来劫持我的管理会话吗?”是你不应该通过普通的http提供任何经过身份验证的连接(也不是提供身份验证的连接)。特别是管理部门。

编辑:要详细说明MITM问题,请确保对同一会话的任何登录请求和后续请求使用HTTPS,并确保在Cookie上设置Secure and HttpOnly标记。

答案 1 :(得分:0)

OAuth2如果您想使用Google帐户。

有关详细信息,请参阅此处:https://developers.google.com/appengine/docs/go/users/overviewthis section专门处理管理员观看次数)