feat(mcp): l'API REST refuse les jetons kind=mcp (scope B #111)
This commit is contained in:
+3
-1
@@ -16,7 +16,6 @@ def _abort_401(message: str):
|
|||||||
def require_token(fn):
|
def require_token(fn):
|
||||||
@wraps(fn)
|
@wraps(fn)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
print(API_AUTH_DISABLED)
|
|
||||||
if not API_AUTH_DISABLED:
|
if not API_AUTH_DISABLED:
|
||||||
header = request.headers.get("Authorization", "")
|
header = request.headers.get("Authorization", "")
|
||||||
if not header.startswith("Bearer "):
|
if not header.startswith("Bearer "):
|
||||||
@@ -30,6 +29,9 @@ def require_token(fn):
|
|||||||
_abort_401("invalid_token")
|
_abort_401("invalid_token")
|
||||||
if row["revoked_at"] is not None:
|
if row["revoked_at"] is not None:
|
||||||
_abort_401("revoked_token")
|
_abort_401("revoked_token")
|
||||||
|
if row["kind"] == "mcp":
|
||||||
|
# jeton dédié MCP : non valable sur l'API REST
|
||||||
|
_abort_401("invalid_token")
|
||||||
g.token_id = row["id"]
|
g.token_id = row["id"]
|
||||||
return fn(*args, **kwargs)
|
return fn(*args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
@@ -57,3 +57,22 @@ def test_valid_token_sets_g_and_calls_view(temp_db):
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert resp.get_json()["token_id"] == token_id
|
assert resp.get_json()["token_id"] == token_id
|
||||||
|
|
||||||
|
|
||||||
|
def test_mcp_kind_token_rejected_by_rest_api(temp_db):
|
||||||
|
token, _ = tokens_db.create_token(temp_db, "x", user_id=1, kind="mcp")
|
||||||
|
app = _make_app()
|
||||||
|
resp = app.test_client().get(
|
||||||
|
"/protected", headers={"Authorization": f"Bearer {token}"}
|
||||||
|
)
|
||||||
|
assert resp.status_code == 401
|
||||||
|
assert resp.get_json()["message"] == "invalid_token"
|
||||||
|
|
||||||
|
|
||||||
|
def test_api_kind_token_accepted_by_rest_api(temp_db):
|
||||||
|
token, _ = tokens_db.create_token(temp_db, "x", kind="api")
|
||||||
|
app = _make_app()
|
||||||
|
resp = app.test_client().get(
|
||||||
|
"/protected", headers={"Authorization": f"Bearer {token}"}
|
||||||
|
)
|
||||||
|
assert resp.status_code == 200
|
||||||
|
|||||||
Reference in New Issue
Block a user