Files
athletic-map-deploy/moldes/realm-do-tenant.json
T

374 lines
11 KiB
JSON

{
"realm": "{{REALM}}",
"enabled": true,
"displayName": "Athletic Map — {{TENANT}}",
"loginWithEmailAllowed": true,
"resetPasswordAllowed": true,
"rememberMe": true,
"bruteForceProtected": true,
"permanentLockout": false,
"failureFactor": 10,
"waitIncrementSeconds": 60,
"maxFailureWaitSeconds": 900,
"maxDeltaTimeSeconds": 43200,
"minimumQuickLoginWaitSeconds": 60,
"quickLoginCheckMilliSeconds": 1000,
"webAuthnPolicyPasswordlessPasskeysEnabled": true,
"webAuthnPolicyPasswordlessUserVerificationRequirement": "required",
"webAuthnPolicyPasswordlessRpEntityName": "Athletic Map",
"otpPolicyType": "totp",
"otpPolicyAlgorithm": "HmacSHA1",
"otpPolicyDigits": 6,
"otpPolicyPeriod": 30,
"otpPolicyLookAheadWindow": 1,
"otpPolicyCodeReusable": false,
"browserFlow": "browser-2fa-dono",
"authenticationFlows": [
{
"alias": "browser-2fa-dono",
"description": "Copia do browser padrao (26.7.5) com OTP obrigatorio para quem tem atm_admin",
"providerId": "basic-flow",
"topLevel": true,
"builtIn": false,
"authenticationExecutions": [
{
"requirement": "ALTERNATIVE",
"priority": 10,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-cookie"
},
{
"requirement": "DISABLED",
"priority": 20,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-spnego"
},
{
"requirement": "ALTERNATIVE",
"priority": 25,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "identity-provider-redirector"
},
{
"requirement": "ALTERNATIVE",
"priority": 30,
"userSetupAllowed": false,
"authenticatorFlow": true,
"flowAlias": "browser-2fa-dono-forms"
}
]
},
{
"alias": "browser-2fa-dono-forms",
"description": "Usuario e senha (ou passkey), e o segundo fator",
"providerId": "basic-flow",
"topLevel": false,
"builtIn": false,
"authenticationExecutions": [
{
"requirement": "REQUIRED",
"priority": 10,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-username-password-form"
},
{
"requirement": "CONDITIONAL",
"priority": 20,
"userSetupAllowed": false,
"authenticatorFlow": true,
"flowAlias": "browser-2fa-dono-otp-obrigatorio"
},
{
"requirement": "CONDITIONAL",
"priority": 30,
"userSetupAllowed": false,
"authenticatorFlow": true,
"flowAlias": "browser-2fa-dono-2fa-opcional"
}
]
},
{
"alias": "browser-2fa-dono-otp-obrigatorio",
"description": "atm_admin: OTP obrigatorio (configura no 1o login); passkey dispensa",
"providerId": "basic-flow",
"topLevel": false,
"builtIn": false,
"authenticationExecutions": [
{
"requirement": "REQUIRED",
"priority": 10,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "conditional-user-role",
"authenticatorConfig": "2fa-dono-papel-atm-admin"
},
{
"requirement": "REQUIRED",
"priority": 20,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "conditional-credential",
"authenticatorConfig": "2fa-dono-sem-passkey"
},
{
"requirement": "REQUIRED",
"priority": 30,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-otp-form"
}
]
},
{
"alias": "browser-2fa-dono-2fa-opcional",
"description": "Os demais: como o padrao (2FA so de quem configurou)",
"providerId": "basic-flow",
"topLevel": false,
"builtIn": false,
"authenticationExecutions": [
{
"requirement": "REQUIRED",
"priority": 10,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "conditional-user-configured"
},
{
"requirement": "REQUIRED",
"priority": 20,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "conditional-credential",
"authenticatorConfig": "2fa-opcional-sem-passkey"
},
{
"requirement": "REQUIRED",
"priority": 30,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "conditional-user-role",
"authenticatorConfig": "2fa-opcional-nao-dono"
},
{
"requirement": "ALTERNATIVE",
"priority": 40,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-otp-form"
},
{
"requirement": "DISABLED",
"priority": 50,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "webauthn-authenticator"
},
{
"requirement": "DISABLED",
"priority": 60,
"userSetupAllowed": false,
"authenticatorFlow": false,
"authenticator": "auth-recovery-authn-code-form"
}
]
}
],
"authenticatorConfig": [
{
"alias": "2fa-dono-papel-atm-admin",
"config": {
"condUserRole": "atm_admin",
"negate": "false"
}
},
{
"alias": "2fa-dono-sem-passkey",
"config": {
"credentials": "webauthn-passwordless",
"included": "false"
}
},
{
"alias": "2fa-opcional-sem-passkey",
"config": {
"credentials": "webauthn-passwordless",
"included": "false"
}
},
{
"alias": "2fa-opcional-nao-dono",
"config": {
"condUserRole": "atm_admin",
"negate": "true"
}
}
],
"roles": {
"realm": [
{
"name": "admin"
},
{
"name": "atm_athlete"
},
{
"name": "atm_trainer"
},
{
"name": "atm_team_admin"
},
{
"name": "atm_admin"
},
{
"name": "atm_cadastro"
},
{
"name": "atm_financeiro"
},
{
"name": "atm_financeiro-leitura"
},
{
"name": "atm_responsavel",
"description": "Responsavel legal (pai, mae ou outro): app dos pais e o portal web. Dado pelo cadastro ao marcar o acompanhante como responsavel (06/10/2026)."
}
]
},
"clients": [
{
"clientId": "spa",
"name": "Athletic Map SPA",
"publicClient": true,
"protocol": "openid-connect",
"standardFlowEnabled": true,
"implicitFlowEnabled": false,
"directAccessGrantsEnabled": false,
"redirectUris": [
"https://{{TENANT}}.athleticmap.com/*"
],
"webOrigins": [
"https://{{TENANT}}.athleticmap.com"
],
"attributes": {
"pkce.code.challenge.method": "S256",
"post.logout.redirect.uris": "https://{{TENANT}}.athleticmap.com/*"
},
"protocolMappers": [
{
"name": "funcionario_id",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-attribute-mapper",
"consentRequired": false,
"config": {
"user.attribute": "funcionario_id",
"claim.name": "funcionario_id",
"jsonType.label": "String",
"id.token.claim": "true",
"access.token.claim": "true",
"userinfo.token.claim": "true"
}
},
{
"name": "acompanhante_id",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-attribute-mapper",
"consentRequired": false,
"config": {
"user.attribute": "acompanhante_id",
"claim.name": "acompanhante_id",
"jsonType.label": "String",
"id.token.claim": "true",
"access.token.claim": "true",
"userinfo.token.claim": "true"
}
}
]
},
{
"clientId": "app",
"name": "Athletic Map App (mobile)",
"publicClient": true,
"protocol": "openid-connect",
"standardFlowEnabled": true,
"implicitFlowEnabled": false,
"directAccessGrantsEnabled": false,
"redirectUris": [
"com.athleticmap.app:/oauthredirect",
"com.athleticmap.treinador:/oauthredirect",
"com.athleticmap.dono:/oauthredirect",
"com.athleticmap.pais:/oauthredirect",
"http://127.0.0.1:8765/oauthredirect",
"http://localhost:8765/oauthredirect",
"https://{{TENANT}}.athleticmap.com/app/callback"
],
"webOrigins": [
"https://{{TENANT}}.athleticmap.com",
"http://127.0.0.1:8765",
"http://localhost:8765"
],
"attributes": {
"pkce.code.challenge.method": "S256",
"post.logout.redirect.uris": "com.athleticmap.app:/oauthredirect##com.athleticmap.treinador:/oauthredirect##com.athleticmap.dono:/oauthredirect##com.athleticmap.pais:/oauthredirect##http://127.0.0.1:8765/oauthredirect##http://localhost:8765/oauthredirect##https://{{TENANT}}.athleticmap.com/app/callback"
},
"protocolMappers": [
{
"name": "funcionario_id",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-attribute-mapper",
"consentRequired": false,
"config": {
"user.attribute": "funcionario_id",
"claim.name": "funcionario_id",
"jsonType.label": "String",
"id.token.claim": "true",
"access.token.claim": "true",
"userinfo.token.claim": "true"
}
},
{
"name": "acompanhante_id",
"protocol": "openid-connect",
"protocolMapper": "oidc-usermodel-attribute-mapper",
"consentRequired": false,
"config": {
"user.attribute": "acompanhante_id",
"claim.name": "acompanhante_id",
"jsonType.label": "String",
"id.token.claim": "true",
"access.token.claim": "true",
"userinfo.token.claim": "true"
}
}
]
}
],
"attributes": {
"frontendUrl": "https://auth.athleticmap.com"
},
"smtpServer": {
"host": "{{SMTP_HOST}}",
"port": "{{SMTP_PORTA}}",
"from": "{{SMTP_REMETENTE}}",
"fromDisplayName": "Athletic Map",
"replyTo": "{{SMTP_RESPONDER_PARA}}",
"replyToDisplayName": "Athletic Map",
"auth": "{{SMTP_AUTH}}",
"user": "{{SMTP_USUARIO}}",
"password": "{{SMTP_SENHA}}",
"starttls": "{{SMTP_STARTTLS}}",
"ssl": "false"
},
"loginTheme": "athleticmap-v2",
"emailTheme": "athleticmap-v2",
"internationalizationEnabled": true,
"defaultLocale": "pt-BR",
"supportedLocales": [
"pt-BR"
]
}