Configuration de l'authentification de base à l'aide de Python @Lambda

introduction

Lorsque j'ai recherché l'authentification de base dans Lambda, je n'ai trouvé que Node.js, alors je l'ai écrit. Sert également de mon propre mémorandum. La version Node.js sortira dès que vous en serez, donc je n'y toucherai pas ici.

code

Ce n'est pas un gros problème, mais c'est une refonte de la version Node.js. Cependant, c'est un peu différent en ce sens qu'il peut prendre en charge plusieurs comptes.

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

Réglages

En gros, C'était facile! Comment mettre l'authentification BASIC dans CloudFront + S3 devrait convenir. Il y a une description de l'en-tête ʻAuthorization` qui manque sur d'autres sites ici.

Recommended Posts

Configuration de l'authentification de base à l'aide de Python @Lambda
Configuration de l'authentification Digest à l'aide de Python @Lambda
Obtenez une authentification de base avec CloudFront Lambda @ Edge avec Python 3.8
Authentification BASIC avec bouteille Python
[Python] Utilisation d'OpenCV avec Python (basique)
Récapitulatif si vous utilisez AWS Lambda (Python)
Authentification à l'aide de l'authentification des utilisateurs tweepy et de l'authentification d'application (Python)
Playbook Ansible pour configurer les préférences Python à l'aide de pyenv sur Mac
[AWS] Utilisation de fichiers ini avec Lambda [Python]
[Python] Accélération du traitement à l'aide des outils de cache
Installez la bibliothèque python sur Lambda à l'aide de [/ tmp]
Remarques sur la configuration d'un conteneur Docker pour l'utilisation de JUMAN ++, KNP, python
RF Python Basic_01
Méfiez-vous des disable_existing_loggers lors de la configuration de la journalisation Python
Commencez à utiliser Python
Écriture de base Python
Grammaire de base Python3
RF Python Basic_02
Envoyer HTTP avec l'en-tête d'authentification de base en Python
Authentification Python Https
Scraping à l'aide de Python
Certification Flask Basic
[Introduction à Python] Utilisation de base des expressions lambda
De la configuration du Raspberry Pi à l'installation de l'environnement Python
Comment configurer un environnement Python à l'aide de pyenv
Via un proxy d'authentification pour la communication à l'aide de python urllib3
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
Cours de base Python (12 fonctions)
Édition de base Python Memo
Cours de base Python (7 dictionnaire)
Manipuler Redmine à l'aide de Python Redmine
Cours de base Python (2 installation Python)
Tri de base en Python
Séquence de Fibonacci utilisant Python
Cours de base Python (9 itérations)
expression lambda de python ...
[python] méthode de base de la classe
Cours de base Python (6 sets)
Nettoyage des données à l'aide de Python
Aide-mémoire Python3 (basique)
Grammaire de base Python (divers)
Cours de base Python (Introduction)
Utilisation des packages Python #external
Mémorandum de base Python partie 2
python basic ② sous windows
Câblage Communication Pi-SPI avec Python
Mémo de base Python - Partie 2
Calcul de l'âge à l'aide de python
Cours de base Python (13 cours)
Notes de commande de base Python
Connaissance de base de Python
Rechercher sur Twitter avec Python
Mémo de grammaire de base Python