Python lambda serverless上的身份验证和用户创建
我创建了一个Lambda REST api(使用serverless)来访问Dynamodb数据库并执行CRUD操作 然后,我附加了一个CognitoUserPool和一个带有和ApiGatewayAuthorizer的CognitoUserClient 我现在面临的问题是,为了识别,我使用了一些终端命令,如下所示:Python lambda serverless上的身份验证和用户创建,python,amazon-web-services,amazon-cognito,serverless,Python,Amazon Web Services,Amazon Cognito,Serverless,我创建了一个Lambda REST api(使用serverless)来访问Dynamodb数据库并执行CRUD操作 然后,我附加了一个CognitoUserPool和一个带有和ApiGatewayAuthorizer的CognitoUserClient 我现在面临的问题是,为了识别,我使用了一些终端命令,如下所示: aws cognito-idp sign-up \ --region myregion \ --client-id clientid \ --username user
aws cognito-idp sign-up \
--region myregion \
--client-id clientid \
--username username \
--password mypassword
然后我跑:
aws cognito-idp admin-confirm-sign-up \
--region myregion \
--user-pool-id userpooolid \
--username username
最后我跑去拿代币
aws cognito-idp admin-initiate-auth --cli-input-json file://auth.json
其中json包含:
{
“UserPoolId”:“myregion”,
“客户端ID”:“myclientid”,
“AuthFlow”:“ADMIN\u NO\u SRP\u AUTH”,
“AuthParameters”:{
“用户名”:“用户名”,
“密码”:“密码”
}
}
这在终端上为我提供了一个令牌,然后我(手动)将其复制到邮递员中
我在这里测试API
我怎样才能使所有这些都自动并以编程方式编写脚本?
此外,我希望用户注册,然后进行身份验证
我看了一些无服务器的示例(在Python中),但它们使用的是Auth0,我想继续使用AWS资源
有什么想法吗?或者我可以根据需要修改的代码?以编程方式实现相同的行为, 您首先需要决定要使用哪个SDK 对于python用户,应该使用AWS SDK For python 更具体地说,要实现完整的注册过程,您可以使用boto3等效程序 正如您所看到的,这些函数在名称和请求/响应语法上都非常相似 关于完整的代码,这没有经过测试,但它基于AWS示例代码
import boto3
from botocore.exceptions import ClientError
def sign_up(app_client_id, username, password):
client = boto3.client('cognito-idp')
try:
sign_up_response = client.sign_up(
ClientId=app_client_id,
Username=username,
Password=password
)
print(sign_up_response)
confirm_sign_up_response = client.admin_confirm_sign_up(
UserPoolId=deadpool['user_pool_id'],
Username=deadpool['username']
)
print(confirm_sign_up_response)
except ClientError as e:
print(e)
def init_auth(app_client_id, username, password):
client = boto3.client('cognito-idp')
response = client.initiate_auth(
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': username,
'PASSWORD': password
},
ClientId=app_client_id
)
print(response['AuthenticationResult']['AccessToken'])
print(response['AuthenticationResult']['IdToken'])
print(response['AuthenticationResult']['RefreshToken'])
如您所见,有3种类型的令牌,要更好地理解,请参考。要通过编程实现相同的行为, 您首先需要决定要使用哪个SDK 对于python用户,应该使用AWS SDK For python 更具体地说,要实现完整的注册过程,您可以使用boto3等效程序 正如您所看到的,这些函数在名称和请求/响应语法上都非常相似 关于完整的代码,这没有经过测试,但它基于AWS示例代码
import boto3
from botocore.exceptions import ClientError
def sign_up(app_client_id, username, password):
client = boto3.client('cognito-idp')
try:
sign_up_response = client.sign_up(
ClientId=app_client_id,
Username=username,
Password=password
)
print(sign_up_response)
confirm_sign_up_response = client.admin_confirm_sign_up(
UserPoolId=deadpool['user_pool_id'],
Username=deadpool['username']
)
print(confirm_sign_up_response)
except ClientError as e:
print(e)
def init_auth(app_client_id, username, password):
client = boto3.client('cognito-idp')
response = client.initiate_auth(
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': username,
'PASSWORD': password
},
ClientId=app_client_id
)
print(response['AuthenticationResult']['AccessToken'])
print(response['AuthenticationResult']['IdToken'])
print(response['AuthenticationResult']['RefreshToken'])
如您所见,有3种类型的令牌,要更好地理解,请参阅