Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Έλεγχος ταυτότητας και OAuth
Κλειδιά API, OAuth 2.1 με PKCE (SMART on FHIR standalone launch), OpenID Connect id_token, SMART v2 πεδία ασθενούς, διάρκειες ζωής token και ο κύκλος ζωής συναίνεσης.
Η πλατφόρμα Anpheros δέχεται τρεις τύπους διαπιστευτηρίων. Κάθε αίτημα φέρει ακριβώς ένα.
| Διαπιστευτήριο | Μοιάζει με | Ποιος | Βλέπει |
|---|---|---|---|
| Κλειδί API | sk_test_… (sandbox) / sk_live_… (production) |
ο διακομιστής ενός project | τους ασθενείς που δημιούργησε το project (στο sandbox, συμπεριλαμβανομένου του δικού του αντιγράφου 30 συνθετικών ασθενών) |
| OAuth access token | at_… |
μια εφαρμογή που ενεργεί για έναν ασθενή υπό συναίνεση | μόνο αυτόν τον ασθενή, εντός των χορηγηθέντων SMART scopes |
| Firebase ID token | JWT | ένας προγραμματιστής στο dashboard, ή ένας ασθενής στο "Συνδέσεις" | τους δικούς του οργανισμούς / τα δικά του αρχεία |
Στείλτε το ως Authorization: Bearer <credential> (τα κλειδιά API λειτουργούν επίσης ως X-Api-Key).
Κλειδιά API
- Δημιουργούνται στον πίνακα ελέγχου ή μέσω
POST /admin/projects/{id}/keys· εμφανίζονται μία φορά· αποθηκεύονται ως κατακερματισμός SHA-256. - Εύρος (Scopes):
read,write. Ένα κλειδί δεν διασχίζει ποτέ το περιβάλλον του έργου του (τοsk_test_δεν μπορεί να φτάσει σε δεδομένα παραγωγής και αντίστροφα). - Το όριο ρυθμού ανά κλειδί (προεπιλογή 600/λεπτό) επιβάλλεται σε ολόκληρη την πλατφόρμα (κοινό κατάστημα), με
Retry-Afterσε 429. Υπάρχει επίσης όριο ανά IP 600/λεπτό. - Προαιρετικές κεφαλίδες σε εγγραφές (writes):
X-Anpheros-Author-Type,X-Anpheros-Author-Ref,X-Anpheros-Source-System,X-Anpheros-Origin-Id,X-Anpheros-Acting-As(ένας Practitioner/PractitionerRole του δικού σας καταλόγου),X-Anpheros-On-Behalf-Of(ένας Organization του δικού σας καταλόγου). Συμπληρώνουν το Provenance.
OAuth 2.1 (SMART on FHIR, αυτόνομη εκκίνηση)
Ανακάλυψη: GET /.well-known/smart-configuration.
GET /oauth/authorize?response_type=code&client_id=…&redirect_uri=…&scope=…&state=…&code_challenge=…&code_challenge_method=S256[&purpose=treatment][&patient=<pairwise id>][&lang=ro]Εμφανίζει την φιλοξενούμενη σελίδα συναίνεσης. Το PKCE S256 είναι υποχρεωτικό· τοredirect_uriπρέπει να είναι εγγεγραμμένο ακριβώς.- Ο ασθενής συνδέεται (Google ή email μέσω Firebase), επιλέγει τον φάκελο (δικό του ή εξαρτώμενου), τη διάρκεια (30/90/180/365 ημέρες) και επιτρέπει. Η πλατφόρμα εκδίδει έναν κωδικό μίας χρήσης (10 λεπτά).
POST /oauth/tokenμεgrant_type=authorization_code&code=…&code_verifier=…&redirect_uri=…&client_id=…(εμπιστευτικοί πελάτες προσθέτουνclient_secret). Απάντηση:access_token(30 λεπτά),refresh_token(30 ημέρες, εναλλασσόμενο),patient(το pairwise id σας για τον φάκελο),grant_id,scope.- Ανανέωση:
grant_type=refresh_token. Κάθε token ανανέωσης είναι μίας χρήσης. Η παρουσίαση ενός χρησιμοποιημένου token ανανέωσης ανακαλεί ολόκληρη την αλυσίδα (ανίχνευση κλοπής). Μια παράλληλη διπλή αίτηση ανανέωσης απορρίπτεται και μπορεί επίσης να ανακαλέσει την αλυσίδα, οπότε μην περιστρέφετε ποτέ ταυτόχρονα. - Ανάκληση:
POST /oauth/revoke(token + client_id). Η ανάκληση ενός token ανανέωσης ανακαλεί επίσης τα access tokens του.
Οι απαντήσεις token φέρουν Cache-Control: no-store και Pragma: no-cache, όπως απαιτεί το SMART.
OpenID Connect (openid fhirUser)
Ζητήστε openid fhirUser παράλληλα με τα patient scopes και η απάντηση token περιέχει επίσης ένα id_token: ένα JWT υπογεγραμμένο με RS256, με iss (την βασική διεύθυνση URL της πλατφόρμας), sub (το pairwise id σας για το άτομο), aud (το client_id σας), exp, iat και fhirUser — την απόλυτη διεύθυνση URL του πόρου Patient του ατόμου, αναγνώσιμη με το access token που μόλις λάβατε. Η ανακάλυψη βρίσκεται στο GET /.well-known/openid-configuration· τα δημόσια κλειδιά στο GET /oauth/jwks (kid στην κεφαλίδα του token). Η παράμετρος nonce δεν υποστηρίζεται ακόμη (είναι προαιρετική στη ροή authorization-code). Γίνονται αποδεκτά τα launch/patient και offline_access· το πεδίο patient της απάντησης token είναι το launch context.
Άλλοι τύποι χορήγησης: client_credentials (εμπιστευτικοί πελάτες· συμπεριφέρεται σαν κλειδί API), και η χορήγηση ταυτότητας πρώτου κόμματος (μόνο έμπιστοι πελάτες).
Η επωνυμία σας στη σελίδα συναίνεσης
Μια εφαρμογή μπορεί να εμφανίσει το λογότυπο και το χρώμα έμφασης στη φιλοξενούμενη σελίδα συναίνεσης. Ρυθμίστε τα στην κονσόλα (Εφαρμογές → Επωνυμία) ή με το admin API:
PUT /admin/applications/{application_id}/branding
{"logo": "data:image/png;base64,…", "brand_color": "#1D4ED8"}
- Λογότυπο: μια εικόνα PNG, JPEG ή WebP ως data URI, έως 64 KB. Ελέγχεται το περιεχόμενο, όχι ο δηλωμένος τύπος· το SVG δεν γίνεται αποδεκτό. Η εικόνα αποθηκεύεται με την εφαρμογή και ενσωματώνεται στη σελίδα, οπότε η σελίδα συναίνεσης δεν πραγματοποιεί αίτηση στους διακομιστές σας.
- Χρώμα έμφασης:
#RRGGBB, χρησιμοποιείται για το κύριο κουμπί. Το λευκό κείμενο πάνω του πρέπει να διατηρεί αντίθεση τουλάχιστον 4.5:1 (WCAG AA)· τα πιο ανοιχτά χρώματα απορρίπτονται. - Ένα πεδίο που παραλείπετε παραμένει ως έχει·
nullή μια κενή συμβολοσειρά το αφαιρεί.
Το υπόλοιπο της σελίδας δεν αλλάζει: η γραμμή "Secured by Anpheros Platform", η λίστα απλής γλώσσας για το τι ζητά η εφαρμογή, και το banner TEST σε έργα sandbox παραμένουν, ώστε οι άνθρωποι να μπορούν πάντα να καταλάβουν ότι η συναίνεση διατηρείται από την Anpheros. Οι συνδέσεις AI (MCP) εμφανίζουν πάντα τη σελίδα Anpheros χωρίς επωνυμία εφαρμογής.
Scopes
SMART v2 patient scopes: patient/<Type>.<cruds> με προαιρετικό φίλτρο ?category=<code> (το μόνο φίλτρο που επιβάλλει ο διακομιστής· οποιοδήποτε άλλο φίλτρο απορρίπτεται κατά την ώρα της εξουσιοδότησης). Το patient/*.rs διαβάζει τα πάντα· το offline_access προσθέτει ένα token ανανέωσης. Τα δημογραφικά στοιχεία του ασθενούς και ο κατάλογος είναι πάντα αναγνώσιμα υπό μια χορήγηση. Ένας τύπος πόρου εκτός της χορήγησης επιστρέφει 403· ένας ασθενής εκτός της χορήγησης επιστρέφει 404.
Κύκλος ζωής συναίνεσης
Οι συναινέσεις λήγουν αυτόματα, μπορούν να ανακληθούν από τον ασθενή ανά πάσα στιγμή (οθόνη Συνδέσεις / /me), και κάθε ανάγνωση υπό μια συναίνεση καταγράφεται με το id της εφαρμογής. Τα Webhooks consent.granted / consent.revoked ειδοποιούν το έργο.
Σφάλματα
401 άγνωστη/λήξασα διαπίστευση · 403 η διαπίστευση υπάρχει αλλά ενδέχεται να μην επιτρέπεται · 404 ο πόρος δεν υπάρχει για εσάς · 429 περιορισμός ρυθμού (Retry-After). Δείτε errors.md.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card