2017-08-16 93 views
0

我在Google雲端點框架中爲App Engine(Java)提供端點。端點被限制爲需要這樣的API密鑰:Google雲終端 - apiKeyRequired在終端有斜線時不起作用

@ApiMethod(name = "echo", path = "echo", apiKeyRequired = AnnotationBoolean.TRUE, httpMethod = ApiMethod.HttpMethod.GET) 

哪一個工作。但是,如果在進行調用時添加了尾部斜線,端點將返回沒有API密鑰要求的數據。

我試圖在API定義全侷限制API訪問,就像這樣:

@Api(
name = "myapi", 
version = "v1", 
apiKeyRequired = AnnotationBoolean.TRUE, 

然而,這似乎並沒有工作。我重新生成了openapi.json並重新部署了openapi.js和app引擎應用程序,並且如果端點具有尾部斜線,但終點仍然可訪問,但並非如此。

有誰知道我可以如何防止這種情況?任何見解都非常感謝。

回答

0

我無法在谷歌端點解決這個問題,所以我利用tuckey的urlrewrite刪除尾隨在過濾器

的web.xml

  <filter> 
     <filter-name>UrlRewriteFilter</filter-name> 
     <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
      <init-param> 
       <param-name>confPath</param-name> 
       <param-value>/WEB-INF/urlrewrite.xml</param-value> 
      </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>UrlRewriteFilter</filter-name> 
     <url-pattern>/_ah/api/*</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

urlrewrite.xml 

    <?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN" "http://www.tuckey.org/res/dtds/urlrewrite3.1.dtd"> 
<urlrewrite> 
    <rule match-type="regex"> 
     <note>Remove trailing slash</note> 
     <from>^(.*)/$</from> 
     <to type="redirect">$1</to> 
    </rule> 
</urlrewrite> 

更多信息斜線:

http://www.tuckey.org/urlrewrite/manual/4.0/index.html

注意:截至目前,它沒有正確重定向。我正在繼續工作,並會發布更新,但現在至少我得到了一個404版本的尾部斜線版本,而不是沒有API密鑰的響應數據,它滿足了我目前的安全需求