374 lines
11 KiB
JSON
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"
|
|
]
|
|
}
|