Identity service
Openstack Keystone
Keystone on Openstackin palvelu joka tarjoaa turvallista, kontrolloitua pääsyä pilven resursseihin, hallinnoi käyttäjätietokantaa [1], Openstack palvelukatalogia (service catalog) ja näiden API-endpointeja. Keystone tukee useita eri autentikointimentelmiä, mm. käyttäjätunnus/salasana, token-pohjaisia Universally Unique IDentifier (UUID) ja Public Key Infrastructure (PKI), PKIz, ja Fernet autentikointeja. Keystone kykenee hoitamaan autentikoinnin alusta loppuun, mutta tuotantojärjestelmissä tämä ei ole suositeltavaa. Suuremmissa järjestelmissä on syytä käyttää paremmin suojattuja ja hallittuja autentikointi-järjestelmiä ja tämän vuoksi Keystone tukee LDAP-protokollaa.
UUID tokenit (Folsom ja vanhemmat versiot)
UUID-tokenilla tunnistautuminen tapahtuu asiakkaan (Identity) lähettäessä (Authentication) käyttäjätunnus/salasana -yhdistelmän Keystonelle, joka luo UUID:n, tallentaan sen taustajärjestelmäänsä (yleensä tietokanta) ja lähettää kopion UUID:sta takaisin asiakkaalle. Asiakas tallentaa UUID-tokenin välimuistiin ja käyttää sitä tehdessä pyynnön API-rajapinnalle. Jokaisesta uudesta asiakkaan kyselystä API-rajapinta lähettää vahvistuspyynnön Keystonelle. Keystone vertaa API-rajapinnan lähettämää UUID:tä taustajärjestelmään tallennettua UUID:tä vastaan. Riippuen onko UUID-token validi ja onko se voimassa, Keystone palauttaa hyväksytty tai hylätty (Authorization) sanoman API-rajapinalle. Keystonen vastauksen perusteella API-rajapinta prosessoi API-pyynnön tai hylkää sen ja lähettää vastauksen asiakkaalle.
UUID on 32-merkkinen token joka on erittäin pieni ja helppo käyttää, mutta se ei sisällä riittävästi tietoa jotta valtuuttaminen voitaisiin tehdä paikallisesti. UUID-tyypinen tunnistautuminen voi kuormittaa järjestelmää huomattavasti, etenkin verkkoa, koska jokaisen API-pyynnön yhteydessä joudutaan suorittamaan valtuuttaminen Keystonen kautta. UUID-token on tallennettu taustajärjestelmään ja se voidaan poistaa DELETE pyynnöllä, mutta todellisuudessa tämä tarkoittaa UUID-tokenin "valtuutuksen" kumoamista.
1Jos käytössä ei ole ulkopuolista käyttäjätietokantaa

Autentikointi käytettäessä UUID-tokenia.
PKI-tokenit (Grizzlystä eteenpäin)
UUID:n ongelmien vuoksi Keystoneen kehitettiin PKI-token. PKI-autentikoinnissa Keystone toimii CA:na (Certificate Authority). Keystone käyttää julkisia/yksityisiä avainpareja ja sertifikaatteja tokenien luomiseen ja vaaltuuttamiseen. PKI-token sisältää mm. tietoa milloin se on luotu, käyttäjän identiteetin, projektin (tenant), milloin se vanhenee, domainin, käyttäjän roolin ja palvelukatalogin. Tämä kaikki liitetään JSON:n (JavaScript Object Notation) hyötykuormaksi, allekirjoitetaan avaimella ja paketoidaan CMS-avaimella (Cryptographic Message Syntax) ja muutetaan base64 muotoon. PKIz-formaatti poikkeaa sillä, että allekirjoitettu tieto pakataan.
Openstackin palvelulla on paikallinen kopio Keystonen allekirjoitusavaimesta, CA-sertifikaatista ja CRL:stä (certificate revocation list) ja näin palvelut voivat tehdä valtuutuksen paikallisesti. Koska PKI-token sisältää paljon tietoa, ongelmaksi tulee koko. WWW-palvelimien oletuksena tukema otsikko-koko on on 8KB, Otsikon koko ylittyy nopeasti, jos token sisältää useamman endpointin ja servicen, service catalogista puhumattakaan. Hyötykuorman pakkaaminen ei juurikaan auta asiaa pakkaamisen hyötysuhteen olessa matala.
Tokenin koko voi aiheutta ongelmia myös muille Openstackin palveluille. Yleensä Openstackin palveluiden täytyy myös säilyttää Tokenit omassa tietokannassaan jotta ne voivat ylläpitää CRL:ä. Tällöin ylläpitäjän huoleksi tulee tietokannan ajoittainen [2] siivoaminen suorituskyvyn kärsiessä. PKI-tokenit vaativat myös sertifikaattien luomista, mikä monimutkaistaa jossain määrin Openstackin asetusten määrittelyä.
2Crontab

Autenteikointi käytettäessä PKI/PKIz-tokenia.
Fernet-tokenit
Fernet-tokenit sisältävät käyttäjätunnisteen, projektitunnisteen, tokenin voimassaoloajan ja ym. tarkastustietoa. Loput tiedot käyttäjän rooleista projekteissa voidaan luoda tokenin tietojen perusteella. Tämä tekee Fernet-tokenista noin 255-merkin pituisen mikä on hieman UUID-tokenia suurempi, mutta huomattavasti PKI-tokenia pienempi. Fernet-tokenit allekirjoitetaan symmetrisellä avaimella. Tämä luo tarpeen avaimien hallintaan: jakoon ja kierrätykseen Openstack-ympäristössä.