我使用 AWS Amplify 和 Cognito 用户池构建了 Angular 应用程序。我能够成功登录并访问我的主页。但是,当我检查访问令牌时(见图 1)
放大预建 UI
当我尝试使用此访问令牌通过 API 网关验证我的 api 时,出现未经授权的错误。我在 API 网关中添加了正确的 Cognito 用户池
托管用户界面 URL 当我使用以下 url 访问托管 UI 时
https://xxxxxxxxx.auth.us-east-1.amazoncognito.com/login?&client_id=
我登录成功了
http://localhost:4200/admin/home#id_token=
使用 ACCES_TOKEN 我可以验证 API 网关。
Cognito 用户池由命令自动创建:amplify add auth。
我在谷歌上搜索,发现我必须添加以下授权类型并连接范围
但是,我仍然无法弄清楚如何通过预建 UT 获得与托管 UI 相同的访问令牌
@Ankush - 根据你的建议,我更新了授权配置。这是我的 aws 身份验证配置
const awsmobile = {
"aws_project_region": "us-east-1",
"aws_cognito_identity_pool_id": "us-east-1:XXXXXXXXXXXXXXXXXXXXXXXxXXXx",
"aws_cognito_region": "us-east-1",
"aws_user_pools_id": "us-east-1_XXXXXX",
"aws_user_pools_web_client_id": "48XxXxxxxxxxxxxxxxxxd",
"oauth": {
"domain": "xxxxxxxxxxxxxxxxxx-dev.auth.us-east-1.amazoncognito.com",
"scope": [
"phone",
"email",
"openid",
"profile",
"aws.cognito.signin.user.admin"
],
"redirectSignIn": "http://localhost:4200/admin/home/",
"redirectSignOut": "http://localhost:4200/",
"responseType": "token"
},
"federationTarget": "COGNITO_USER_POOLS",
"aws_cognito_username_attributes": [],
"aws_cognito_social_providers": [],
"aws_cognito_signup_attributes": [
"EMAIL"
],
"aws_cognito_mfa_configuration": "OFF",
"aws_cognito_mfa_types": [
"SMS"
],
"aws_cognito_password_protection_settings": {
"passwordPolicyMinLength": 8,
"passwordPolicyCharacters": []
},
"aws_cognito_verification_mechanisms": [
"EMAIL"
]
};
更新 oauth 后生成的 URL(见屏幕截图),我正在获取托管 UI URL 并返回正确的 URL。但是当我通过 ng serve 运行我的应用程序(打开预构建的登录页面)时返回不同的访问令牌