Как установить разрешенные настраиваемые области действия клиента приложения пула пользователей Cognito через cli или sdk?

TL;DR: есть ли способ установить пользовательские области клиента приложения через cli или sdk?

Я пытаюсь автоматизировать развертывание Cognito с помощью CloudFormation. Я уже сделал несколько пользовательских ресурсов, так как не все поддерживается. Для этого я использую AWS JS SDK. Я хочу установить «Разрешенные настраиваемые области» для клиентов приложений в определенном пуле пользователей. Однако я не могу найти, как это сделать, ни в одной документации, которую предоставляет AWS. Документы CLI говорят только об этом в документах здесь Документы Cognito-user-identity:

AllowedOAuthScopes
A list of allowed OAuth scopes. Currently supported values are "phone", "email", "openid", and "Cognito".

Упомянутые области являются областями по умолчанию, которые всегда доступны в пользовательском пуле. Но я также использую настраиваемые области действия, предоставляемые определенным мной настраиваемым сервером ресурсов. Они выглядят так: resourceServer.com/scope. Я не могу найти никаких документов по настройке этих областей.

Итак, есть ли способ установить пользовательские области через cli или sdk?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
3 721
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Пользовательская область поддерживается в поле AllowedOAuthScopes.

Документ: https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-AllowedOAuthScopes

Чтобы обновить клиент пользовательского пула через CLI: https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool-client.html (проверьте вариант --allowed-o-auth-scopes)

См. пример формирования облака ниже

UserPoolResourceServer:
    Type: AWS::Cognito::UserPoolResourceServer
    Properties: 
        Identifier: users
        Name: User API
        UserPoolId: !Ref UserPool
        Scopes: 
            - ScopeName: "write"
              ScopeDescription: "Write access"
            - ScopeName: "read"
              ScopeDescription: "Read access"

UserPoolClientAdmin:
    Type: "AWS::Cognito::UserPoolClient"
    Properties:
        AllowedOAuthFlows: 
            - client_credentials
        AllowedOAuthFlowsUserPoolClient: true
        AllowedOAuthScopes: 
            - users/read
            - users/write

Для всех, кто приходит сюда в поисках решения, следуйте примеру @JohnPauloRodriguez шаблон. Но вам может понадобиться добавить ключ атрибута DependsOn в шаблон UserPoolClient, чтобы он работал.

Причина в том, что сначала должны существовать Resource Server с этими пользовательскими областями, и только тогда мы можем ссылаться на них в клиенте. Согласно Документы по формированию облака:

With the DependsOn attribute you can specify that the creation of a specific resource follows another. When you add a DependsOn attribute to a resource, that resource is created only after the creation of the resource specified in the DependsOn attribute.

Таким образом, шаблон для UserPoolClient станет следующим:

CognitoUserPoolClient:
    Type: AWS::Cognito::UserPoolClient
    DependsOn: UserPoolResourceServer
    Properties:
      UserPoolId: !Ref UserPool
      AllowedOAuthFlowsUserPoolClient: true
      AllowedOAuthFlows:
        - code
      AllowedOAuthScopes: 
        - users/read
        - users/write

Другие вопросы по теме