Roger Rajaratnam
03/01/2021, 6:17 PMFrank
Roger Rajaratnam
03/01/2021, 7:06 PMRoger Rajaratnam
03/01/2021, 7:07 PMFrank
Roger Rajaratnam
03/01/2021, 7:08 PMRoger Rajaratnam
03/01/2021, 7:08 PMFrank
Roger Rajaratnam
03/01/2021, 7:55 PMFrank
MAURICIO VALDIVIA MONZON
03/01/2021, 8:40 PMFrank
Roger Rajaratnam
03/01/2021, 9:29 PMRoger Rajaratnam
03/01/2021, 9:34 PMFrank
Roger Rajaratnam
03/01/2021, 9:36 PMFrank
Roger Rajaratnam
03/01/2021, 9:36 PMFrank
Roger Rajaratnam
03/01/2021, 9:37 PMFrank
Frank
Frank
Roger Rajaratnam
03/01/2021, 9:40 PMRoger Rajaratnam
03/01/2021, 9:41 PMRoger Rajaratnam
03/01/2021, 9:49 PM"cognito:groups": "[Group2 Group1]",
Roger Rajaratnam
03/01/2021, 9:49 PMFrank
Frank
export async function main(event) {
console.log(event.requestContext.authorizer);
return {
statusCode: 200,
body: `Hello ${event.requestContext.authorizer.jwt.claims.sub}!`,
};
}
Roger Rajaratnam
03/01/2021, 10:01 PMRoger Rajaratnam
03/01/2021, 10:02 PMFrank
attachPermissionsForAuthUsers
Roger Rajaratnam
03/01/2021, 10:41 PMAn error occurred (InvalidParameterException) when calling the InitiateAuth operation: USER_PASSWORD_AUTH flow not enabled for this client
Roger Rajaratnam
03/01/2021, 10:41 PMFrank
Roger Rajaratnam
03/01/2021, 10:45 PM// Create auth provider
const auth = new sst.Auth(this, "Auth", {
cognito: {
signInAliases: { email: true },
},
});
Frank
import * as cdk from "@aws-cdk/core";
import * as cognito from "@aws-cdk/aws-cognito";
import * as apigAuthorizers from "@aws-cdk/aws-apigatewayv2-authorizers";
import * as sst from "@serverless-stack/resources";
export default class MyStack extends sst.Stack {
constructor(scope, id, props) {
super(scope, id, props);
// Create User Pool
const userPool = new cognito.UserPool(this, "UserPool", {
selfSignUpEnabled: true,
signInAliases: { email: true },
signInCaseSensitive: false,
});
// Create User Pool Client
const userPoolClient = new cognito.UserPoolClient(this, "UserPoolClient", {
userPool,
authFlows: { userPassword: true },
});
// Create Api
const api = new sst.Api(this, "Api", {
defaultAuthorizer: new apigAuthorizers.HttpUserPoolAuthorizer({
userPool,
userPoolClient,
}),
defaultAuthorizationType: sst.ApiAuthorizationType.NONE,
routes: {
"GET /private": "src/private.main",
"GET /public": {
function: "src/public.main",
},
},
});
// Show API endpoint in output
new cdk.CfnOutput(this, "ApiEndpoint", {
value: api.httpApi.apiEndpoint,
});
new cdk.CfnOutput(this, "UserPoolId", {
value: userPool.userPoolId,
});
new cdk.CfnOutput(this, "UserPoolClientId", {
value: userPoolClient.userPoolClientId,
});
}
}
Frank
sst.Auth
is currently designed for using the IAM, so it creates both a User Pool and an Identity PoolRoger Rajaratnam
03/01/2021, 10:51 PMFrank
Frank
authFlows: { userPassword: true },
Roger Rajaratnam
03/01/2021, 11:06 PM