Amazon web services AWS Cognito-我应该在代码中的哪里处理oAuth授权代码?

Amazon web services AWS Cognito-我应该在代码中的哪里处理oAuth授权代码?,amazon-web-services,authentication,aws-lambda,amazon-cognito,Amazon Web Services,Authentication,Aws Lambda,Amazon Cognito,我有一个初学者的问题。我刚刚开始使用AWS Cognito用户池,并成功地设置了oAuth“授权码授予”工作流-因此,现在,在登录后,我成功地重定向并在url中获取授权码。下一步是将其交换为实际的JWT令牌,但问题是我错过了一些更广阔的视角,不知道在这种情况下的最佳实践是什么。我知道用代码交换令牌的javascript代码,但我不知道它应该在哪里运行 我是否应该在我的用户池中使用触发器功能,将Lambda函数绑定到某个事件(哪一个?“后验证”),并让该Lambda函数将代码交换为令牌并将其保存为

我有一个初学者的问题。我刚刚开始使用AWS Cognito用户池,并成功地设置了oAuth“授权码授予”工作流-因此,现在,在登录后,我成功地重定向并在url中获取授权码。下一步是将其交换为实际的JWT令牌,但问题是我错过了一些更广阔的视角,不知道在这种情况下的最佳实践是什么。我知道用代码交换令牌的javascript代码,但我不知道它应该在哪里运行

我是否应该在我的用户池中使用触发器功能,将Lambda函数绑定到某个事件(哪一个?“后验证”),并让该Lambda函数将代码交换为令牌并将其保存为会话

或者我是否应该在成功登录后将所有这些功能放入重定向到的url中?对于这种情况,是否有一些最佳做法

谢谢

要问的问题是:“现在用户被授权了……现在怎么办?”

您希望向用户提供的AWS服务将决定您需要使用哪种类型的身份验证流。因为你的问题相当广泛。。我将为您提供两种类型的高级别身份验证流

联合身份: 您可以配置为授予用户AWS IAM凭据(AccessKey和AccessSecret)。设置联邦标识池时,指定可以接收IAM凭据的标识(例如:您的cognito池、google、任何其他openID提供程序)和将授予对指定资源访问权限的IAM策略。这将检查如何在应用程序代码中执行此操作

API网关自定义授权程序您还可以配置一个源为您的Cognito用户池的。这将允许您使用通过对用户池进行身份验证而收到的jwt
#id_令牌
发出请求

问题的具体答案:

我是否应该在我的用户池中使用触发器功能,将Lambda函数与某个事件(哪一个?“后验证”)绑定,并让该Lambda函数将代码交换为令牌并将其保存为会话?-通常,触发器用于存储用于分析或服务器端处理的用户数据。如果您使用Cognito进行身份验证,则不需要使用Lambda

或者我应该在成功登录后将所有这些功能放入重定向到的url中吗?对于这种情况,是否有一些最佳做法我建议使用库,例如使用Cognito进行管理。

要问的问题是:“现在用户被授权了……现在怎么办?”

您希望向用户提供的AWS服务将决定您需要使用哪种类型的身份验证流。因为你的问题相当广泛。。我将为您提供两种类型的高级别身份验证流

联合身份: 您可以配置为授予用户AWS IAM凭据(AccessKey和AccessSecret)。设置联邦标识池时,指定可以接收IAM凭据的标识(例如:您的cognito池、google、任何其他openID提供程序)和将授予对指定资源访问权限的IAM策略。这将检查如何在应用程序代码中执行此操作

API网关自定义授权程序您还可以配置一个源为您的Cognito用户池的。这将允许您使用通过对用户池进行身份验证而收到的jwt
#id_令牌
发出请求

问题的具体答案:

我是否应该在我的用户池中使用触发器功能,将Lambda函数与某个事件(哪一个?“后验证”)绑定,并让该Lambda函数将代码交换为令牌并将其保存为会话?-通常,触发器用于存储用于分析或服务器端处理的用户数据。如果您使用Cognito进行身份验证,则不需要使用Lambda


或者我应该在成功登录后将所有这些功能放入重定向到的url中吗?对于这种情况,是否有一些最佳做法我建议使用一个库,比如使用Cognito进行管理。

我见过的代码授予流推荐中最常见的方法是您提到的方法

我应该把所有这些功能放在我重定向到的url中吗 成功登录

这样做的好处是,您可以存储刷新令牌服务器端,并使用它在id_令牌过期之前刷新它(有几个地方声明不存储刷新令牌客户端)

但是,如果您查看代码授权库中的实现,它会在客户端执行此操作,同时将刷新令牌存储在本地存储中,并使用JavaScript从客户端刷新id_令牌


因此,这两种方法都存在,而在不同的项目中使用这两种方法时,我觉得后者很容易实现和维护。

我见过的代码授予流程推荐中最常见的方法是您提到的方法

我应该把所有这些功能放在我重定向到的url中吗 成功登录

这样做的好处是,您可以存储刷新令牌服务器端,并使用它在id_令牌过期之前刷新它(有几个地方声明不存储刷新令牌客户端)

但是,如果您查看代码授权库中的实现,它会在客户端执行此操作,同时将刷新令牌存储在本地存储中,并使用JavaScript从客户端刷新id_令牌

所以这两种方法都存在,而在不同的项目中使用这两种方法,我觉得后者很容易实现和维护