El procés d’autenticació, autorització i accounting de l’API es basa en el sistema API Key.
Quan un usuari s’enregistra per fer servir l’API (veure procés de registre) obté un codi alfanumèric (API Key). Aquesta clau és única i només coneguda pel client i per l’API i identifica les peticions realitzades pel client. D’aquesta manera, a part de verificar la identitat de l’origen de la petició (autenticació), també permet donar i/o denegar permisos d’accés a parts de l’API per cada client (autorització) i monitoritzar els consums de cada client (accounting) per tal d’establir quotes i plans d’ús.
Les peticions a un recurs han d’incloure a la capçalera HTTP el següent camp:
- x-api-key: conté el codi alfanumèric (API Key) del client
A més, cal destacar que tots els recursos de l’API suporten el protocol HTTP xifrat amb SSL (HTTPS), de manera que tant les peticions com els respostes a l’API estan xifrades, fent que siguin ininteligibles per algú extern a la comunicació (e.g. algú esnifant paquets de la xarxa no podrà veure el contingut dels paquets).
És important tenir en compte que l’API, per motius de seguretat, té el CORS (Cross-Origin Resource Sharing) deshabilitat. Aquest fet implica que no permet realitzar consultes directament des d’un navegador, sinó que s’han de realitzar obligatòriament des d’un servidor. Els motius principals són:
- Seguretat: en una aplicació web que s’executi al navegador, seria necessari incrustar l’API Key al codi font per tal de realitzar peticions, fet que suposa una vulnerabilitat ja que facilitaria el robatori de l’API Key per part de tercers (e.g. usuaris de l’aplicació) amb la conseqüent suplantació de identitat (el codi font és accessible directament des del navegador). D’aquesta manera, s’obliga als desenvolupadors que utilitzin l’API a mantenir el valor de la seva API Key a la part servidor de les seves aplicacions, on no és accessible per l’usuari final
- Escalabilitat: quan es desenvolupa una aplicació que consumeix dades de l’API del SMC, es recomana utilitzar mecanismes per tal d’optimitzar i minimitzar les crides a aquesta. Així doncs, implementant sistemes de caché al servidor de l’aplicació que es desenvolupi, es pot assegurar la seva correcta escalabilitat si el nombre d’usuaris creix, ja que una consulta d’un usuari no representarà directament una consulta a l’API del SMC.