【问题标题】:AWS Cognito AdminInitiateAuth all custom scopes are missingAWS Cognito AdminInitiateAuth 缺少所有自定义范围
【发布时间】:2020-01-27 07:04:55
【问题描述】:

我有一个认知用户池,配置了 AWS::Cognito::UserPoolResourceServer 和范围列表,所有这些范围都在 UserPoolClient->AllowedOAuthScopes 上启用。当我通过 UI 身份验证时,令牌包含范围列表

 "scope": "aws.cognito.signin.user.admin labs-mymoney-bills-api/view labs-mymoney-bills-api/edit openid profile labs-mymoney-bills-api/pay email",

出于测试目的,我使用 adminInitiateAuth 获取令牌,并带有以下参数

  var authParams = {
        AuthFlow: 'ADMIN_USER_PASSWORD_AUTH',
        ClientId: 'myclientid',
        UserPoolId: 'myuserpool',
        AuthParameters: {
            USERNAME: 'myuser',
            PASSWORD: 'herpassword'
        }

    };

结果令牌的作用域是这样的

"scope": "aws.cognito.signin.user.admin",

显然,当我尝试使用已定义范围的 API 端点进行身份验证时,它始终是未经授权的。

这是一个错误,还是我做错了什么,或者有不切实际的期望?

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-cognito


    【解决方案1】:

    我相信这不是错误,而是设计使然。只有当您通过 Oauth 端点进行身份验证时,才会返回 Cognito 自定义范围。当您创建 Cognito 域时,Cognito 将创建一个托管 UI/授权服务器,该服务器公开 Oauth 端点。如果配置正确,通过这些端点登录将返回访问令牌中的自定义范围。

    通过启动身份验证或管理员启动身份验证登录不是通过 Oauth 端点,因此 Oauth 自定义范围不会包含在令牌中。

    我希望这会有所帮助。您可以通过设置 HostedUI 并登录来对此进行测试。您将收到的令牌应该包含范围。

    【讨论】:

    • 谢谢,但是,我发现它是有线的,管理员身份验证令牌有什么意义,如果它不能让你访问你的东西......
    • 当您说“管理员身份验证令牌”时,您指的是什么? aws.cognito.signin.user.admin 范围允许您调用 Cognito 以更新用户属性等。如果没有此范围,您将使用令牌授权对您自己的资源服务器或 APIGateway 的请求作为示例。跨度>
    • 允许通过 CLI/boto3 灵活地执行此操作会产生很大的不同。他们托管的 UI 有很多限制(本地化、流程定制、UI 布局等)。我们目前正在使用 Amplify 制作我们自己的 UI,这导致了这个问题。我们有自己的 API 网关来处理身份验证部分,但无法使用客户端定义的范围生成访问令牌,即使启动身份验证函数将客户端 ID 作为输入。
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 2018-07-19
    • 2017-06-05
    • 2019-08-10
    • 1970-01-01
    • 2021-03-21
    • 2020-10-03
    • 2018-06-07
    相关资源
    最近更新 更多