Cognito - 如何在与客户端从(通过放大)获得令牌的子域不同的子域上对 nodejs 后端的客户端进行身份验证?

     2023-03-27     279

关键词:

【中文标题】Cognito - 如何在与客户端从(通过放大)获得令牌的子域不同的子域上对 nodejs 后端的客户端进行身份验证?【英文标题】:Cognito - How to authenticate client in nodejs backend on a different subdomain than the one the client obtained the token from (through amplify)? 【发布时间】:2021-08-20 18:59:12 【问题描述】:

我在https://mysite.co/auth/ 中有一个身份验证流程,它是使用 Amplify 实现的(https://mysite.co/ 中的应用基于 Next.js)

当用户成功认证后,他从 Amplify 获得一个 Cognito 令牌,然后被重定向到 https://app.mysite.co/(这是纯 Javascript 前端和 Node.js 后端)

如何使用从https://mysite.co/auth/ 获得的 Cognito 令牌对https://app.mysite.co/ 中的用户进行身份验证?

我假设这是可能的,例如使用本地存储,但没有身份验证经验,并且在寻找有关如何执行此操作的好指针时迷失了方向。

【问题讨论】:

我不确定这是否是最佳实践,将令牌存储在会话存储中以供以后使用可能会解决您的问题。 【参考方案1】:
    将 Cognito 切换为使用 cookie based auth,并将您的域设置为 mysite.co,不带任何路径或子域,以便可以跨您拥有的子域使用。

 cookieStorage: 
  domain: 'mysite.co'// 'localhost' for dev - no port
 

Cognito 目前不支持安全 cookie - 但是,它并没有什么不同,因为唯一支持的其他方法是本地存储,并且仍然可以通过 JS 访问数据。 p>

如果您在 JWT 中设置大量额外信息,您可能会达到 cookie 大小限制(4096 字节限制)。标准 Cognito JWT 约为 1800 字节

    Imponent 客户端上的跨域本地存储以读取其他子域的本地存储 - 并非微不足道且特定于案例。我不知道这对于 Cognito 是否可行。 Here is an article 讨论使用 post 消息 - 这种方法是 hacky。

    将您的身份验证服务移至 app.mysite.co/auth 下。大多数 JS 框架(如 React)允许您在特定路径/路由 (/auth) 下拥有单独的实例。

    app.mysite.co 和除/auth 之外的所有路径都是app-1

    路径 app.mysite.co/auth 及其所有子路径都是 app-2 (auth)

【讨论】:

放大“无法验证客户端的秘密哈希”

】放大“无法验证客户端的秘密哈希”【英文标题】:Amplify"Unabletoverifysecrethashforclient"【发布时间】:2019-02-2810:38:36【问题描述】:我们一直在使用Amplify和Cognito为我们的用户注册部署到Lambda的Angular6应用程序。客户希望... 查看详情

从 Cognito 收到 JWT Token 后如何存储?通过 Cognito 托管 UI 登录

】从Cognito收到JWTToken后如何存储?通过Cognito托管UI登录【英文标题】:HowdoIstoreJWTTokenafterreceivingfromCognito?LogginginviatheCognitoHostedUI【发布时间】:2021-02-0415:44:42【问题描述】:架构:前端Angular,后端nodejs/express。目前的设置工作如... 查看详情

Cloudformation Cognito - 如何通过 SAM 模板设置应用程序客户端设置、域和联合身份

】CloudformationCognito-如何通过SAM模板设置应用程序客户端设置、域和联合身份【英文标题】:CloudformationCognito-howtosetupAppClientSettings,Domain,andFederatedIdentitiesviaSAMtemplate【发布时间】:2018-09-0613:08:42【问题描述】:我的cognito用户池clou... 查看详情

如何从 Cognito 获取 Apple 刷新令牌?

】如何从Cognito获取Apple刷新令牌?【英文标题】:HowtogetanApplerefreshtokenfromCognito?【发布时间】:2020-12-1309:37:27【问题描述】:我正在通过SignInWithApple使用Cognito的联合登录。我有一个通过appleid.apple.com使用JWT授权器的API网关路由从... 查看详情

如何从通过 Google/Federated Login 登录的 AWS Cognito 检索 id 令牌

】如何从通过Google/FederatedLogin登录的AWSCognito检索id令牌【英文标题】:HowtoretrieveidtokenfromAWSCognitowhologgedviaGoogle/FedaratedLogin【发布时间】:2018-10-0101:21:08【问题描述】:我已经设置了一个应用程序,用户可以在其中注册到我的站... 查看详情

如何在放大中捕获来自 aws cognito pre signup lambda 的错误?

