Νικόλαος Σίμος
Technical Manager
Pylones Hellas – www.pylones.gr

Στα πρώτα χρόνια της έκρηξης του Internet, οι ιστότοποι εξυπηρετούσαν σχεδόν αποκλειστικά γενική πληροφόρηση, με, ως επί το πλείστον, στατικό περιεχόμενο. Η μετάβαση από την γενική πληροφόρηση στο προσωποποιημένο περιεχόμενο και στις υπηρεσίες (webmail, social media, fora, eshops), δημιούργησε την ανάγκη πιστοποίησης των χρηστών και κάπως έτσι φτάσαμε στη δημιουργία και χρήση δεκάδων κωδικών. Η επόμενη εξέλιξη ήταν η επικοινωνία μεταξύ διαφορετικών εφαρμογών, προκειμένου ο χρήστης να απολαμβάνει ενιαία και ολοκληρωμένα ένα σύνολο υπηρεσιών. Όλο και περισσότερες καθημερινές ενέργειες και εργασίες μπορούν να γίνουν μέσω ενός υπολογιστή ή ακόμα και ενός κινητού. Από ψηφιακές αγορές ενδυμάτων, τροφίμων και υπηρεσιών, μέχρι την έκδοση πιστοποιητικών, βεβαιώσεων και την εικονική κατάθεση πινακίδων κυκλοφορίας. Βιώνουμε αυτό που συνεχώς αναφέρεται ως «Ψηφιακός Μετασχηματισμός».

Η επικοινωνία μεταξύ των διαφορετικών εφαρμογών για την ανταλλαγή στοιχείων θα απαιτούσε την καταχώρηση των στοιχείων πρόσβασης της μια εφαρμογής στην άλλη, κάτι το οποίο αποτελεί εξ ορισμού σοβαρότατο κίνδυνο. Δεν είναι άλλωστε λίγοι αυτοί που δεν τολμούν να εκδώσουν μια υπεύθυνη δήλωση από το gov.gr χρησιμοποιώντας κωδικούς ΓΓΠΣ ή κάποιας τράπεζας, φοβούμενοι ότι κάποιος θα «κρυφοκοιτάξει» εμπιστευτικές πληροφορίες.

Κάπου εδώ λοιπόν, εμφανίζεται το ΟAuth 2.0. Το OAuth είναι ένα ανοιχτό πρωτόκολλο εξουσιοδότησης (Authorization) που επιτρέπει την πιστοποιημένη ανταλλαγή συγκεκριμένων πληροφοριών μεταξύ εντελώς διαφορετικών services, χωρίς την ανταλλαγή των στοιχείων πιστοποίησης (username / password). Θα μπορούσε να παρομοιαστεί σαν ένα κλειδί που έχει ένα συνεργείο καθαρισμού κτηρίων, που δεν ανοίγει όλες τις πόρτες, αλλά μόνο αυτές για τις οποίες έχει συμφωνηθεί μεταξύ του συνεργείου και του ιδιοκτήτη.

