Cognito 在创建应用程序时提供客户端密钥

问题描述 投票:0回答:1

我正在使用 CloudFormation 为我的认知用户池创建机密应用程序客户端。 我的 cloudformation 资源如下所示:

AppClient:
    Type: AWS::Cognito::UserPoolClient
    Properties:
        ClientName: app-client
        UserPoolId: !Ref CognitoInfrastructureUserPool
        EnableTokenRevocation: false
        AccessTokenValidity: !Ref UserPoolAccessTokenValidity
        IdTokenValidity: !Ref UserPoolIdTokenValidity
        RefreshTokenValidity: !Ref UserPoolRefreshTokenValidity
        TokenValidityUnits:
            AccessToken: "hours"
            RefreshToken: "hours"
            IdToken: "hours"
        SupportedIdentityProviders:
            - COGNITO
        CallbackURLs: !Split [",", !Ref UserPoolCallbackUrls]
        LogoutURLs: !If
            - HasLogoutUrls
            - !Split [ ",", !Ref UserPoolLogoutUrls ]
            - !Ref AWS::NoValue
        AllowedOAuthFlowsUserPoolClient: true
        AllowedOAuthFlows:
            - code
            - implicit
        AllowedOAuthScopes:
            - phone
            - email
            - openid
            - profile
            - aws.cognito.signin.user.admin
        ExplicitAuthFlows:
            - ALLOW_CUSTOM_AUTH
            - ALLOW_USER_SRP_AUTH
            - ALLOW_REFRESH_TOKEN_AUTH
        PreventUserExistenceErrors: ENABLED
        ReadAttributes:
            - address
            - birthdate
        WriteAttributes:
            - address
            - birthdate
        GenerateSecret: true

我不想使用认知生成 client_secret,而是使用我生成的客户端密钥。可以这样做吗?

此外,是否可以限制具有特定角色的有限用户组对客户端密钥的访问。

amazon-web-services oauth-2.0 aws-cloudformation amazon-cognito
1个回答
0
投票

很确定不是,因为在控制台中创建应用程序客户端时,您只能选择客户端密钥或无密钥。如果您要生成自己的代码,则需要 AWS 的能力或您的应用程序客户端信任您的代码,而这并不安全。

我认为不可能限制某些用户对秘密的访问,最好的方法是拥有一个有秘密的应用程序客户端和一个没有秘密的应用程序客户端,我很确定一个认知池可以使用 2 个应用程序客户端。

© www.soinside.com 2019 - 2024. All rights reserved.