Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2579ec610e | ||
|
|
5180c31b6c |
@@ -9,10 +9,9 @@ Ce module n'autorise donc que :
|
||||
- le chemin ``/api/search`` (jamais les autres routes, jamais les
|
||||
écritures) ;
|
||||
- les origines sœurs : les origines officielles **prod ET dev,
|
||||
listées explicitement** (``PROD_ORIGINS | DEV_ORIGINS``), **plus
|
||||
les origines de la console Spark** (``AGENT_ORIGINS`` : agent prod
|
||||
ET dev — fédération de la recherche depuis la console,
|
||||
2026-10-28), **plus**
|
||||
listées explicitement** (``PROD_ORIGINS | DEV_ORIGINS``), **plus**
|
||||
les origines du service d'agents (``AGENT_ORIGINS`` : console
|
||||
Spark prod ET dev — fédération console, défaut 2), **plus**
|
||||
celles de ``backend.draco_config`` (``urls_publiques()`` :
|
||||
explicite > dérivation par l'hôte de l'agent > défaut officiel)
|
||||
— jamais ``*``. Correctif 2026-10-28 (fusion #68/#69, matrice
|
||||
@@ -51,13 +50,15 @@ DEV_ORIGINS = frozenset({
|
||||
"https://tiktak-dev.dracodev.net",
|
||||
"https://kanbante-dev.dracodev.net",
|
||||
})
|
||||
|
||||
# Origines du service d'agents (console Spark) : la page de
|
||||
# recherche de la console appelle /api/search depuis le navigateur
|
||||
# avec le cookie SSO — sans ces deux origines, le navigateur refuse
|
||||
# la lecture (fédération console, défaut 2). Jamais "*".
|
||||
AGENT_ORIGINS = frozenset({
|
||||
"https://agent.dracodev.net",
|
||||
"https://agent-dev.dracodev.net",
|
||||
})
|
||||
|
||||
|
||||
# Clés de draco_config.urls_publiques() qui sont des applications sœurs.
|
||||
_SOEUR_KEYS = ("obsigate", "flowdeck", "tiktak", "kanbante")
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ def test_origin_of():
|
||||
|
||||
|
||||
def test_sister_origins_dev():
|
||||
# Correctif 2026-10-28 : 10 origines officielles (8 sœurs + 2 agent), prod ET dev,
|
||||
# Correctif 2026-10-28 : 8 origines officielles, prod ET dev,
|
||||
# quelle que soit la résolution.
|
||||
assert sister_origins(RESOLVED_DEV) == {
|
||||
"https://og.dracodev.net",
|
||||
@@ -54,19 +54,6 @@ def test_sister_origins_dev():
|
||||
}
|
||||
|
||||
|
||||
|
||||
def test_cors_headers_agent_console_autorise():
|
||||
# Fédération depuis la console (2026-10-28) : les origines agent
|
||||
# prod ET dev passent, avec credentials ; un tiers reste refusé.
|
||||
for origine in ("https://agent.dracodev.net",
|
||||
"https://agent-dev.dracodev.net"):
|
||||
headers = cors_headers_for(origine, RESOLVED_DEV)
|
||||
assert headers is not None
|
||||
assert headers["Access-Control-Allow-Origin"] == origine
|
||||
assert headers["Access-Control-Allow-Credentials"] == "true"
|
||||
assert cors_headers_for("https://agent.dracodev.net.evil.example",
|
||||
RESOLVED_DEV) is None
|
||||
|
||||
def test_sister_origins_ajoute_env_de_la_requete():
|
||||
# Correctif 2026-10-28 : configuration muette, quel que soit
|
||||
# l'hôte de la requête, prod ET dev passent — l'hôte ne
|
||||
@@ -98,3 +85,22 @@ def test_preflight_headers():
|
||||
headers = preflight_headers("https://flowdeck-dev.dracodev.net", RESOLVED_DEV)
|
||||
assert headers["Access-Control-Allow-Methods"] == "GET, OPTIONS"
|
||||
assert preflight_headers("https://evil.example", RESOLVED_DEV) is None
|
||||
|
||||
|
||||
def test_origines_agent_console():
|
||||
# Fédération console (défaut 2) : la page de recherche de la
|
||||
# console appelle /api/search depuis agent(. -dev) avec le
|
||||
# cookie SSO — ces deux origines passent, prod ET dev, quelle
|
||||
# que soit la résolution ; un tiers reste refusé.
|
||||
assert cors_headers_for(
|
||||
"https://agent.dracodev.net", RESOLVED_DEV) is not None
|
||||
assert cors_headers_for(
|
||||
"https://agent-dev.dracodev.net", {}) is not None
|
||||
assert cors_headers_for(
|
||||
"https://agent.dracodev.net",
|
||||
RESOLVED_DEV)["Access-Control-Allow-Credentials"] == "true"
|
||||
assert preflight_headers(
|
||||
"https://agent-dev.dracodev.net", RESOLVED_DEV) is not None
|
||||
assert "https://agent.dracodev.net" in sister_origins({})
|
||||
assert "https://agent-dev.dracodev.net" in sister_origins({})
|
||||
assert "https://agent-dev.dracodev.net" in sister_origins()
|
||||
|
||||
Reference in New Issue
Block a user