2017-08-16 1 views
0

Ich habe einen Endpunkt in Google Cloud Endpoints Frameworks für App Engine (Java). Der Endpunkt ist darauf beschränkt, einen API-Schlüssel wie diesen zu benötigen:Google Cloud Endpoints - apiKeyRequired funktioniert nicht, wenn der Endpunkt einen Schrägstrich hat

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

Was funktioniert. Wenn ich jedoch einen abschließenden Schrägstrich hinzufüge, wenn der Aufruf ausgeführt wird, gibt der Endpunkt Daten ohne eine API-Schlüsselanforderung zurück.

Ich habe versucht, api Zugang global in der api Definition zu beschränken, wie folgt aus:

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

Dies ist jedoch nicht zu funktionieren scheint. Ich habe die openapi.json neu generiert und sowohl die openapi.js als auch die App Engine-App neu implementiert, und der Endpunkt ist weiterhin zugänglich, wenn er einen abschließenden Schrägstrich, aber nicht ohne aufweist.

Weiß jemand, wie ich das verhindern kann? Jede Einsicht wird sehr geschätzt.

Antwort

0

Ich war nicht in der Lage dies innerhalb von Google Endpoints zu lösen, so dass ich Tuckey des UrlRewrite verwenden die hinteren Schrägstriche in einem Filter

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> 

weiteren Informationen zu entfernen:

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

Hinweis: bis jetzt wird es nicht richtig umleiten. Ich arbeite weiter daran und werde Updates posten, aber jetzt bekomme ich zumindest einen 404 für die Version mit dem nachgestellten Schrägstrich, anstatt die Antwortdaten ohne API-Schlüssel, die meine Sicherheitsanforderungen im Moment erfüllt

Verwandte Themen