2010-07-12 7 views
42

Ho chiesto in precedenza a question di utilizzare remote_api del motore di app con openID e la risposta ha funzionato bene, in modo sicuro e insicuro. Ad un certo punto, subito dopo, però, qualcosa in App Engine è cambiato, e la soluzione non funzionava più sicuro - vale a dire il seguenteSecure remote_api nel motore di app con OpenID

remote_api_stub.ConfigureRemoteDatastore(app_id=app_id, path='/remote_api', auth_func=auth_func, servername=host, secure=True) 

smesso di funzionare (sempre tornando 302), e avevo bisogno di togliere l'argomento sicuro di ottenere funziona.

Il release of the 1.3.5 SDK ha promesso 'I comandi API remoti possono essere inviati su HTTPS o HTTP', il che mi ha confuso, poiché avevo l'impressione che fornire l'argomento 'secure = True' mi avesse già dato questo, basato su this discussion.

Il mio sospetto è che sia stato il rilascio di questa funzionalità a causare l'interruzione dell'argomento "sicuro". Quindi, la prima parte della mia domanda - stavo effettivamente eseguendo i comandi remote_api in modo sicuro usando l'argomento 'secure = True', prima del rilascio di 1.3.5?

Una volta che il cookie ha smesso di funzionare in modo sicuro, ho provato la soluzione di Nick Johnson elencata nella stessa domanda, ma anche con questo, non potrei fornire "secure = True", ottenendo la stessa risposta 302.

Cosa devo fare per eseguire remote_api in modo sicuro con openID? 1.3.5 include nuove funzionalità attorno a questo, e come posso usarle? Cheers,

Colin

+0

Stai usando il mio hack o quello meno hacky di Nick? [http://blog.notdot.net/2010/06/Using-remote-api-with-OpenID-authentication] –

+0

Ho provato entrambi - Ho lo stesso comportamento - l'impostazione 'secure = True' ha come risultato sempre un 302 - rimozione 'secure = True' tutto funziona correttamente. Ho 'sicuro: facoltativo' in app.yaml sul punto di accesso remote_api. Inizialmente utilizzavo il tuo hack con secure = True, quindi un giorno (attorno all'annuncio di pre-release 1.3.5) 302 è stato restituito. A questo punto ho provato il meno hacking hack di Nick, ma ha funzionato anche senza 'secure = True'. Sono abbastanza sicuro che non fosse un problema con il cookie, perché lo stesso cookie funzionava bene se 'secure = True' non era presente. – hawkett

+0

openID sicuro non funziona ancora su google app engine. http://code.google.com/p/googleappengine/issues/detail?id=3586 – iamgopal

risposta

1

Saluti questo

http://code.google.com/intl/en-US/appengine/articles/openid.html

ATTENZIONE: al momento in cui scriviamo, OpenID non è supportata se la vostra applicazione viene eseguita in modalità protetta tramite HTTPS.

saluti this in ultima revisione in 1.3.7 rilascio

def ConfigureRemoteDatastore(app_id, 
          path, 
          auth_func, 
          servername=None, 
          rpc_server_factory=appengine_rpc.HttpRpcServer, 
          rtok=None, 
          secure=False): 
    """Does necessary setup to allow easy remote access to an AppEngine datastore. 

    Either servername must be provided or app_id must not be None. If app_id 
    is None and a servername is provided, this function will send a request 
    to the server to retrieve the app_id. 

    Args: 
    app_id: The app_id of your app, as declared in app.yaml. 
    path: The path to the remote_api handler for your app 
     (for example, '/remote_api'). 
    auth_func: A function that takes no arguments and returns a 
     (username, password) tuple. This will be called if your application 
     requires authentication to access the remote_api handler (it should!) 
     and you do not already have a valid auth cookie. 
    servername: The hostname your app is deployed on. Defaults to 
     <app_id>.appspot.com. 
    rpc_server_factory: A factory to construct the rpc server for the datastore. 
    rtok: The validation token to sent with app_id lookups. If None, a random 
     token is used. 
    secure: Use SSL when communicating with the server. 

Quindi, hai provato con nuovo SDK?

+0

@eugene questa è la stessa informazione contenuta nel link fornito da @iamgopal nei commenti del 21 agosto. Quindi google ha deprecato questa capacità con 1.3.5? – hawkett

+0

penso di sì, forse dovremmo aspettare la roadmap 1.3.6 per controllarlo. – Eugene

+0

@eugene 1.3.7 è fuori.Non credo che questa risposta aggiunga qualcosa che non era già presente nella domanda/nei commenti. – hawkett

Problemi correlati