我之前曾问过一个question关于使用app引擎的remote_api和openID,答案运行得很好,既安全又不安全。然而,在不久之后的某个时刻,app引擎中的某些内容发生了变化,解决方案不再安全地运行 - 即以下
remote_api_stub.ConfigureRemoteDatastore(app_id=app_id, path='/remote_api', auth_func=auth_func, servername=host, secure=True)
停止工作(总是返回302),我需要删除安全参数才能使其工作。
release of the 1.3.5 SDK承诺的“远程API命令可以通过HTTPS或HTTP发送”,这让我感到困惑,因为我认为提供'secure = True'参数已经给了我这个,基于在this discussion。
我怀疑是这个功能的发布导致'安全'论点停止工作。所以我的问题的第一部分 - 我是否在发布1.3.5之前使用'secure = True'参数安全地运行remote_api命令?
一旦cookie黑客停止安全工作,我尝试了在同一个问题中列出的Nick Johnson的解决方案,但同样,我也无法提供'secure = True',得到相同的302响应。
使用openID安全地运行remote_api需要做什么? 1.3.5是否包含围绕此功能的新功能,以及如何使用它们?欢呼声,
科林
答案 0 :(得分:1)
关心这个
http://code.google.com/intl/en-US/appengine/articles/openid.html
警告:在撰写本文时,如果您的应用使用HTTPS以安全模式运行,则不支持OpenID。
在1.3.7版本的最新修订版中关注this
def ConfigureRemoteDatastore(app_id,
path,
auth_func,
servername=None,
rpc_server_factory=appengine_rpc.HttpRpcServer,
rtok=None,
secure=False):
"""Does necessary setup to allow easy remote access to an AppEngine datastore.
Either servername must be provided or app_id must not be None. If app_id
is None and a servername is provided, this function will send a request
to the server to retrieve the app_id.
Args:
app_id: The app_id of your app, as declared in app.yaml.
path: The path to the remote_api handler for your app
(for example, '/remote_api').
auth_func: A function that takes no arguments and returns a
(username, password) tuple. This will be called if your application
requires authentication to access the remote_api handler (it should!)
and you do not already have a valid auth cookie.
servername: The hostname your app is deployed on. Defaults to
<app_id>.appspot.com.
rpc_server_factory: A factory to construct the rpc server for the datastore.
rtok: The validation token to sent with app_id lookups. If None, a random
token is used.
secure: Use SSL when communicating with the server.
那么,你是否尝试过新的sdk?