首先确保安装了moto
和boto3
模块。
然后,运行下面的代码可以模拟AWS Cognito服务,并使用boto3进行身份验证。
import boto3
from moto import mock_cognito_idp
with mock_cognito_idp():
client = boto3.client('cognito-idp', region_name='us-west-2')
app_client = client.create_user_pool_client(
UserPoolId='us-west-2_TESTUSERPOOL',
ClientName='test-app-client',
)
user = client.admin_create_user(
UserPoolId='us-west-2_TESTUSERPOOL',
Username='test-user'
)
response = client.initiate_auth(
ClientId=app_client['UserPoolClient']['ClientId'],
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': 'test-user',
'PASSWORD': 'Test1234!'
}
)
access_token = response['AuthenticationResult']['AccessToken']
如果你想使用awssrp库,可以试试下面的代码:
import boto3
import awssrp
client = boto3.client('cognito-idp')
user_pool_id = 'us-west-2_TESTUSERPOOL'
client_id = 'xyzabc123def456'
username = 'test-user'
password = 'Test1234!'
aws_cognito = awssrp.AWSSRP(
username=username,
password=password,
pool_id=user_pool_id,
client_id=client_id,
client=client
)
tokens = aws_cognito.authenticate_user()
access_token = tokens['AuthenticationResult']['AccessToken']
如果你在本地模拟AWS服务或使用awssrp时遇到问题,请确保按照官方文档操作,并尝试使用最新版本的模块。