2013-03-13 19 views
8

È possibile disattivare completamente l'API Explorer o limitare l'accesso ad esso?Esegui private explorer api

Ho notato alcuni registri nella mia app che provengono da richieste non riuscite eseguite da un browser. La mia API viene utilizzata solo da un'app per Android, quindi l'unico posto da cui possono provenire è l'api explorer. Anche l'accesso api è limitato a 1 web e 1 id client Android.

risposta

4

Purtroppo no. L'API explorer funziona utilizzando il servizio Discovery associato all'API, che non fa parte del back-end, quindi non è possibile specificare l'autenticazione o la visibilità per tali URI.

Il list metodo dal servizio Discovery viene utilizzato per generare l'elenco sul APIs Explorer prodotto utilizzando un app come base di:

discovery.apis.list:

your-app-id.appspot.com/_ah/api/discovery/v1/apis

Quando qualcuno fa clic su una delle API dall'elenco, il documento di rilevamento completo viene recuperato per quello apiName e apiVersion utilizzando il metodo getRest dal servizio Discovery:

discovery.apis.getRest:

your-app-id.appspot.com/_ah/api/discovery/v1/apis/{apiName}/{apiVersion}/rest

+0

Avete qualche suggerimento da un lato amministratore di un'applicazione? Sto vedendo qualcosa come/_ah/spi/{nome classe servizio}. {Metodo} .. Sarebbe giusto aggiungere più gestori corrispondenti a /_ah/spi/.*? – 12345

+1

Si consiglia di implementare la parte di amministrazione nei metodi del gestore. 'endpoints.api_server' ha lo scopo di produrre un singolo gestore per tutte le tue API. – bossylobster

+1

Ma come impedire a qualcuno di cancellare tutto il mio database (Datastore)? – InsaurraldeAP

0

endpoint rende autenticazione semplice e si può ottenere l'utente corrente. Dovresti usare auth per assicurarti che le persone non interferiscano con i tuoi apis privati ​​- altrimenti la gente potrebbe tracciare che tipo di post o ricevere richieste che stai inviando comunque - auth è sempre una buona idea piuttosto che cercare di mantenere i tuoi apis segreti.

Se stai creando un prodotto segreto e non vuoi che il tuo concorrente lo scopra, potresti usare un metodo di offuscamento sul backend e sul tuo client che rende l'apis illeggibile.

Anche un utente che ha problemi con l'apis non dovrebbe rompere il database - o se lo fa - dovrebbe solo infrangerlo per l'utente che era pazzo. Avere la logica nel client per come vengono utilizzati gli apis in modo che il back-end non si interrompa è una cattiva idea - l'apis backend dovrebbe prendersi cura di se stessi e non preoccuparsi di come o perché vengono utilizzati e per quale scopo.

+0

Ho visto gente dire questo, ma puoi indicare un esempio in cui gli endpoint su GAE richiedono l'autenticazione senza un account Google (ma solo l'ID client specificato nella console degli sviluppatori)? Ad esempio, nel mio caso ho un'API che uso da JavaScript, ma non voglio che altri utilizzino le mie API ... ad esempio, una delle mie API restituisce le risposte da un sondaggio dato un token. Non voglio che una persona arbitraria utilizzi l'API per scaricare tutte le risposte ai sondaggi, ma un utente anonimo sul sito dovrebbe essere in grado di visualizzare le risposte al sondaggio in base al loro token. – SimplicityGuy

+0

punto interessante - Potresti rendere i token non raccomandabili? Sarebbe bello poter limitare l'accesso di una API agli sviluppatori associati al progetto cloud. (e anche per concedere l'accesso a determinati domini). Forse sarebbero troppe le funzionalità per gli endpoint: più facili da avvolgere gli endpoint sul back-end IMO. –

+0

Sì, i token non sono guidabili (salati, basati sul tempo e unici). Ho passato l'ultima ora a provare a utilizzare solo l'id del client e mentre posso impedire l'accesso all'API con esso, non riesco a evitare la pagina di accesso di Google ... Ma quello che voglio è effettuare il login con essenzialmente cosa è l'id del client che ha già le restrizioni su dove è possibile chiamare l'API. – SimplicityGuy