SAML vs OIDC
SAML ja OIDC ovat kaksi suosituimmista todennusprotokollista, joita käytetään SSO-alalla. Tässä artikkelissa verrataan SAML:ia ja OIDC:tä niiden arkkitehtuurin ja käyttötilanteiden kannalta.
Mitä SAML on?
SAML (Security Assertion Markup Language) on XML-pohjainen avoin standardi todennus- ja valtuutustietojen vaihtamiseen eri osapuolten välillä, erityisesti identiteettipalveluntarjoajan (IdP) ja palveluntarjoajan (SP) välillä. Se mahdollistaa verkko-pohjaisen SSO:n (Single Sign-On), mikä sallii käyttäjien todennuksen kerran pääsemään useisiin sovelluksiin. SAML on kypsä protokolla, joka on ollut olemassa pitkään ja jota yritykset laajalti käyttävät. Jotkut suosituimmista SaaS-alustoista, kuten Salesforce, Workday ja Microsoft Azure AD, tukevat kaikki SAML SSO:ta.
SAML-komponentit
- Identiteettipalveluntarjoaja (IdP): Entiteetti, joka tunnistaa käyttäjät ja tarjoaa identiteettitiedot palveluntarjoajille.
- Palveluntarjoaja (SP): Entiteetti, joka tarjoaa palveluita käyttäjille ja luottaa identiteettipalveluntarjoajaan tunnistaakseen käyttäjät.
- SAML-väittämät: XML-pohjaisia asiakirjoja, jotka kuljettavat käyttäjän todennus- ja valtuutusyksityiskohtia. Mukana on todennuslausumat, attribuuttiväittämät ja valtuutuspäätöslausumat.
- SAML-protokolla: Määrittää viestimuodon ja säännöt SAML-väittämien vaihdolle IdP:n ja SP:n välillä.
- SAML-sidokset: Määrittää, miten SAML-viestit kuljetetaan eri viestintäprotokollien, kuten HTTP POST, HTTP Redirect jne. kautta.
- SAML-metatiedot: XML-pohjaisia asiakirjoja, jotka sisältävät IdP:n ja SP:n kokoonpanotiedot. Se sisältää julkisen avaimen, päätepisteet ja tuetut sidokset, joita käytetään luottamuksen perustamiseen IdP:n ja SP:n välillä.
- Yksittäinen todennus päätepiste: Päätepiste, johon SP ohjaa käyttäjän tunnistaakseen IdP:n kanssa.
- Väittämien kuluttamispalvelu (ACS) URL: Päätepiste, johon IdP lähettää SAML-väittämän onnistuneen todennuksen jälkeen.
Kuinka SAML toimii?
- SP:n aloittama SSO-virta:
- IdP:n aloittama SSO-virta:
SAML:n edut
- Kypsä ja laajalti käytetty: SAML on kypsä protokolla, joka on ollut olemassa pitkään ja jota yritykset laajalti käyttävät.
- Standardoitu: SAML on OASIS:n ylläpitämä avoin standardi, joka varmistaa yhteentoimivuuden eri toimittajien välillä.
- SSO: SAML mahdollistaa verkko-pohjaisen SSO:n, joka sallii käyttäjien todennuksen kerran pääsemään useisiin sovelluksiin.
- Keskitetty käyttäjähallinta: SAML antaa organisaatioille mahdollisuuden hallita käyttäjäidentiteettejä keskitetysti ja panna täytäntöön turvallisuuskäytännöt johdonmukaisesti.
SAML:n haasteet
- Monimutkaisuus: SAML on monimutkainen protokolla, joka vaatii syvällistä ymmärrystä XML:stä ja turvallisuuskäsitteistä.
- Suorituskyky: SAML-viestit ovat XML-pohjaisia ja voivat olla suuria. XML:n toimittaminen ja jäsentäminen voi olla hitaampaa verrattuna esimerkiksi JSON Web Tokenin (JWT) kaltaisiin token-formaatteihin.
- Vanhentunut standardi: SAML on vanhempi standardi verrattuna OIDC:hen ja sitä pidetään vähemmän turvallisena.
- Toimittajalukitus: SAML on toimittajakohtainen protokolla, ja siirtyminen toimittajalta toiselle voi olla haastavaa.
Mitä OIDC on?
OIDC (OpenID Connect) on identiteettikerros, joka on rakennettu OAuth 2.0 -protokollan päälle. Samankaltainen kuin SAML, OIDC:tä käytetään myös todennus- ja valtuutustietojen vaihtamiseen IdP:n ja SP:n välillä.
Verrattuna SAML:iin, OIDC on modernimpi ja kevyempi protokolla, joka on saamassa suosiota nykyaikaisissa verkkosovelluksissa ja mobiilisovelluksissa. OIDC käyttää JWT:tä identiteettitietojen välittämiseen, mikä on kompaktimpaa ja helpompaa käsitellä verrattuna XML-pohjaisiin SAML-väittämiin. Se on erityisen suosittu kuluttajakasvoille tarkoitettuihin sovelluksiin ja API-turvallisuuteen.
OIDC-komponentit
- Identiteettipalveluntarjoaja (IdP): Entiteetti, joka tunnistaa käyttäjät ja tarjoaa identiteettitiedot palveluntarjoajille.
- Luottamusosapuoli (RP): Entiteetti, joka tarjoaa palveluita käyttäjille ja luottaa identiteettipalveluntarjoajaan tunnistaakseen käyttäjät. Esimerkiksi verkkosovellukset, mobiilisovellukset tai API:t.
- OIDC-tokenit: Tokenit, jotka kuljettavat käyttäjän identiteettitietoja.
- ID token: JWT-muotoinen token, joka sisältää käyttäjän identiteettitiedot.
- Access token: JWT tai läpinäkymätön muotoinen token, joka myöntää pääsyn suojattuihin resursseihin.
- Refresh token: Token, jota käytetään uuden pääsytokenin hankkimiseen ilman, että käyttäjän tarvitsee autentikoida uudelleen. Se antaa offline-pitkäikäisen valtuutuksen RP:lle.
- OIDC-päätepisteet: Päätepisteet, joita käytetään todennukseen ja tokenin vaihtoon. Joitakin tärkeimpiä päätepisteitä ovat:
- Löytöpäätepiste: Missä RP voi hakea julkisen OIDC-konfiguraatiotiedon IdP:stä.
- Autentikointipäätepiste: Missä RP lähettää todennuspyynnön.
- Token-päätepiste: Missä RP pyytää valtuutuspalvelimelta tokeneita.
- Käytt äjätietopäätepiste: Missä RP voi hakea käyttäjän profiilitiedot.
- Alueet: OIDC määrittelee joukon standardoituja alueita, jotka määrittävät RP:lle myönnetyt käyttöoikeudet. Kuten
openid
,profile
,email
,address
jne.
Kuinka OIDC toimii?
OIDC tarjoaa useita virtauksia, jotka on erityisesti suunniteltu eri käyttötarkoituksiin. Tässä on kaksi yleisintä OIDC-virtausta:
- Valtuutuskoodivirtaukset:
Valtuutuskoodivirta on yleisin virta, jota käytetään OIDC:ssä kuluttajakasvoille tarkoitettuissa sovelluksissa.
- Asiakasvaltuutuksia koskeva virtaus:
Asiakasvaltuutuksia koskeva virtaus voidaan käyttää ilman käyttäjää perustuvaan (kone-koneen välinen) todennukseen.
OIDC:n edut
- Moderni ja kevyt: OIDC on moderni protokolla, joka käyttää JSON-pohjaisia JWT tokenit, jotka ovat kompaktimpia ja helpompia käsitellä verrattuna XML-pohjaisiin SAML-väittämiin.
- Kuluttajakasvoille tarkoitettu sovellus: OIDC on erityisesti suosittu kuluttajakasvoille tarkoitettuihin sovelluksiin ja API-turvallisuuteen.
- Yhteensopivuus: Rakennettu OAuth 2.0:n päälle, OIDC on yhteensopiva monipuolisten alustojen, laitteiden ja alustojen kanssa.
- Turvallisuus: OIDC tarjoaa turvallisemman menetelmän käyttäjän todennukseen ja API-suojaan. Se yhdistää useita moderneja turvallisuusominaisuuksia, kuten token introspektio, tokenin mitätöinti, Todistusavain koodinvaihto (PKCE), ja tukee eri todennusvirtoja, jotka on mukautettu eri turvallisuustarpeisiin.
- Käytön helppous: OIDC on yksinkertaisempi ottaa käyttöön ja työskennellä SAML:iin verrattuna. Se on kehittäjäystävällisempi ja tarjoaa kattavia kirjastoja ja SDK:ita useille ohjelmointikielille ja alustoille.
OIDC:n haasteet
- Token-hallinta: OIDC perustuu tokenien käyttöön autentikointiin ja valtuutukseen. Se vaatii asianmukaisia token-hallintakäytäntöjä turvallisuuden varmistamiseksi.
- Monimutkaisuus: Vaikka OIDC on yksinkertainen perusasetuksille, sen joustavuuden vuoksi se voi lisätä monimutkaisuutta, kun toteutetaan edistyneitä mukautuksia. Esimerkiksi mukautetut vaatimukset ja Roolipohjainen pääsynhallinta (RBAC) jne.
- Käyttöönotto: OIDC on vielä suhteellisen uusi verrattuna SAML:iin, erityisesti yrityskentässä. Jotkut vanhat järjestelmät voivat silti luottaa SAML:iin SSO-tarkoituksiin.
Vertailu SAML vs OIDC
Näkökohta | SAML | OIDC |
---|---|---|
Tokeniformaatti | XML-pohjaiset SAML-väittämät | JSON-pohjaiset JWT tokenit |
Ensisijainen käyttöesimerkki | Yritys-SSO, B2B-integraatiot | Kuluttajakasvoille sovellukset, API-turvallisuus |
Käytön helppous | Monimutkainen, vaatii syvällistä XML:n ymmärrystä | Yksinkertainen, JSON-pohjainen, helppo toteuttaa |
Käyttöönotto | Laajalti otettu käyttöön yrityksissä | Kasvava suosio moderneille sovelluksille |
Turvallisuus | Kypsä mutta pidetään vähemmän turvallisena | Moderni ja turvallisempi |
Joustavuus | Rajoitettu, suunniteltu SSO-käyttötapauksiin | Joustava, tukee erilaisia käyttötapoja |
SAML:n ja OIDC:n tulevaisuus
Sekä SAML että OIDC ovat laajalti käytettyjä todennus- ja valtuutustarkoituksiin.
SAML pysyy kulmakivenä yrityksille suunnatuissa SSO- ja B2B-integraatioissa. Sen vankka tuki liittoutuneelle identiteetin hallinnalle ja todistettu suorituskyky varmistavat sen jatkuvan merkityksen, erityisesti vanhoille järjestelmille ja suurille organisaatioille.
OIDC puolestaan jatkaa kehittymistä, jota ajaa tarve turvalliselle ja skaalautuvalle todennukselle nykyaikaisissa sovelluksissa. Sen kevyt luonne ja yhteensopivuus API:iden ja mikropalvelujen kanssa tekevät siitä kulmakiven pilvinatiivien ja jaettujen arkkitehtuurien osalta. Suosion kasvaessa salasanaton todennus, biometrinen tunnistus ja monivaiheinen todennus (MFA), OIDC:n odotetaan integroituvan saumattomasti nousevien teknologioiden kanssa, varmistaen sen merkityksen tulevina vuosina.