node.js - AWS Lambda grundläggande autentisering med Application Load Balancer
För ett par dagar sedan frågade jag om AWS Lambda grundläggande autentisering utan anpassad auktorisatör. Jag fick svaret som var tillräckligt för mig, jag implementerade den anpassade auktorisatören som fungerar korrekt.
Jag har ett mycket liknande problem just nu eftersom vi beslutade att byta från API Gateway till Application Load Balancer, vilket kommer att trigga lambda-funktionen på en lämplig väg.
Jag skulle vilja förbereda den grundläggande autentiseringen för denna endpoint också (exakt samma som tidigare).
Så, samma problem:
AWS Lambda-funktion som är en proxy för en ytterligare tjänst. Denna funktion vidarebefordrar endast hela förfrågan och ger användaren hela svaret. Därför behöver jag tvinga användningen av Authentication-huvudet och jag skulle vilja ha ett promptfönster för att ange autentiseringsuppgifterna: Authentication.
Svaret som ska skickas från lambda-funktionen är lite annorlunda än för API Gateway: Använda AWS Lambda med en Application Load Balancer - AWS Lambda
Om autentisering med användning av ALB, hittade jag bara Authenticate Users Using an Application Load Balancer - Elastic Load Balancing.
Jag kan inte hitta något som är kopplat till grundläggande autentisering och uppmaningsfönstret.
Har någon någonsin försökt att ställa in grundläggande autentisering med ALB för lambda-funktionen? Var kan man leta efter informationen?
Svar #1
För att svara på min egen fråga:
Jag började min sökning efter ett svar på fel ställen. Jag trodde att det skulle vara kopplat till ALB men i slutändan var det inte så svårt som jag trodde i början. Det kan fungera som en enkel grundläggande autentisering.
Så, det är tillräckligt att returnera det svaret från den asynkrona funktionen/hanteraren för att göra det på det enklaste sättet:
{
statusCode: 401,
statusDescription: "401 Unauthorized",
isBase64Encoded: false,
headers: { "content-type": "application/json", "WWW-Authenticate": "Basic" },
body: "",
};
Självklart finns det en möjlighet att returnera vad som helst som du vill i body av detta svar.
