Einrichten der Basisauthentifizierung mit Python @Lambda

Einführung

Als ich in Lambda nach Standardauthentifizierung gesucht habe, habe ich nur Node.js gefunden, also habe ich es geschrieben. Dient auch als eigenes Memorandum. Die Node.js-Version wird veröffentlicht, sobald Sie herumgehen, daher werde ich sie hier nicht berühren.

Code

Es ist keine große Sache, aber es ist eine Wiederholung der Node.js-Version. Es ist jedoch insofern etwas anders, als es mehrere Konten unterstützen kann.

import json
import base64

accounts = [
    {
        "user": "user1",
        "pass": "pass1"
    },
    {
        "user": "user2",
        "pass": "pass2"
    }
    ]

def lambda_handler(event, context):
    request = event.get("Records")[0].get("cf").get("request")
    headers = request.get("headers")
    
    authorization_header = headers.get("authorization")
    
    if not check_authorization_header(authorization_header):
        return {
            'headers': {
                'www-authenticate': [
                    {
                        'key': 'WWW-Authenticate',
                        'value':'Basic'
                    }
                ]
            },
            'status': 401,
            'body': 'Unauthorized'
        }
            
        
    return request

def check_authorization_header(authorization_header: list) -> bool:
    if not authorization_header:
        return False
    
    for account in accounts:
        encoded_value = base64.b64encode("{}:{}".format(account.get("user"), account.get("pass")).encode('utf-8'))
        check_value = "Basic {}".format(encoded_value.decode(encoding='utf-8'))
        
        if authorization_header[0].get("value") == check_value:
            return True

    return False

die Einstellungen

Grundsätzlich war es einfach! Das Einfügen der BASIC-Authentifizierung in CloudFront + S3 sollte in Ordnung sein. Es gibt eine Beschreibung des "Authorization" -Headers, der auf anderen Websites hier fehlt.

Recommended Posts

Einrichten der Basisauthentifizierung mit Python @Lambda
Einrichten der Digest-Authentifizierung mit Python @Lambda
Erreichen Sie eine grundlegende Authentifizierung mit CloudFront Lambda @ Edge mit Python 3.8
BASIC-Authentifizierung mit Python-Flasche
[Python] Verwenden von OpenCV mit Python (Basic)
Zusammenfassung bei Verwendung von AWS Lambda (Python)
Authentifizierung mit Tweepy-User-Authentifizierung und Anwendungsauthentifizierung (Python)
Ansible Playbook zum Konfigurieren von Python-Einstellungen mit pyenv auf dem Mac
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
[Python] Beschleunigung der Verarbeitung mit Cache-Tools
Installieren Sie die Python-Bibliothek auf Lambda mit [/ tmp]
Hinweise zum Einrichten eines Docker-Containers für die Verwendung von JUMAN ++, KNP, Python
RF Python Basic_01
Achten Sie beim Konfigurieren der Python-Protokollierung auf disable_existing_loggers
Starten Sie Python
Python-Grundschrift
Grundlegende Grammatik von Python3
RF Python Basic_02
Senden Sie HTTP mit dem Standardauthentifizierungsheader in Python
Python-HTTP-Authentifizierung
Scraping mit Python
Flask Basic-Zertifizierung
[Einführung in Python] Grundlegende Verwendung von Lambda-Ausdrücken
Vom Einrichten des Raspberry Pi bis zur Installation der Python-Umgebung
So richten Sie eine Python-Umgebung mit pyenv ein
Über einen Authentifizierungs-Proxy für die Kommunikation mit Python urllib3
Überprüfen Sie types_map, wenn Sie Mimetypen mit AWS Lambda (Python) verwenden.
Python-Grundkurs (12 Funktionen)
Python Memo Basic Edition
Python-Grundkurs (7 Wörterbuch)
Bearbeiten Sie Redmine mit Python Redmine
Python-Grundkurs (2 Python-Installation)
Grundlegende Sortierung in Python
Fibonacci-Sequenz mit Python
Python-Grundkurs (9 Iterationen)
Pythons Lambda-Ausdruck ...
Grundmethode der [Python] -Klasse
Python-Grundkurs (6 Sätze)
Datenbereinigung mit Python
Python3 Spickzettel (Basic)
Python-Grundgrammatik (Sonstiges)
Python-Grundkurs (Einführung)
Verwenden von Python # externen Paketen
Python Basic Memorandum Teil 2
Python Basic ② in Windows
WiringPi-SPI-Kommunikation mit Python
Python-Grundnotiz - Teil 2
Altersberechnung mit Python
Python-Grundkurs (13 Klassen)
Grundlegende Python-Befehlsnotizen
Grundkenntnisse in Python
Suchen Sie Twitter mit Python
Python grundlegende Grammatik Memo