如何从我自己的AppEngine Web服务调用安全页面?

时间:2016-11-08 13:26:51

标签: java google-app-engine

要发送HTML电子邮件,我想拨打我自己应用的不同网址, 使用JSP来呈现电子邮件内容。

要执行对我自己的应用程序的HTTP调用,我首先尝试使用" http://localhost/emailreport"作为URL,但由于DNS错误而失败。 接下来我尝试了外部URL:

String appid = ApiProxy.getCurrentEnvironment().getAttributes()
   .get("com.google.appengine.runtime.default_version_hostname").toString();
appid = appid.substring(0, appid.indexOf('.'));
URL url = new URL("http://" + appid + ".appspot.com/emailreport");

这样可行,但仅适用于web.xml中没有安全约束的页面。然而,我的电子邮件报告需要得到保护。

任何想法如何检索该页面?我是否需要使用服务帐户密钥?难道不是一个简单的伎俩吗?

增加:
我想通过将这些页面添加到web.xml来保护页面:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>SecureName</web-resource-name>
        <url-pattern>/mytask</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

1 个答案:

答案 0 :(得分:0)

我使用以下解决方法解决了这个问题:

调用者创建一个秘密令牌并将其存储在MemCache中,并为请求添加一个标头。

端点读取该标头并将其与MemCache中的值进行比较。如果匹配,则处理请求,否则返回401。