】如何在放大中捕获来自awscognitopresignuplambda的错误?【英文标题】:Howtocatchanerrorcomingfromawscognitopresignuplambdainamplify?【发布时间】:2021-10-0207:38:59【问题描述】:我在cognito中使用预注册lambda触发器。某些情况下的presinguplambda会... 查看详情

如何在现有的 Cognito 用户池中获取生日? (放大 iOS)

】如何在现有的Cognito用户池中获取生日?(放大iOS)【英文标题】:HowtogetbirthdateinexistingCognitoUserPool?(AmplifyiOS)【发布时间】:2021-06-0211:43:19【问题描述】:我使用AWSAmplifyiOS来授权用户。我选择了性别、姓名和生日作为用户属性... 查看详情

如何安全地使用 AWS 放大

...是,希望为用户提供一种更改其cognito密码的方法。鉴于客户端ID已暴露,我不明白如何以安全的方式完成此操作。我错过了什么?这是我正在使用的文档......https://github.com/aws-amplify/amplify-js/tree/mai 查看详情

如何修改 AWS Cognito JWT Tokens,我们正在使用 NodeJS 技术问题

...效负载中)中获得了太多信息。我不想将它传递给接收API客户端。所以我的问题是如何减少数据或 查看详情

如何从 AuthenticationResult 创建客户端认知会话?

】如何从AuthenticationResult创建客户端认知会话?【英文标题】:HowcanIcreateaclientsidecognitosessionfromanAuthenticationResult?【发布时间】:2021-11-2706:06:21【问题描述】:aws-amplify包中的AWS对象允许前端应用程序通过调用signIn方法来启动认知... 查看详情

我如何从 AWS Cognito Api 获取机器对机器的令牌

】我如何从AWSCognitoApi获取机器对机器的令牌【英文标题】:HowwouldIgetTokensfromAWSCognitoApiformachinetomachine【发布时间】:2018-12-0819:40:51【问题描述】:我正在尝试通过CognitoAPI获取令牌,但失败了。我已经阅读了他们的网站,但我很... 查看详情

具有授权的 AWS Cognito 用户(如何从应用程序将用户添加到用户组?)

】具有授权的AWSCognito用户(如何从应用程序将用户添加到用户组?)【英文标题】:AWSCognitoUserswithAuthorization(howtoaddausertoausergroupfromtheapplication?)【发布时间】:2020-06-0109:44:02【问题描述】:我正在构建一个应用程序,在前端使... 查看详情

通过向 Cognito 发送验证码,直接从您的应用程序获取 cognito 电子邮件验证

】通过向Cognito发送验证码,直接从您的应用程序获取cognito电子邮件验证【英文标题】:GettingcognitoemailverifieddirectlyfromyourappbysendingverificationcodetoCognito【发布时间】:2021-12-2022:08:58【问题描述】:我正在制作一个应用程序,并且... 查看详情

如何通过 CloudFormation 禁用 Cognito 用户注册?

】如何通过CloudFormation禁用Cognito用户注册?【英文标题】:HowtodisableCognitousersignupsviaCloudFormation?【发布时间】:2020-07-2809:01:21【问题描述】:如何通过AWS::Cognito::UserPool资源上的CloudFormation或通过其他方法选择“仅允许管理员创建... 查看详情

使用石墨烯,在与客户端发送graphql请求时,如何拦截+内省发布数据?

】使用石墨烯,在与客户端发送graphql请求时,如何拦截+内省发布数据?【英文标题】:Usinggraphene,whensendingagraphqlrequestwithaclient,howcanIintercept+introspectpostdata?【发布时间】:2020-12-0702:58:33【问题描述】:使用石墨烯,当向客户端发... 查看详情

如何允许 API Gateway 代理与 Cognito Authorizer 集成以进行 POST 请求?

...用Cognito用户池为Lambda代理集成资源授权APIGateway请求。从客户端,所有请求都可以在没有授 查看详情

将手动创建的 Cognito 用户池与放大项目一起使用

】将手动创建的Cognito用户池与放大项目一起使用【英文标题】:UsingmanuallycreatedCognitoUserPoolwithanamplifyproject【发布时间】:2020-08-2116:44:00【问题描述】:在将AWSAmplify添加到React项目时,我正在尝试使用我现有的Cognito用户池。因此... 查看详情

如何从 c# 中的 aws cognito 获取用户属性

】如何从c#中的awscognito获取用户属性【英文标题】:howtogettheuserattributefromawscognitoinc#【发布时间】:2021-03-0907:55:36【问题描述】:我正在使用AmazonCognitoIdentityProviderClient开发工具包。我正在尝试在cognito中为用户获取自定义属性。... 查看详情