Για να συνοψίσουμε την αρχή λειτουργίας του OAuth, θα πρέπει να διευκρινίσουμε ορισμένες βασικές ορολογίες, όπως αυτές αναφέρονται στο RFC 6749 (The OAuth 2.0 Authorization Framework), παραλληλίζοντας όμως και το παράδειγμα της εφαρμογής έκδοσης υπεύθυνων δηλώσεων (https://dilosi.services.gov.gr/).

Οι βασικές ορολογίες:

Resource Owner: Πρόκειται για τον χρήστη που έχει στην κατοχή του username & password για τα δεδομένα και τις προσωπικές πληροφορίες του. Είστε ουσιαστικά εσείς που θα καθορίσετε ποιες ενέργειες μπορούν να γίνουν με τους λογαριασμούς σας.

Client: Είναι η εφαρμογή η οποία θέλει να προσπελάσει δεδομένα ή να διενεργήσει εργασίες για λογαριασμό σας, δηλαδή του Resource Owner. Στην περίπτωσή μας είναι η εφαρμογή έκδοσης υπεύθυνων δηλώσεων.

Authorization Server: Είναι η εφαρμογή που «γνωρίζει» τον Resource Owner, δηλαδή η εφαρμογή στην οποία ο Resource Owner έχει λογαριασμό (ΓΓΠΣ ή τα eBanking sites).

Resource Server: Είναι το API ή η υπηρεσία που θέλει να χρησιμοποιήσει ο Client για λογαριασμό του Resource Owner, δηλαδή η ΓΓΠΣ που κρατά τα απαραίτητα για τη δήλωση στοιχεία (ονοματεπώνυμο, ΑΔΤ, ΑΦΜ κλπ)

Redirect URI: Το URL στο οποίο ο Authorization Server θα δρομολογήσει τον Resource Owner μετά την εξουσιοδότηση που έχει δώσει στον Client. Πολλές φορές αναφέρεται και ως Call Back URI.

ResponseType: Αφορά στον τύπο των δεδομένων που περιμένει να λάβει ο Client.

Scope: Αυτό είναι ίσως το σημαντικότερο μέρος της διαδικασίας σε ότι αφορά στην ιδιωτικότητα. Το Scope περιγράφει με μεγάλη ακρίβεια τα δεδομένα και τις ενέργειες που ζητά να κάνει ο Client (ονοματεπώνυμο, ΑΔΤ, ΑΦΜ κλπ).

Consent: O Authorization Server (ΓΓΠΣ ή eBanking) εμφανίζει στον Resource Owner (εσάς) τα δεδομένα που ζητά ο Client, όπως αυτά περιγράφονται στο Scope και του ζητά να επιβεβαιώσει αν επιτρέπει την πρόσβαση. Ζητά δηλαδή την συγκατάθεσή σας!

ClientID: Είναι η ταυτότητα που πιστοποιεί τον Client στον Authorization Server.

Client Secret: Είναι το password που γνωρίζουν μόνο ο Client και ο Authorization Server.

AuthorizationCode: Ένας προσωρινός κωδικός που δίνει ο Client στον Authorization Server προκειμένου να λάβει ως απάντηση ένα Access Token.

AccessToken: Το «κλειδί» που θα χρησιμοποιήσει ο Client (εφαρμογή δηλώσεων) για να επικοινωνήσει με τον Resource Server (TAXIS) για λογαριασμό σας.

Αρκετές φορές ο Resource Server και ο Authorization Server είναι ο ίδιος server.

Τώρα που ξεκαθαρίσαμε (;) την ορολογία, ας δούμε πως λειτουργούν όλα αυτά στην πράξη.

Βήμα 1ο: Εσείς, ο Resource Owner, θέλετε να επιτρέψετε στην εφαρμογή έκδοσης υπεύθυνων δηλώσεων, τον Client, να προσπελάσει ονοματεπώνυμο, αριθμό ταυτότητας, διεύθυνση κατοικίας και ΑΦΜ που βρίσκονται στη ΓΓΠΣ. Δεν ζητά τη φορολογική σας δήλωση ούτε το ύψος των τραπεζικών σας καταθέσεων.

Βήμα 2ο: O Client αναδρομολογεί τον browser στον Authorization Server, π.χ. τη ΓΓΠΣ ή τα eBanking των  τραπεζών, συμπεριλαμβάνοντας στις πληροφορίες που στέλνει το Client ID, Redirect URI, Response Type και τα δεδομένα που θέλει να προσπελάσει, δηλαδή τα Scopes.

Βήμα 3ο: Ο Authorization Server, δηλαδή η ΓΓΠΣ ή τα eBanking των τραπεζών σας πιστοποιεί, ενώ αν δεν είστε ήδη συνδεδεμένος, τότε εμφανίζει την οθόνη σύνδεσης (login) στην οποία εισάγετε Usernameκαι Password. Τονίζω ότι τα στοιχεία αυτά δεν τα καταχωρείτε στον Client (εφαρμογή υπεύθυνων δηλώσεων) αλλά στον Authorization Server (TAXIS, eBanking).

Βήμα 4ο: ΟAuthorization Server εμφανίζει τη φόρμα συναίνεσης (Consent) στην οποία αναγράφονται οι πληροφορίες που ζητά η εφαρμογή υπεύθυνων δηλώσεων (Client) και στην οποία καλείστε να συναινέσετε, προκειμένου να συνεχιστεί η διαδικασία, ή όχι.

Βήμα 5ο: Ο Authorization Server σας δρομολογεί πίσω στον Client χρησιμοποιώντας το Redirect Url μαζί με το Authorization Code.

Βήμα 6ο: Ο Client επικοινωνεί  με τον Authorization Server απευθείας, χωρίς να εμπλέκεται ο Resource Owner (εσείς) και με κρυπτογραφημένο τρόπο αποστέλλει Client ID, Client Secret και Authorization Code.

Βήμα 7ο: O Authorization Server πιστοποιεί την εγκυρότητα του Authorization Code και εκδίδει το Access Token.

Βήμα 8ο: Ο Client πλέον χρησιμοποιεί το Access Token και ζητά από τον Resource Server ονοματεπώνυμο, αριθμό ταυτότητας, διεύθυνση κατοικίας και ΑΦΜ προκειμένου να συμπληρώσει αυτόματα και να εκδώσει την υπεύθυνη δήλωση.

Το κείμενο αναδεικνύει μία πολύ σημαντική διαδικασία που όλοι εφαρμόζουμε στην καθημερινότητα, μέσω τεχνικών λεπτομερειών και περιγραφής της λειτουργικότητας της, όμως αυτό που έχει ουσία είναι ότι ίσως για πρώτη φορά η πολιτεία υιοθετεί σύγχρονες τεχνολογίες προς όφελος του πολίτη, εφαρμόζοντας καινοτόμες και πρωτόγνωρες διαδικασίες. Παρόλη τη δυσπιστία που έχει δημιουργήσει και καλλιεργήσει και τις αγκυλώσεις που η πολιτεία έχει επιδείξει μέχρι τώρα, η δυνατότητα έκδοσης πιστοποιητικών χωρίς την φυσική παρουσία σε δημόσιες υπηρεσίες, η κατάθεση πινακίδων κυκλοφορίας χωρίς την αναμονή σε ατελείωτες ουρές, η συμπλήρωση υπεύθυνης δήλωσης χωρίς την μετάβαση σε ΚΕΠ φαντάζουν τόσο πρωτοποριακά όσο ίσως η ανακάλυψη του ηλεκτρικού λαμπτήρα στις 27 Ιανουαρίου 1880. Και η χρήση του OAuth εγγυάται την ιδιωτικότητα των πληροφοριών μας.