Несколько типов авторизации с AWS AppSync

Кажется, что проект AppSync можно настроить только с одним типом авторизации (API_KEY, AWS_IAM и т. Д.). Я использую AMAZON_COGNITO_USER_POOLS в качестве основного типа, но у меня также есть клиент (Node.js), которому я хочу предоставить API_KEY доступ.

Это возможно?

Если нет, можете ли вы предложить какие-либо альтернативы?


person jsleeuw    schedule 04.07.2018    source источник
comment
См. Ответ ниже; В AWS AppSync добавлена ​​поддержка нескольких типов авторизации в одном API. aws.amazon.com / blogs / mobile /   -  person parkerfath    schedule 22.05.2019


Ответы (3)


Есть два подхода к решению вашего варианта использования.

  1. Вы можете подготовить отдельную конечную точку AppSync (вы можете создать до 25 на регион в одной учетной записи AWS) с той же схемой и настроить ее с другой схемой авторизации. Используйте этот подход, только если вам нужна жесткая изоляция между конечными точками.

  2. По состоянию на май 2019 г. AWS AppSync поддерживает несколько схем авторизации для GraphQL API. Вы можете включить AMAZON_COGNITO_USER_POOLS в качестве схемы аутентификации по умолчанию и API_KEY в качестве дополнительной схемы аутентификации. Это рекомендуемый подход, который также работает с подписками, что решает проблему Мэтью в другом ответе.

person Rohan Deshpande    schedule 04.07.2018
comment
Спасибо, Рохан, это интересная идея. Попробую. Пожалуйста, дайте мне +1 за возможность иметь более одной схемы аутентификации для каждой конечной точки AppSync в будущем! - person jsleeuw; 05.07.2018
comment
Это действительно должен быть запрос функции. Бывают случаи, когда для одной конечной точки требуется несколько конфигураций. - person Stephen Brickner; 14.12.2018

Ответ Рохана работает при условии, что у вас нет подписок; если у вас есть подписка в одной конечной точке AppSync и вы изменяете данные в другой конечной точке AppSync, тогда пока данные за кулисами обновляются, подписка не будет обновляться (что имеет смысл, поскольку подписка прикреплена как прослушиватель в AppSync конечная точка). Пока AppSync не поддерживает несколько методов, вы можете попробовать IAM; есть некоторые подробности здесь о том, как заставить его работать с Cognito в приложение + лямбда. Пример есть на python, но для node.js вы должны сгенерировать подписи с чем-то вроде https://www.npmjs.com/package/aws4. Тот же метод будет работать, если ваш клиент node.js запущен в другом месте, при условии, что вы сгенерируете некоторые ключи API.

person Matthew Berryman    schedule 10.07.2018
comment
Большое спасибо, Мэтью, это очень помогло. Да, я столкнулся с проблемой с подписками, и это проблема для меня. Я внимательно посмотрю на предоставленные ссылки. Еще раз спасибо! - person jsleeuw; 11.07.2018

По состоянию на май 2019 года AWS AppSync объявила о поддержке нескольких типов аутентификации в одном API. https://aws.amazon.com/blogs/mobile/using-multiple-authorization-types-with-aws-appsync-graphql-apis/.

person parkerfath    schedule 21.05.2019