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):
|
||||
@wraps(fn)
|
||||
def wrapper(*args, **kwargs):
|
||||
print(API_AUTH_DISABLED)
|
||||
if not API_AUTH_DISABLED:
|
||||
header = request.headers.get("Authorization", "")
|
||||
if not header.startswith("Bearer "):
|
||||
@@ -30,6 +29,9 @@ def require_token(fn):
|
||||
_abort_401("invalid_token")
|
||||
if row["revoked_at"] is not None:
|
||||
_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"]
|
||||
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.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