2013-05-27 78 views
1

我有一个GAE应用程序,具有URL我限制管理员:计划访问管理员 - 的oauth2

- url: /admin 
    script: _go_app 
    login: admin 

我想把或POST到这个网址与其他围棋程序。我需要为客户端编写哪些代码以对GAE和dev_server.py进行身份验证?有没有一种更合理的方式来模拟网络浏览器并登录?我不需要认证或授权其他用户,只需要该应用的管理员帐户。

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

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

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

回答

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/

最后,我的愚见,”如果有人MITMs我的连接(通过HTTP),可他们通过重复使用盗用我的管理会议曲奇饼?”是你永远不应该提供任何认证的连接(也不是认证的连接)通过普通的http。特别是一个管理部分。

编辑:详细阐述MITM问题,确保您对任何登录请求和随后的同一会话请求使用HTTPS,并确保在您的Cookie上设置Secure and HttpOnly标志。

0

如果您想使用Google帐户,请使用OAuth2。

看到这里的细节:https://developers.google.com/appengine/docs/go/users/overviewthis section与管理的意见专门处理)

+0

我已经设置了服务器。我如何获得客户端程序使用此认证? – Dijkstra

+1

@Dijkstra如果您希望客户端使用OAuth2(或OpenID),则需要自动执行客户端登录步骤。或者,您可以为GAE应用程序设置一个REST API,并为您的Go“客户端”提供一个身份验证令牌(可以在客户端遭到入侵时使用),并向您的GAE应用程序发送请求。只要确定通信是通过HTTPS,如果你走这条路线。 – elithrar