JSON-RPC & Hello World
JSON-RPC & Hello World
Αυτό το παράδειγμα δημιουργεί ένα απλό API endpoint που συνδέεται με έναν χρήστη της βάσης δεδομένων. Παρουσιάζονται δύο προσεγγίσεις αυθεντικοποίησης: η κλασική ροή JWT και η απλούστερη ροή απευθείας διαπιστευτηρίων.
1. Δημιουργία Χρήστη και Συνάρτησης
Στη βάση δεδομένων σας (my_database):
-- 1. Create a user who will log in to the API
CREATE ROLE demo_user WITH LOGIN PASSWORD 'user_password';
GRANT USAGE ON SCHEMA api TO demo_user;
-- 2. Create the Hello World function
-- Input: empty jsonb, Output: json
CREATE OR REPLACE FUNCTION api.hello_world(payload jsonb)
RETURNS json
LANGUAGE sql
AS $$
SELECT '"Hello World"'::json;
$$;
-- 3. Grant permission to the user
GRANT EXECUTE ON FUNCTION api.hello_world(jsonb) TO demo_user;Επιλέξτε την Επιλογή Α (JWT) για συνεδρίες μέσω browser ή τελικού χρήστη. Επιλέξτε την Επιλογή Β (απευθείας διαπιστευτήρια) για τοπική ανάπτυξη, scripts, ή εσωτερικές υπηρεσίες — δεν απαιτείται διαχείριση token.
Επιλογή Α: Ροή JWT Token
Η αυθεντικοποίηση JWT απαιτεί ο χρήστης συστήματος του PgArachne (pgarachne) να μπορεί να αλλάξει
στον demo_user:
-- Required for JWT auth only: allow PgArachne to switch to demo_user
GRANT demo_user TO pgarachne;Βήμα 1 — Απόκτηση ενός JWT
Καλέστε τη μέθοδο JSON-RPC get_jwt με τα διαπιστευτήρια του χρήστη:
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"get_jwt","params":{"login":"demo_user","password":"user_password"},"id":1}'Απάντηση:
{"jsonrpc":"2.0","result":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"id":1}Βήμα 2 — Κλήση της Συνάρτησης
Χρησιμοποιήστε το JWT στην κεφαλίδα Authorization:
export TOKEN="YOUR_JWT_TOKEN_HERE"
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"api.hello_world","params":{},"id":1}'Απάντηση:
{"jsonrpc":"2.0","result":"Hello World","id":1}Επιλογή Β: Απευθείας Διαπιστευτήρια (Χωρίς JWT)
Στείλτε το όνομα χρήστη και τον κωδικό πρόσβασης του PostgreSQL απευθείας με κάθε αίτημα χρησιμοποιώντας HTTP Basic
Authentication. Το PgArachne ανοίγει ένα connection pool ως αυτός ο χρήστης — δεν απαιτείται
GRANT … TO pgarachne.
curl -X POST http://localhost:8080/db/my_database/jsonrpc \
-u demo_user:user_password \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"api.hello_world","params":{},"id":1}'Απάντηση:
{"jsonrpc":"2.0","result":"Hello World","id":1}Η σημαία -u user:password στο curl ορίζει αυτόματα την κεφαλίδα
Authorization: Basic …. Και οι δύο επιλογές παράγουν ταυτόσημες απαντήσεις.
Δείτε Ασφάλεια & Αυθεντικοποίηση — Απευθείας Διαπιστευτήρια για μια πλήρη σύγκριση όλων των μεθόδων αυθεντικοποίησης.