Websocket authorzation handler - return something that isn't `500`?
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- aws, typescript
- Lĩnh vực
- api, authentication, backend
Hướng nghiên cứu
Bắt đầu với cấu hình WebSocket của $connect và các giá trị trả về của authHandler, sau đó so sánh chúng với contract của authorizer trong API Gateway và phản hồi 500 quan sát được. Được xem là hoàn tất khi đã xác định status lỗi được hỗ trợ và kiểu handler TypeScript cho ví dụ này, cùng với một kiểm tra có thể tái hiện cho các request không có secret.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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>
- Ngôn ngữ chính
- JavaScript
- Star
- 11.5k
- Fork
- 4.4k
- Merge trung bình
- 2 giờ 55 phút
- Pull request đã merge (30 ngày)
- 3
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của serverless/examples
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
serverless/examples#404 ·
-
ENOTDIR error on starter project Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
serverless/examples#809 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 30/100
serverless/examples#793 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
serverless/examples#784 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
serverless/examples#782 ·
Tất cả issue của serverless/examples
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
mksglu/context-mode#1200 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
neondatabase/website#5944 ·
-
module: core
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
jaegertracing/jaeger-ui#4506 ·