2016-07-19 26 views
2

Ich verwende den Aut0-Dienst für eine iOS-App mit einem Server, der auf node.js und express.js basiert. Ich habe die Docs und Seed-Projekte von Auth0 so gut ich kann verfolgt, aber der Server beschwert sich, dass die Token, die ich von meiner iOS-Anwendung sende, ungültig sind. Hier einige meines Code:Warum wird mein Auth0-Token immer als ungültig zurückgegeben, wenn es von iOS an node.js-Server gesendet wird?

Vom Server - die Authentifizierung und Routen Erklärungen angegeben, wie in den Auth0 documentation

var authenticate = jwt({ 
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'), 
    audience: process.env.AUTH0_CLIENT_ID 
}); 


app.use('/api', authenticate); 
app.use('/api/userquery', queries); 

Und von iOS, den Header für eine Anforderung einstellen (mit AFNetworking):

request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") 

Ich weiß für die Tatsache, dass die Anfrage ordnungsgemäß gesendet wird, da es für Pfade funktioniert, die keine Authentifizierung erfordern. Schließlich, hier ist der Fehler, den ich auf der Serverseite erhalten:

GET /api/userquery/currentUser 401 7.185 ms - 436 
UnauthorizedError: invalid token 
    at /node_modules/express-jwt/lib/index.js:100:22 
    at /node_modules/jsonwebtoken/index.js:155:18 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 
+0

Haben Sie die Antwort vom Server überprüft? Es könnte ein Objekt sein, das URL und Körper mit Token enthält. –

+0

Auf der iOS-Seite, bekomme ich nur diesen Fehler als Antwort: Domain = com.alamofire.error.serialization.response Code = -1011 "Anfrage fehlgeschlagen: nicht autorisierte (401)" – cweber105

+0

Welche Token senden Sie? Stellen Sie sicher, dass es das 'id_token' ist und nicht das' access_token' (letzteres ist kein JWT). –

Antwort

3

Das Problem war nur, dass ich das Token auszupacken gescheitert, nachdem sie aus Schlüsselanhängern ziehen. Anstatt "Bearer [token]" im Authorization-Header zu senden, habe ich "Bearer [Optional (Token)]" gesendet.