【发布时间】:2014-10-10 19:50:03
【问题描述】:
首先我想描述一下我们的系统是什么样子的。我们有两台服务器。
第一个在 Google App Engine 上,有一些逻辑可以为 Android 应用程序提供对数据库的访问,还有一些为外部通信编写的 servlet(稍后会详细介绍)。
第二个是在 Google Cloud Engine 上。应用程序是用 Meteor 编写的(为了简化,它只是 Node.js)。我们希望在这些服务器之间进行通信(GCE -> GAE)。我们在地址下的这个 servlet 端点上有休息 API,例如https://appname.appspot.com/admin/upload。当我在没有身份验证的情况下发出请求时,一切正常:
HTTP.get(getURL, {}, getCallback);
但是,我不知道如何使用 oAuth2 身份验证。当我从浏览器转到地址 https://appname.appspot.com/admin/upload 时,它会将我重定向到 Google 身份验证并且一切正常(我在 Google 控制台中添加了我的帐户)。但是如何使用 oAuth2 身份验证从 Node.js 服务器发送 http 请求?
为了给你更多细节,这里是 servlet 配置:
<security-constraint>
<display-name>SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>WRCollection</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
和
<servlet-mapping>
<servlet-name>UploadRequestServlet</servlet-name>
<url-pattern>/admin/upload</url-pattern>
</servlet-mapping>
我知道我必须设置服务器到服务器的通信,但是如何使用 Node.js 来实现呢?有人可以帮忙吗?我不知道从哪里开始...
【问题讨论】:
标签: javascript node.js google-app-engine servlets oauth-2.0