Контекст
Я переписываю приложение ASP.NET Core, которое запускается на лямбде для запуска на контейнере ECS.Lambda поддерживает утверждения, введенные из Cognito Authorizer, из коробки, а Kestrel - нет.
Запросы API поступают через API-шлюз, где авторизатор Cognito User Pool проверяет токены OAuth2 и обогащает утверждения изтокен для httpContext.
Первоначально приложение работало на лямбда-узле, где точка входа наследовала Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
, что извлекает эти утверждения и добавляет их к Request.HttpContext.User.Claims
.
Kestrel, конечноне поддерживает это, и AWS ASPNET Cognito Identity Provider , похоже, предназначен для выполнения тех же действий, что и авторизатор.
Решение?
Итак, я получилИдея, что, возможно, я могу добавить собственный код для его извлечения.HTTP-запрос, введенный в лямбду, выглядит следующим образом, поэтому я ожидаю, что он должен быть таким же, когда он проксируется в ECS
{
"resource": "/{proxy+}",
"path": "/api/authtest",
"httpMethod": "GET",
"headers": {
<...>
},
"queryStringParameters": null,
"pathParameters": {
"proxy": "api/authtest"
},
"requestContext": {
"resourceId": "8gffya",
"authorizer": {
"cognito:groups": "Admin",
"phone_number_verified": "true",
"cognito:username": "normj",
"aud": "3mushfc8sgm8uoacvif5vhkt49",
"event_id": "75760f58-f984-11e7-8d4a-2389efc50d68",
"token_use": "id",
"auth_time": "1515973296",
"you_are_special": "true"
}
<...>
}
Возможно ли это, и как я могу добавить все ключ / значениепары от requestContext.authorizer
до Request.HttpContext.User.Claims
?