Websocket authorzation handler - return something that isn't `500`?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- aws, typescript
- Área
- api, authentication, backend
Línea de trabajo
Comienza con la configuración de WebSocket de $connect y los valores de retorno de authHandler, y compáralos después con el contrato del authorizer de API Gateway y la respuesta 500 observada. Se considera terminado cuando estén establecidos el estado de error admitido y el tipo de handler de TypeScript para este ejemplo, junto con una comprobación reproducible para solicitudes que no incluyen el secret.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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>
- Lenguaje dominante
- JavaScript
- Estrellas
- 11.5k
- Forks
- 4.4k
- Merge medio
- 2 h 55 min
- PR fusionados (30 d)
- 3
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de serverless/examples
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
serverless/examples#404 ·
-
ENOTDIR error on starter project Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
serverless/examples#809 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
serverless/examples#793 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
serverless/examples#784 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
serverless/examples#782 ·
Todos los issues de serverless/examples
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mksglu/context-mode#1200 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
neondatabase/website#5944 ·
-
module: core
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
jaegertracing/jaeger-ui#4506 ·