node.js - AWS lambda základná autentifikácia s Application Load Balancer


Pred niekoľkými dňami som sa pýtal na AWS Lambda základné overovanie bez vlastného autorizátora. Dostal som odpoveď, ktorá mi stačila, implementoval som vlastného autorizátora, ktorý funguje správne.

Práve teraz mám veľmi podobný problém, pretože sme sa rozhodli zmeniť API Gateway na Application Load Balancer, ktorý spustí funkciu lambda na príslušnej ceste.

Chcel by som pripraviť základnú autentifikáciu pre tento koncový bod tiež (presne rovnakú ako predtým).

Takže rovnaký problém:

AWS lambda funkcia, ktorá je proxy pre ďalšiu službu. Táto funkcia iba preposiela celý požiadavok a poskytuje používateľovi celú odpoveď. Preto potrebujem vynútiť použitie hlavičky Authentication a rád by som mal okno s výzvou na zadanie prihlasovacích údajov: Authentication.

Odpoveď, ktorá by mala byť odoslaná z funkcie Lambda, je trochu odlišná od odpovede pre API Gateway: Používanie AWS Lambda s aplikačným Load Balancerom - AWS Lambda

O autentifikácii s použitím ALB som našiel len Authenticate Users Using an Application Load Balancer - Elastic Load Balancing.

Nemôžem nájsť nič spojené so základným overovaním a výzvou okna.

Skúšal niekto niekedy nastaviť základnú autentifikáciu s ALB pre Lambda funkciu? Kde hľadať informácie?

Odpoveď č. 1

Aby som odpovedal na svoju vlastnú otázku:
Začal som hľadať odpoveď na nesprávnych miestach. Myslel som si, že to musí byť spojené s ALB, ale nakoniec to nebolo také ťažké, ako som si myslel na začiatku. Môže to fungovať ako jednoduchá základná autentifikácia.

Takže stačí vrátiť túto odpoveď z asynchrónnej funkcie/handlera, aby sa to urobilo najjednoduchším spôsobom:

{
    statusCode: 401,
    statusDescription: "401 Unauthorized",
    isBase64Encoded: false,
    headers: { "content-type": "application/json", "WWW-Authenticate": "Basic" },
    body: "",
};

Samozrejme, existuje možnosť vrátiť čokoľvek, čo chcete, v tiele tejto odpovede.