Я создал приложение ASP .Net Core, которое выполняет аутентификацию по Cognito.
Мой контроллер аутентификации выглядит так:
public class AuthenticationController : Controller
{
[HttpPost]
[Route("api/signin")]
public async Task<ActionResult<string>> SignIn(User user)
{
var cognito = new AmazonCognitoIdentityProviderClient(RegionEndpoint.APSoutheast2);
var request = new AdminInitiateAuthRequest
{
UserPoolId = "ap-southeast-2_mypoolid",
ClientId = "myclientid",
AuthFlow = AuthFlowType.ADMIN_USER_PASSWORD_AUTH
};
request.AuthParameters.Add("USERNAME", user.Username);
request.AuthParameters.Add("PASSWORD", user.Password);
var response = await cognito.AdminInitiateAuthAsync(request);
return Ok(response.AuthenticationResult);
}
}
Startup.ConfigureServices выглядит так:
services.AddAuthentication("Bearer")
.AddJwtBearer(options =>
{
options.Audience = "client key";
options.Authority = "https://cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-poolid";
});
Я включил это на случай, если это что-то, что я сделал выше.
Мои токены на предъявителя работают нормально. Я авторизуюсь против Cognito и получаю токены доступа / идентификатора / обновления. Поскольку я новичок в Cognito и AWS в целом и из любопытства, я запустил свои токены на https://jwt.io/ и обнаружил, что они содержат мои poolId и clientId. У меня сложилось впечатление, что их нужно спрятать с максимальной безопасностью.
Это нормально или я что-то сделал? Я чувствую, что, может быть, это не следует так легко разоблачать?