Websocket authorzation handler - return something that isn't `500`?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- aws, typescript
- Ambito
- api, authentication, backend
Direzione di ricerca
Inizia con la configurazione WebSocket di $connect e i valori restituiti da authHandler, quindi confrontali con il contratto dell’authorizer di API Gateway e con la risposta 500 osservata. Il lavoro è completato quando sono stabiliti lo stato di errore supportato e il tipo dell’handler TypeScript per questo esempio, con un controllo riproducibile per le richieste prive del secret.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Question / help needed
I'm trying to get authorization working before connecting to websockets, which works, but I'm struggling to return an error message that isn't 500.
I've managed to make an auth handler, like so:
connectHandler: {
handler: 'handler.connectHandler',
events: [
{
"websocket": {
route: "$connect",
authorizer: {
name: "authHandler",
identitySource: [
// No identity source, leave it up to the handler
],
},
},
},
],
environment: {
// ..
},
},
Any my authHandler:
export const authHandler = async (event, _context) => {
console.log('🔑 Auth request received', event.requestContext)
const token = event.headers.Authorization ?? event.queryStringParameters.Authorization;
console.log('Token:', token)
if (token !== 'secret') {
return {
statusCode: 401,
}
}
return {
"principalId": "user",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": event.methodArn
}
]
}
};
}
Questions:
-
what should I return in case of an error? Any request to my websocket-server that doesn't have the
secretheader/querystring returns500right now, and I'd prefer it to return a4xxstatus code. -
what is the correct type for the authorization handler? I'm using
APIGatewayProxyHandleron the other fn handlers which gives me nice inline errors.How my other handlers look like, which gives me pleasant TypeScript-errors when I do something wrong
```tsexport const connectHandler: APIGatewayProxyHandler = async (event, _context) => {
const connectionId = event.requestContext.connectionId!console.log('➕ Adding connection ', connectionId)
await client.query('INSERT INTO "public"."Connection"("id") VALUES($1) RETURNING *', [connectionId])
return {
statusCode: 200,
body: '',
};
}</details>
- Lingua principale
- JavaScript
- Stelle
- 11.5k
- Fork
- 4.4k
- Merge medio
- 2h 55m
- PR unite (30g)
- 3
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di serverless/examples
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
serverless/examples#404 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
serverless/examples#809 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 30/100
serverless/examples#793 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
serverless/examples#784 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
serverless/examples#782 ·
Tutte le issue di serverless/examples
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
mksglu/context-mode#1200 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
neondatabase/website#5944 ·
-
module: core
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
jaegertracing/jaeger-ui#4506 ·