1. Dynamic metadata retrieval, refactored function 2. Load with using marshmallow, allows dynamic fields now 3. Added chunkers, different varieties 4. Fixed PDF loading so it is better standardized
62 lines
No EOL
1.5 KiB
Python
62 lines
No EOL
1.5 KiB
Python
|
|
from cognito.JWTBearer import JWKS, JWTBearer, JWTAuthorizationCredentials
|
|
|
|
import requests
|
|
|
|
region = "eu-west-1"
|
|
user_pool_id = "" #needed
|
|
cognito_url = f"https://cognito-idp.{region}.amazonaws.com/{user_pool_id}/.well-known/jwks.json"
|
|
|
|
# Fetch the JWKS using the updated URL
|
|
jwks = JWKS.parse_obj(requests.get(cognito_url).json())
|
|
print(jwks)
|
|
|
|
auth = JWTBearer(jwks)
|
|
|
|
|
|
import requests
|
|
|
|
# Set the Cognito authentication endpoint URL
|
|
|
|
auth = JWTBearer(jwks)
|
|
|
|
# Set the user credentials
|
|
|
|
username = "" #needed
|
|
password = "" #needed
|
|
|
|
# Create the authentication payload
|
|
payload = {
|
|
"username": username,
|
|
"password": password
|
|
}
|
|
|
|
# Set the Cognito authentication endpoint URL
|
|
# Set the Cognito token endpoint URL
|
|
token_endpoint = f"https://your-cognito-domain.auth.{region}.amazoncognito.com/oauth2/token"
|
|
|
|
# Set the client credentials
|
|
client_id = "" #needed
|
|
client_secret = ""
|
|
|
|
import boto3
|
|
def authenticate_and_get_token(username: str, password: str,
|
|
user_pool_id: str, app_client_id: str) -> None:
|
|
client = boto3.client('cognito-idp')
|
|
|
|
resp = client.admin_initiate_auth(
|
|
UserPoolId=user_pool_id,
|
|
ClientId=app_client_id,
|
|
AuthFlow='ADMIN_NO_SRP_AUTH',
|
|
AuthParameters={
|
|
"USERNAME": username,
|
|
"PASSWORD": password
|
|
}
|
|
)
|
|
|
|
print("Log in success")
|
|
print("Access token:", resp['AuthenticationResult']['AccessToken'])
|
|
print("ID token:", resp['AuthenticationResult']['IdToken'])
|
|
|
|
|
|
authenticate_and_get_token(username, password, user_pool_id, client_id) |