moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# OAuth 2.0 State Parameters
|
|
2
|
+
|
|
3
|
+
Module: moai-platform-auth0/modules/state-parameters.md
|
|
4
|
+
Version: 1.0.0
|
|
5
|
+
Last Updated: 2025-12-24
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
The OAuth 2.0 state parameter is a critical security mechanism that protects against Cross-Site Request Forgery (CSRF) attacks and enables post-authentication redirect handling. Proper implementation of state parameters is essential for secure authentication flows.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## CSRF Protection
|
|
16
|
+
|
|
17
|
+
### Primary Purpose
|
|
18
|
+
|
|
19
|
+
The primary reason for using the state parameter is to mitigate CSRF attacks by using a unique and non-guessable value associated with each authentication request.
|
|
20
|
+
|
|
21
|
+
### How CSRF Attacks Work
|
|
22
|
+
|
|
23
|
+
Attacker Scenario: An attacker tricks a user's browser into making an authentication request without the user's knowledge.
|
|
24
|
+
|
|
25
|
+
Without State Parameter: The application cannot distinguish between legitimate and forged authentication responses.
|
|
26
|
+
|
|
27
|
+
With State Parameter: The application can verify that the response corresponds to a request it initiated.
|
|
28
|
+
|
|
29
|
+
### Implementation Process
|
|
30
|
+
|
|
31
|
+
Step 1 - Generate Random String: Before redirecting to the Identity Provider, generate a cryptographically secure random string (for example, xyzABC123).
|
|
32
|
+
|
|
33
|
+
Step 2 - Store Locally: Store the generated value in cookies, sessions, or local storage depending on application type.
|
|
34
|
+
|
|
35
|
+
Step 3 - Include in Request: Add the state parameter to the authorization request URL.
|
|
36
|
+
|
|
37
|
+
Step 4 - Validate on Return: When receiving the authentication response, compare the returned state value with the stored value.
|
|
38
|
+
|
|
39
|
+
### Validation Logic
|
|
40
|
+
|
|
41
|
+
If the returned state matches the stored value: The response is legitimate, proceed with authentication.
|
|
42
|
+
|
|
43
|
+
If the returned state does not match: You may be the target of an attack because this is either a response for an unsolicited request or someone trying to forge the response. Reject the authentication attempt.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Redirect Users Post-Authentication
|
|
48
|
+
|
|
49
|
+
### Context Preservation
|
|
50
|
+
|
|
51
|
+
The state parameter can preserve application context across the authentication flow.
|
|
52
|
+
|
|
53
|
+
Use Case: User attempts to access a protected resource, gets redirected to authenticate, and should return to the original resource after authentication.
|
|
54
|
+
|
|
55
|
+
### Implementation
|
|
56
|
+
|
|
57
|
+
Encode Information: Include the intended destination URL alongside the nonce in the state parameter.
|
|
58
|
+
|
|
59
|
+
After Validation: Extract the destination URL from the state and redirect the user accordingly.
|
|
60
|
+
|
|
61
|
+
Example Structure: The state value might contain both a random nonce and an encoded destination path.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Storage Recommendations
|
|
66
|
+
|
|
67
|
+
Storage method depends on application type:
|
|
68
|
+
|
|
69
|
+
Regular Web Applications: Use server-side session storage or signed cookies.
|
|
70
|
+
|
|
71
|
+
Single-Page Applications: Use browser local storage with appropriate security measures.
|
|
72
|
+
|
|
73
|
+
Native Applications: Use device memory or secure local storage.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Security Requirements
|
|
78
|
+
|
|
79
|
+
### State Value Characteristics
|
|
80
|
+
|
|
81
|
+
Uniqueness: Each authentication request must have a unique state value.
|
|
82
|
+
|
|
83
|
+
Opacity: State values should not be predictable or guessable.
|
|
84
|
+
|
|
85
|
+
Sufficient Entropy: Use cryptographically secure random number generators.
|
|
86
|
+
|
|
87
|
+
### Cookie-Based Storage Security
|
|
88
|
+
|
|
89
|
+
Signed Cookies: When storing state in cookies, sign the cookie to prevent tampering.
|
|
90
|
+
|
|
91
|
+
HttpOnly: Consider HttpOnly flag to prevent JavaScript access.
|
|
92
|
+
|
|
93
|
+
Secure: Use Secure flag to ensure transmission only over HTTPS.
|
|
94
|
+
|
|
95
|
+
SameSite: Configure SameSite attribute appropriately.
|
|
96
|
+
|
|
97
|
+
### URL Encoding Security
|
|
98
|
+
|
|
99
|
+
Avoid Plaintext: Do not use plaintext or predictable encoding for stored URLs.
|
|
100
|
+
|
|
101
|
+
Encryption: Consider encrypting sensitive redirect URLs.
|
|
102
|
+
|
|
103
|
+
Length Limits: Be aware that excessively long state values may trigger 414 Request-URI Too Large errors.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Implementation Examples
|
|
108
|
+
|
|
109
|
+
### Authorization Request
|
|
110
|
+
|
|
111
|
+
When constructing the authorization URL:
|
|
112
|
+
|
|
113
|
+
Include the state parameter with the generated random value.
|
|
114
|
+
|
|
115
|
+
Store the corresponding value locally before redirecting.
|
|
116
|
+
|
|
117
|
+
Ensure the state is URL-encoded if it contains special characters.
|
|
118
|
+
|
|
119
|
+
### Response Handling
|
|
120
|
+
|
|
121
|
+
When receiving the authorization response:
|
|
122
|
+
|
|
123
|
+
Extract the state parameter from the response.
|
|
124
|
+
|
|
125
|
+
Retrieve the stored state value.
|
|
126
|
+
|
|
127
|
+
Compare the values for exact match.
|
|
128
|
+
|
|
129
|
+
Only proceed if values match.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Common Mistakes to Avoid
|
|
134
|
+
|
|
135
|
+
Reusing State Values: Each authentication request needs a fresh state value.
|
|
136
|
+
|
|
137
|
+
Weak Random Generation: Use cryptographically secure random generators, not Math.random().
|
|
138
|
+
|
|
139
|
+
Not Validating State: Always validate the returned state, never skip this step.
|
|
140
|
+
|
|
141
|
+
Storing State Insecurely: Protect stored state values from unauthorized access.
|
|
142
|
+
|
|
143
|
+
Predictable Patterns: Avoid using timestamps or sequential numbers as state values.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Error Handling
|
|
148
|
+
|
|
149
|
+
### Missing State Parameter
|
|
150
|
+
|
|
151
|
+
If the authorization response lacks a state parameter but one was sent, treat as a potential attack.
|
|
152
|
+
|
|
153
|
+
### State Mismatch
|
|
154
|
+
|
|
155
|
+
Log the mismatch for security monitoring.
|
|
156
|
+
|
|
157
|
+
Do not complete the authentication.
|
|
158
|
+
|
|
159
|
+
Display an appropriate error message to the user.
|
|
160
|
+
|
|
161
|
+
Consider implementing rate limiting if mismatches occur frequently.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Related Modules
|
|
166
|
+
|
|
167
|
+
- attack-protection-overview.md: Overall attack protection strategy
|
|
168
|
+
- tokens-overview.md: Token security
|
|
169
|
+
- application-credentials.md: Application security
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Resources
|
|
174
|
+
|
|
175
|
+
Auth0 Documentation: State Parameter
|
|
176
|
+
Auth0 Documentation: Prevent Attacks with State Parameters
|
|
177
|
+
OAuth 2.0 RFC 6749: State Parameter Specification
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# Step-Up Authentication
|
|
2
|
+
|
|
3
|
+
Step-up authentication requires users to authenticate with stronger credentials when accessing sensitive resources, adding security without impacting the entire user experience.
|
|
4
|
+
|
|
5
|
+
## Concept
|
|
6
|
+
|
|
7
|
+
Step-up authentication allows applications to:
|
|
8
|
+
- Grant initial access with standard authentication
|
|
9
|
+
- Require additional verification for sensitive operations
|
|
10
|
+
- Dynamically elevate authentication level
|
|
11
|
+
- Protect high-risk transactions
|
|
12
|
+
|
|
13
|
+
## Use Cases
|
|
14
|
+
|
|
15
|
+
Financial Applications:
|
|
16
|
+
- View account balance: Standard login
|
|
17
|
+
- Transfer funds: Require MFA
|
|
18
|
+
- Change beneficiary: Require MFA + verification
|
|
19
|
+
|
|
20
|
+
Healthcare Applications:
|
|
21
|
+
- View appointments: Standard login
|
|
22
|
+
- Access medical records: Require MFA
|
|
23
|
+
- Download prescriptions: Require MFA
|
|
24
|
+
|
|
25
|
+
E-commerce Applications:
|
|
26
|
+
- Browse products: No authentication
|
|
27
|
+
- View order history: Standard login
|
|
28
|
+
- Change payment method: Require MFA
|
|
29
|
+
|
|
30
|
+
Administrative Applications:
|
|
31
|
+
- View dashboard: Standard login
|
|
32
|
+
- Modify user permissions: Require MFA
|
|
33
|
+
- Access audit logs: Require MFA
|
|
34
|
+
|
|
35
|
+
## Implementation Approaches
|
|
36
|
+
|
|
37
|
+
### API-Based Step-Up (Scopes)
|
|
38
|
+
|
|
39
|
+
For applications with API backends:
|
|
40
|
+
|
|
41
|
+
Mechanism:
|
|
42
|
+
- Map sensitive operations to specific scopes
|
|
43
|
+
- Include scope in access token requests
|
|
44
|
+
- API validates scope presence
|
|
45
|
+
- Trigger MFA when scope requires elevation
|
|
46
|
+
|
|
47
|
+
Flow:
|
|
48
|
+
1. User performs standard login
|
|
49
|
+
2. Access token contains basic scopes
|
|
50
|
+
3. User attempts sensitive operation
|
|
51
|
+
4. Application requests elevated scope
|
|
52
|
+
5. Auth0 triggers MFA challenge
|
|
53
|
+
6. User completes MFA
|
|
54
|
+
7. New access token contains elevated scope
|
|
55
|
+
8. API authorizes sensitive operation
|
|
56
|
+
|
|
57
|
+
Scope Examples:
|
|
58
|
+
- read:balance (standard)
|
|
59
|
+
- transfer:funds (requires MFA)
|
|
60
|
+
- admin:users (requires MFA)
|
|
61
|
+
|
|
62
|
+
### Web Application Step-Up (Token Claims)
|
|
63
|
+
|
|
64
|
+
For traditional web applications:
|
|
65
|
+
|
|
66
|
+
Mechanism:
|
|
67
|
+
- Verify authentication level through ID token claims
|
|
68
|
+
- Check for MFA completion in token
|
|
69
|
+
- Redirect to MFA if not present
|
|
70
|
+
- Grant access after verification
|
|
71
|
+
|
|
72
|
+
Claims to Check:
|
|
73
|
+
- acr (Authentication Context Class Reference)
|
|
74
|
+
- amr (Authentication Methods Reference)
|
|
75
|
+
- Custom claims set by Actions
|
|
76
|
+
|
|
77
|
+
Flow:
|
|
78
|
+
1. User performs standard login
|
|
79
|
+
2. ID token contains authentication claims
|
|
80
|
+
3. User navigates to sensitive page
|
|
81
|
+
4. Application checks token claims
|
|
82
|
+
5. If MFA not present, redirect to re-authentication
|
|
83
|
+
6. Auth0 prompts for MFA
|
|
84
|
+
7. New ID token contains MFA claims
|
|
85
|
+
8. Application grants access
|
|
86
|
+
|
|
87
|
+
## Implementation with Actions
|
|
88
|
+
|
|
89
|
+
### Triggering Step-Up
|
|
90
|
+
|
|
91
|
+
Use post-login Actions to enforce MFA for specific conditions:
|
|
92
|
+
|
|
93
|
+
Condition Examples:
|
|
94
|
+
- Specific scope requested
|
|
95
|
+
- Sensitive application accessed
|
|
96
|
+
- High-risk operation detected
|
|
97
|
+
- Elevated privilege requested
|
|
98
|
+
|
|
99
|
+
Action Logic:
|
|
100
|
+
- Check requested scopes
|
|
101
|
+
- Evaluate risk context
|
|
102
|
+
- Challenge with MFA if needed
|
|
103
|
+
- Add custom claims to tokens
|
|
104
|
+
|
|
105
|
+
### Custom Claims
|
|
106
|
+
|
|
107
|
+
Add claims indicating authentication strength:
|
|
108
|
+
- mfa_completed: boolean
|
|
109
|
+
- auth_level: numeric
|
|
110
|
+
- auth_methods: array
|
|
111
|
+
|
|
112
|
+
These claims enable applications to verify authentication status without additional API calls.
|
|
113
|
+
|
|
114
|
+
## Token Validation
|
|
115
|
+
|
|
116
|
+
### Access Token Validation
|
|
117
|
+
|
|
118
|
+
For API step-up:
|
|
119
|
+
- Validate token signature
|
|
120
|
+
- Check scope claims
|
|
121
|
+
- Verify audience
|
|
122
|
+
- Confirm token freshness
|
|
123
|
+
|
|
124
|
+
Scope Verification:
|
|
125
|
+
- Extract scope claim
|
|
126
|
+
- Check for required scope
|
|
127
|
+
- Deny if scope missing
|
|
128
|
+
- Consider scope hierarchies
|
|
129
|
+
|
|
130
|
+
### ID Token Validation
|
|
131
|
+
|
|
132
|
+
For web app step-up:
|
|
133
|
+
- Validate token signature
|
|
134
|
+
- Check authentication claims
|
|
135
|
+
- Verify token freshness
|
|
136
|
+
- Confirm claim values
|
|
137
|
+
|
|
138
|
+
Claim Verification:
|
|
139
|
+
- Extract acr/amr claims
|
|
140
|
+
- Check for MFA indicators
|
|
141
|
+
- Verify claim currency
|
|
142
|
+
- Deny if requirements not met
|
|
143
|
+
|
|
144
|
+
## Freshness Requirements
|
|
145
|
+
|
|
146
|
+
Token Age Considerations:
|
|
147
|
+
- Step-up may require fresh authentication
|
|
148
|
+
- Stale tokens may not reflect current context
|
|
149
|
+
- Consider max_age parameter for re-authentication
|
|
150
|
+
|
|
151
|
+
Implementing Freshness:
|
|
152
|
+
- Check iat (issued at) claim
|
|
153
|
+
- Require token issued within threshold
|
|
154
|
+
- Force re-authentication if too old
|
|
155
|
+
- Balance security with user experience
|
|
156
|
+
|
|
157
|
+
## User Experience
|
|
158
|
+
|
|
159
|
+
Seamless Step-Up:
|
|
160
|
+
- Clear explanation of why additional verification needed
|
|
161
|
+
- Quick MFA completion
|
|
162
|
+
- Return to original context after verification
|
|
163
|
+
- Remember step-up for session duration
|
|
164
|
+
|
|
165
|
+
Error Handling:
|
|
166
|
+
- Clear messages for MFA failures
|
|
167
|
+
- Fallback factor options
|
|
168
|
+
- Support contact information
|
|
169
|
+
- Graceful degradation
|
|
170
|
+
|
|
171
|
+
Session Management:
|
|
172
|
+
- Track step-up status in session
|
|
173
|
+
- Appropriate timeout for elevated sessions
|
|
174
|
+
- Clear elevation on logout
|
|
175
|
+
- Optional elevation expiry
|
|
176
|
+
|
|
177
|
+
## Security Considerations
|
|
178
|
+
|
|
179
|
+
Transaction Binding:
|
|
180
|
+
- Bind MFA to specific transaction
|
|
181
|
+
- Display transaction details during approval
|
|
182
|
+
- Prevent transaction manipulation
|
|
183
|
+
- Log transaction context
|
|
184
|
+
|
|
185
|
+
Rate Limiting:
|
|
186
|
+
- Limit step-up attempts
|
|
187
|
+
- Prevent MFA fatigue attacks
|
|
188
|
+
- Monitor unusual patterns
|
|
189
|
+
- Alert on suspicious activity
|
|
190
|
+
|
|
191
|
+
Scope Escalation Prevention:
|
|
192
|
+
- Validate scope transitions
|
|
193
|
+
- Prevent unauthorized elevation
|
|
194
|
+
- Audit scope requests
|
|
195
|
+
- Monitor privilege changes
|
|
196
|
+
|
|
197
|
+
## Best Practices
|
|
198
|
+
|
|
199
|
+
Scope Design:
|
|
200
|
+
- Clear scope hierarchy
|
|
201
|
+
- Consistent naming convention
|
|
202
|
+
- Documented scope requirements
|
|
203
|
+
- Regular scope review
|
|
204
|
+
|
|
205
|
+
User Communication:
|
|
206
|
+
- Explain step-up requirement
|
|
207
|
+
- Provide context for verification
|
|
208
|
+
- Offer help resources
|
|
209
|
+
- Consistent messaging
|
|
210
|
+
|
|
211
|
+
Implementation:
|
|
212
|
+
- Server-side enforcement
|
|
213
|
+
- Never trust client-only checks
|
|
214
|
+
- Comprehensive logging
|
|
215
|
+
- Regular security review
|
|
216
|
+
|
|
217
|
+
Testing:
|
|
218
|
+
- Test all step-up scenarios
|
|
219
|
+
- Verify scope enforcement
|
|
220
|
+
- Check error handling
|
|
221
|
+
- Validate token claims
|
|
222
|
+
|
|
223
|
+
## Example Scenarios
|
|
224
|
+
|
|
225
|
+
### Banking Step-Up
|
|
226
|
+
|
|
227
|
+
Initial Login:
|
|
228
|
+
- User logs in with password
|
|
229
|
+
- Receives basic access token
|
|
230
|
+
- Can view balances and statements
|
|
231
|
+
|
|
232
|
+
Fund Transfer:
|
|
233
|
+
- User initiates transfer
|
|
234
|
+
- Application requests transfer:funds scope
|
|
235
|
+
- Auth0 challenges with MFA
|
|
236
|
+
- User approves via Guardian
|
|
237
|
+
- Transfer completes
|
|
238
|
+
|
|
239
|
+
### Admin Console Step-Up
|
|
240
|
+
|
|
241
|
+
Initial Access:
|
|
242
|
+
- Admin logs in with SSO
|
|
243
|
+
- Can view dashboard and reports
|
|
244
|
+
- Basic admin privileges
|
|
245
|
+
|
|
246
|
+
User Management:
|
|
247
|
+
- Admin accesses user management
|
|
248
|
+
- System checks ID token claims
|
|
249
|
+
- MFA not present, redirects to step-up
|
|
250
|
+
- Admin completes MFA
|
|
251
|
+
- User management access granted
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Suspicious IP Throttling
|
|
2
|
+
|
|
3
|
+
Auth0 Suspicious IP Throttling automatically blocks traffic from IP addresses exhibiting high-velocity login or signup attempts, protecting against large-scale automated attacks.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
The system tracks login and signup attempt velocity per IP address. When an address exceeds configured thresholds, Auth0 throttles subsequent attempts by responding with HTTP 429 (Too Many Requests) status codes.
|
|
8
|
+
|
|
9
|
+
This protection is enabled by default on new tenants.
|
|
10
|
+
|
|
11
|
+
## Velocity Detection Mechanisms
|
|
12
|
+
|
|
13
|
+
### Login Attempt Tracking
|
|
14
|
+
|
|
15
|
+
Monitoring Period: Daily (24-hour rolling window)
|
|
16
|
+
|
|
17
|
+
Detection Logic:
|
|
18
|
+
- Counts failed login attempts per IP address
|
|
19
|
+
- Threshold based on total failures across all accounts
|
|
20
|
+
- Does not require targeting specific account
|
|
21
|
+
|
|
22
|
+
Throttling Behavior:
|
|
23
|
+
- Once threshold exceeded, throttling activates
|
|
24
|
+
- Allowed attempts distributed evenly across 24 hours
|
|
25
|
+
- Example: Throttling rate of 100 grants approximately one attempt every 15 minutes
|
|
26
|
+
|
|
27
|
+
### Signup Attempt Tracking
|
|
28
|
+
|
|
29
|
+
Monitoring Period: Per minute
|
|
30
|
+
|
|
31
|
+
Detection Logic:
|
|
32
|
+
- Counts all signup attempts (successful and failed)
|
|
33
|
+
- Threshold based on attempts within one-minute window
|
|
34
|
+
- Triggers on high-velocity account creation
|
|
35
|
+
|
|
36
|
+
Throttling Behavior:
|
|
37
|
+
- When limit exceeded, further signups blocked
|
|
38
|
+
- Throttling rate distributes attempts over 24 hours
|
|
39
|
+
- Example: Rate of 72,000 allows roughly one attempt per second
|
|
40
|
+
|
|
41
|
+
## Configuration
|
|
42
|
+
|
|
43
|
+
### Dashboard Navigation
|
|
44
|
+
|
|
45
|
+
Access: Dashboard > Security > Attack Protection > Suspicious IP Throttling
|
|
46
|
+
|
|
47
|
+
### Threshold Settings
|
|
48
|
+
|
|
49
|
+
Login Thresholds:
|
|
50
|
+
- Maximum failed login attempts per day
|
|
51
|
+
- Throttling rate (attempts allowed per 24 hours after blocking)
|
|
52
|
+
|
|
53
|
+
Signup Thresholds:
|
|
54
|
+
- Maximum signup attempts per minute
|
|
55
|
+
- Throttling rate for signup after blocking
|
|
56
|
+
|
|
57
|
+
### IP AllowList
|
|
58
|
+
|
|
59
|
+
Add trusted IP sources to exempt from throttling:
|
|
60
|
+
- Up to 100 IP addresses or CIDR ranges
|
|
61
|
+
- Useful for automated testing systems
|
|
62
|
+
- Protects known-good high-volume sources
|
|
63
|
+
|
|
64
|
+
### Response Configuration
|
|
65
|
+
|
|
66
|
+
Enable Traffic Limiting:
|
|
67
|
+
- Activates HTTP 429 responses
|
|
68
|
+
- Required for active protection
|
|
69
|
+
|
|
70
|
+
Administrator Notifications:
|
|
71
|
+
- Email alerts when thresholds exceeded
|
|
72
|
+
- Configurable notification settings
|
|
73
|
+
|
|
74
|
+
Monitoring Mode:
|
|
75
|
+
- Disable all response actions
|
|
76
|
+
- Events still logged
|
|
77
|
+
- Useful for threshold calibration
|
|
78
|
+
|
|
79
|
+
## HTTP 429 Response
|
|
80
|
+
|
|
81
|
+
When throttled, requests receive:
|
|
82
|
+
|
|
83
|
+
Status: 429 Too Many Requests
|
|
84
|
+
|
|
85
|
+
Response includes:
|
|
86
|
+
- Error description
|
|
87
|
+
- Retry-after guidance
|
|
88
|
+
- Rate limit information
|
|
89
|
+
|
|
90
|
+
Client Handling:
|
|
91
|
+
- Implement exponential backoff
|
|
92
|
+
- Display user-friendly message
|
|
93
|
+
- Avoid immediate retries
|
|
94
|
+
|
|
95
|
+
## Important Considerations
|
|
96
|
+
|
|
97
|
+
### What Does Not Count
|
|
98
|
+
|
|
99
|
+
These request types do not increment thresholds:
|
|
100
|
+
- Malformed requests
|
|
101
|
+
- Schema validation errors
|
|
102
|
+
- Requests from AllowListed IPs
|
|
103
|
+
- Successful authentications (for login tracking)
|
|
104
|
+
|
|
105
|
+
### Backend Applications
|
|
106
|
+
|
|
107
|
+
For Resource Owner Password Grant:
|
|
108
|
+
- Auth0 sees application server IP, not user IP
|
|
109
|
+
- Must manually pass client IP via auth0-forwarded-for header
|
|
110
|
+
- Without this, all users appear from same IP
|
|
111
|
+
|
|
112
|
+
Implementation:
|
|
113
|
+
- Extract client IP from X-Forwarded-For or similar
|
|
114
|
+
- Include in auth0-forwarded-for header
|
|
115
|
+
- Ensure proper IP extraction behind proxies
|
|
116
|
+
|
|
117
|
+
### Shared IP Environments
|
|
118
|
+
|
|
119
|
+
Organizations behind NAT or proxies:
|
|
120
|
+
- All users share same public IP
|
|
121
|
+
- More likely to trigger throttling
|
|
122
|
+
- Consider higher thresholds or AllowList
|
|
123
|
+
|
|
124
|
+
Mobile Networks:
|
|
125
|
+
- Carrier NAT shares IP across subscribers
|
|
126
|
+
- Geographic IP pools may appear suspicious
|
|
127
|
+
- Consider mobile-specific thresholds
|
|
128
|
+
|
|
129
|
+
## Monitoring and Metrics
|
|
130
|
+
|
|
131
|
+
### Security Center
|
|
132
|
+
|
|
133
|
+
Access: Dashboard > Security > Security Center
|
|
134
|
+
|
|
135
|
+
Available Metrics:
|
|
136
|
+
- Throttling events over time
|
|
137
|
+
- Top throttled IPs
|
|
138
|
+
- Geographic distribution
|
|
139
|
+
- Attack pattern analysis
|
|
140
|
+
|
|
141
|
+
### Tenant Logs
|
|
142
|
+
|
|
143
|
+
Event Types:
|
|
144
|
+
- Rate limit exceeded events
|
|
145
|
+
- Throttling trigger events
|
|
146
|
+
- IP blocking/unblocking
|
|
147
|
+
|
|
148
|
+
Log Details:
|
|
149
|
+
- Source IP address
|
|
150
|
+
- Attempt counts
|
|
151
|
+
- Threshold exceeded
|
|
152
|
+
- Action taken
|
|
153
|
+
|
|
154
|
+
## Integration with Attack Protection
|
|
155
|
+
|
|
156
|
+
Layered with Bot Detection:
|
|
157
|
+
- Bot detection evaluates request patterns
|
|
158
|
+
- Suspicious IP throttling evaluates velocity
|
|
159
|
+
- Both can trigger on same request
|
|
160
|
+
|
|
161
|
+
Layered with Brute Force Protection:
|
|
162
|
+
- Suspicious IP tracks across all accounts
|
|
163
|
+
- Brute force tracks per account per IP
|
|
164
|
+
- Different protection scopes
|
|
165
|
+
|
|
166
|
+
## Best Practices
|
|
167
|
+
|
|
168
|
+
### Initial Configuration
|
|
169
|
+
|
|
170
|
+
1. Enable in monitoring mode
|
|
171
|
+
2. Analyze baseline traffic patterns
|
|
172
|
+
3. Identify high-volume legitimate sources
|
|
173
|
+
4. Configure AllowList for trusted IPs
|
|
174
|
+
5. Enable throttling with conservative thresholds
|
|
175
|
+
6. Monitor false positive rate
|
|
176
|
+
7. Adjust thresholds based on data
|
|
177
|
+
|
|
178
|
+
### Threshold Selection
|
|
179
|
+
|
|
180
|
+
Conservative (More Protection):
|
|
181
|
+
- Lower thresholds
|
|
182
|
+
- Faster throttling response
|
|
183
|
+
- May impact legitimate high-volume users
|
|
184
|
+
|
|
185
|
+
Permissive (Better UX):
|
|
186
|
+
- Higher thresholds
|
|
187
|
+
- Allow more attempts before throttling
|
|
188
|
+
- Less protection against sophisticated attacks
|
|
189
|
+
|
|
190
|
+
### For Different Application Types
|
|
191
|
+
|
|
192
|
+
Consumer Applications:
|
|
193
|
+
- Moderate login threshold
|
|
194
|
+
- Higher signup threshold (organic growth periods)
|
|
195
|
+
- Monitor for registration spam
|
|
196
|
+
|
|
197
|
+
Enterprise Applications:
|
|
198
|
+
- Lower thresholds acceptable
|
|
199
|
+
- AllowList corporate IP ranges
|
|
200
|
+
- Integrate with enterprise identity providers
|
|
201
|
+
|
|
202
|
+
API-Heavy Applications:
|
|
203
|
+
- Higher thresholds for legitimate API usage
|
|
204
|
+
- AllowList application server IPs
|
|
205
|
+
- Ensure auth0-forwarded-for header implementation
|
|
206
|
+
|
|
207
|
+
### Ongoing Management
|
|
208
|
+
|
|
209
|
+
Regular Reviews:
|
|
210
|
+
- Check throttling events weekly
|
|
211
|
+
- Identify new legitimate high-volume sources
|
|
212
|
+
- Update AllowList as needed
|
|
213
|
+
|
|
214
|
+
Attack Response:
|
|
215
|
+
- Review attack patterns
|
|
216
|
+
- Adjust thresholds temporarily if needed
|
|
217
|
+
- Document attack characteristics
|
|
218
|
+
|
|
219
|
+
Threshold Tuning:
|
|
220
|
+
- Balance security with user experience
|
|
221
|
+
- Consider seasonal traffic variations
|
|
222
|
+
- Account for growth in user base
|
|
223
|
+
|
|
224
|
+
## Troubleshooting
|
|
225
|
+
|
|
226
|
+
Legitimate Traffic Throttled:
|
|
227
|
+
- Add IP to AllowList
|
|
228
|
+
- Increase thresholds
|
|
229
|
+
- Check for auth0-forwarded-for header issues
|
|
230
|
+
|
|
231
|
+
Throttling Not Triggering:
|
|
232
|
+
- Verify feature is enabled
|
|
233
|
+
- Check if IP is AllowListed
|
|
234
|
+
- Confirm threshold configuration
|
|
235
|
+
- Review request patterns
|
|
236
|
+
|
|
237
|
+
429 Errors Not Handled:
|
|
238
|
+
- Implement proper error handling in client
|
|
239
|
+
- Add retry logic with backoff
|
|
240
|
+
- Display appropriate user message
|