我们公司刚刚开始使用AWS,我的任务是为API网关创建Lambda函数。我有c#background这是我决定使用的语言。在确定使用哪个“蓝图”时,似乎“具有测试的AWS无服务器应用程序”是正确的蓝图,因为我将创建多个功能。第一个功能是创建应用程序用户。必须在数据库用户表和Cognito中创建用户。
根据我搜索有关我的问题的帮助,大多数应用程序似乎都是以允许用户自行注册的方式编写的。我们的情况并非如此。管理员必须创建用户。我们使用Cognito对管理员和应用程序用户进行身份验证,因此必须在数据库用户表和Cognito中创建每个用户,无论其类型如何。
我遇到的问题是,当用户登录并通过Cognito进行身份验证并导致Lambda函数执行时,我需要访问ID令牌以获取用户的Cognito凭据,以便我可以在用户中查找它们表。当我搜索如何做到这一点时,我找到的几乎所有帮助都引用了Function.cs文件中的上下文对象。但无服务器应用程序没有function.cs文件。无服务器应用程序具有以下文件: - LambdaEntryPoint.cs - Startup.cs - NameOfYourChoiceController.cs
这些文件(类)都不能访问上下文对象。上周所有人都可以访问一位在AWS方面经验丰富但没有.NET经验的顾问。我们永远无法确定如何访问ID令牌。我希望这里有人可以提供帮助。
TIA, DAR
答案 0 :(得分:0)
HttpContext.User 是您要获取Cognito信息的内容
它在2.0增加。 Changelog
Amazon.Lambda.AspNetCoreServer(2.0.0)
- 如果发现Cognito声明 传入的API网关请求创建一个ClaimsPrincipal 声称HttpContext.User。
您还可以查看source code
我花了一段时间才弄明白;)
示例用法
[HttpGet]
public void SomeMethod()
{
var x = HttpContext.User;
var y = x?.Claims;
LambdaLogger.Log(y);
}