Azure ja tunnistautuminen. Mitä ovat Azure B2C ja B2B?
Käyttäjien tunnistaminen tarvitaan, kun tarjotaan personoituja palveluita käyttäjille ja kontrolloidaan, kenellä on pääsy palveluihin ja tietoihin. Usein ratkaisuna on toteuttaa oma rekisteröintisivu, tietokanta ja tunnistautuminen sähköpostilla ja salasanalla. Monesti tämä on riittävä taso, jos ei vaadita vahvaa tunnistautumista, mutta silloin pitää myös itse huolehtia tietosuojasta, GDPR:n toteutumisesta ja salasanojen suojauksesta. Yleensä oman toteutuksen rinnalle integroidaan sosiaalisia tunnistautumisia, kuten Google ja Facebook. Vaihtoehtona Azure tarjoaa omat B2C ja B2B palvelut tunnistautumisen toteuttamiseen.
Azure B2C ja B2B
Nykyään on paljon hyviä kolmannen osapuolen palveluita, jotka toteuttavat tunnistautumisen puolestasi, kuten OAuth, OAuth2 tai OpenID Connect palveluina. Azuren ratkaisu tähän on tarjota kaksi palvelua, Azure B2C(business to consumer) ja B2B(business to business)[1]. Näistä yleisin on B2C, joka tarjoaa tunnistautumisen palvelun asiakkaille. B2B on käytössä, jos haluaa tarjota rajattuja palveluita parterin tai toisen yrityksen käyttäjille, mutta he eivät suoraan tule oman palvelun asiakkaiksi.
Azure B2C tavoite on tarjota tunnistautuminen “Out of the box”, jolloin voi keskittyä itse tekemään palvelut ja sovellukset asiakkaille eli sen tärkeimmän osuuden. B2C tarjoaa valmiina kaikki yleisimmät tunnistautumispalvelut, kuten Facebook, Google, LinkedIn, jne[2]. Sekä tietenkin lokaalin Active Directory, jossa käyttäjiä voidaan rekisteröidä ja tunnistaa esimerkiksi käyttäjätunnuksella ja salasanalla. Jos palvelusi ei tarvitse kuin perustunnistautumisen ja B2C valmiina tarjoamat tunnistautumisvaihtoehdot, niin käyttöönotto on helppoa. Käytännössä kaikki tapahtuu Azure Portaalin kautta ja on puhdasta configurointia[3]. Käyttöönotolle löytyy kattavat dokumentaatiot ja esimerkit.
IEF ja Custom Policyt
Jos palvelusi tarvitsee kattavampaa tai monimutkaisempia tunnistautumisvaihtoehtoja, kuten OAuth, OAuth2 tai OpenID Connect palvelua, joita ei valmiina löydy B2C:stä tai sisältää vaatimuksia, jotka ovat hyvin specifisiä omalle yritykselle, kuten käyttäjien migraatiota vanhoista järjestelmistä tai tietojen hakua legacy järjestelmistä. Tähän tilanteeseen B2C tarjoaa IEF Custom Policyt[4]. Ne ovat consepti, jossa tekemällä kokoelman xml määrittely voidaan toteuttaa hyvinkin monimutkaisia tunnistautumisketjuja ja integroitua mihin tahansa kolmannen osapuolen tunnistautumispalveluun, jotka tarjovat OAuth, OAuth2 tai OpenID Connect rajapinnat.
Custom Policien käyttöönotto aluksi voi tuntua aika monimutkaiselta ja vastapainona on aina, olisiko sittenkin parempi toteuttaa tunnistautuminen itse. Suurin ongelma Custom Policien kanssa on, että ne ovat hyvin rajoitettu konsepti ja palvelu, jota ohjaillaan joukolla xml määrittelyjä, joita on rajallinen määrä. Toisaalta dokumentaatio on kattava ja vaikka tulee usecasejä, joita ei välttämättä saa suoraan B2C kautta toteutettua, niin B2C custom policyt tukee REST API kutsujen integroimista osaksi toteutusta. Jos esimerkiksi tarvitaan jonkin cryptatun tokenin purkua ja tietojen keräystä tokenista, niin voi helposti toteuttaa REST API(Azure Function) joka toteuttaa sen B2C puolesta ja tarjoaa vastauksena tarvittavat tiedot B2C käyttöön. Sanoisin, että B2C custom policyt lisättynä joukolla specifisiä REST API toteutuksia on varteen otettava vaihtoehto toteuttaa hyvinkin monimutkaisia tunnistautumisketjuja. Ensimmäinen porras on aika korkea ja kannattaa varata hyvin aikaa Custom Policien oppimiseen ja lähteä testaamaan sen sopivuutta omiin käyttötarkoituksiin palanen kerrallaan.
Paras työkalu Custom Policien tekoon on Visual Studio Code, johon on saatavilla Azure B2C plugin[5]. Plugin tarjoaa paljon Custom Policien tekoon tarvittavia työkaluja sekä integrointeja Azure B2C palveluun, kuten valmiiden policien lataamisen Azure B2C palveluun ja virhelokien tutkimisen.
[1] https://docs.microsoft.com/en-us/azure/active-directory/external-identities/compare-with-b2c
[2] https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-identity-provider
[3] https://docs.microsoft.com/en-us/azure/active-directory-b2c/
[4] https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview
[5] https://marketplace.visualstudio.com/items?itemName=AzureADB2CTools.aadb2c