Integrar cognito con azure AD
Uno de los problemas que te podrías encontrar a la hora de incursionar y configurar las integraciones externas como SAML con azure AD, es que es muy complejo y tienes que navegar entre diferentes pantallas para poder configurar lo que dice la documentación oficial de cognitivo.
Bueno vamos a crear una plantilla de CloudFormation para que nos configure cognito automáticamente.
- Creamos en azure una aplicación empresarial
2. Seleccionamos saml
urn:amazon:cognito:sp:<yourUserPoolID>
URL de respuesta. La URL de respuesta es desde donde la aplicación espera recibir el token de autenticación. Esto también se conoce como el "Servicio al consumidor de afirmaciones" (ACS) en SAML.
Debe seguir el patrón:
https://<yourDomainPrefix>.auth.<yourRegion>.amazoncognito.com/saml2/idpresponse
Ejemplo de identificador y URL de respuesta:
Identificador: urn: amazon: cognito: sp: us-east-1_XX123xxXXX
URL de respuesta:
https://example-setup-app.auth.us-east-1.amazoncognito.com/saml2/idpresponse
Plantilla de terraform
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: federation saml Azure AD
Parameters:
PoolID:
Type: String
Default: "us-xxx-2_xxx"
DomainCognito:
Type: String
Default: "my-test-usernleguizamon"
DefaultRedirectURI:
Type: String
Default: "http://localhost:4200/"
CallbackURLsApps:
Type: CommaDelimitedList
Description: "CallbackURLs applications "
Default: "http://localhost:4200/,http://localhost:3000"
LogoutURLsApps:
Type: CommaDelimitedList
Description: "LogoutURLs applications "
Default: "http://localhost:4200/logout,http://localhost:3000/logout"
MetadataURLAzureAD:
Type: String
Default: ""
Resources:
clientAppauth:
Type: AWS::Cognito::UserPoolClient
Properties:
UserPoolId: !Ref PoolID
RefreshTokenValidity: 1
AccessTokenValidity: 1
IdTokenValidity: 1
TokenValidityUnits:
AccessToken: "days"
IdToken: "days"
RefreshToken: "days"
GenerateSecret: true
CallbackURLs: !Ref CallbackURLsApps
DefaultRedirectURI: !Ref DefaultRedirectURI
LogoutURLs: !Ref LogoutURLsApps
AllowedOAuthFlowsUserPoolClient: true
EnableTokenRevocation: true
SupportedIdentityProviders:
- !Ref UserPoolIdentityProvider
AllowedOAuthFlows:
- implicit
#- code
#- client_credentials
AllowedOAuthScopes:
- phone
- email
- openid
- profile
ReadAttributes:
- address
- nickname
- birthdate
- phone_number
- email
- phone_number_verified
- email_verified
- picture
- family_name
- preferred_username
- gender
- profile
- given_name
- zoneinfo
- locale
- updated_at
- middle_name
- website
- name
UserPoolIdentityProvider:
Type: AWS::Cognito::UserPoolIdentityProvider
Properties:
UserPoolId: !Ref PoolID
ProviderName: "demo"
ProviderDetails:
MetadataURL: !Ref MetadataURLAzureAD
IDPSignout: true
ProviderType: "SAML"
AttributeMapping:
# parameterCognito : Pramentros
"email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
"email_verified": "stage"
#"custom:groups": "groups"
"family_name": "familyName"
IdpIdentifiers:
- "demo"
UserPoolDomain:
Type: AWS::Cognito::UserPoolDomain
Properties:
UserPoolId: !Ref PoolID
Domain: !Ref DomainCognito
Referencia: