Mikä on OAuth Connect ja miten sitä käytetään
Monet meistä joutuvat kosketuksiin OAuthin kanssa, kun selaat Webiä, ja useimmat meistä eivät ole edes tietoisia sen olemassaolosta. OAuth (Open Authentication) on järjestelmä, joka antaa kolmannen osapuolen sivustoille rajoitetun pääsyn käyttäjätileihin, esimerkiksi Twitter- tai Facebook-tileille. Sen avulla kävijät voivat olla vuorovaikutuksessa sivuston sisällä ilman uutta tilin rekisteröintiä tai käyttäjätunnuksen ja salasanan luovuttamista kolmansille osapuolille.
Tässä oppaassa haluan esitellä OAuth-konseptin ja sen, miten se voidaan soveltaa kehittäjiin. OAuth-sovelluksen toteuttamiseen liittyy paljon teknisiä yksityiskohtia. Esimerkkini kirjoitetaan PHP: ssä käyttäen Twitter-kirjaston kääriä, mutta voit käyttää lähes mitä tahansa suosittua Pythonin ohjelmointia API: sta Rubyyn tai Objective-C: hen..
Vaikka käsite tuntuu salaiselta, yritä sulattaa niin paljon kuin mahdollista. Se on edelleen hyvin salaperäinen tekniikka, joka on juuri laadittu jo vuonna 2007. En todellakaan ymmärtänyt, miten voisimme kehittää täydellisiä OAuth-yhteyksiä edes muutaman ensimmäisen opetusohjelmani jälkeen, mutta jos pidät kiinni siitä, saat kiinni nopeasti. Nyt ensimmäinen potkia asioita pois, pieni esittely!
Mitä ongelmia voimme ratkaista?
Jos otat huomioon, kuinka paljon enemmän Internetiä on yhdistetty, on järkevää, että käyttäjät haluavat jakaa tietoja useiden tilien välillä Facebookista Twitteriin, Tumblriin, Foursquareiin ja nyt jopa mobiilisovelluksiin, kuten Path tai Instagram. Nyt kohtaamamme ongelma on, miten tämä voidaan toteuttaa mahdollisimman turvallisella ja yksinkertaisella tavalla. OAuth 1.0 on yritys ratkaista tämä ja lukuisia muita ongelmia vanhempiin OpenID-standardeihin verrattuna. Käyttäjät antavat edelleen käyttäjätunnuksensa / salasanansa muille kolmannen osapuolen sivustoille, jotta ne voivat muodostaa yhteyden OpenIDiin. Tämä ei tee siitä mitään turvallisempaa käyttäjälle. OAuth-spesifikaatioissa käyttäjän ei tarvitse tallentaa henkilökohtaisia tilitietoja kolmannen osapuolen tietokantaan.
(Image Source: Martin Hassman)
OAuthilla päätilin palveluntarjoaja (esim. Twitter, Facebook) ohjaa sinut ensin (käyttäjä) valtuutussivulle. Käyttäjä kirjautuu sitten pääverkkoon ja hyväksyy tai hylkää uuden yhteyden kolmannen osapuolen verkkosivustoon. Teknologia on kivuttomasti helppoa, ja voit aina kieltää yhteydet tiliasetuksista milloin tahansa. Huomaa, että salasanaa ei koskaan anneta kolmannelle osapuolelle, joka tekee tämän protokollan paljon turvallisemmaksi kuin vastaava.
Miten prosessi toimii
OAutin vakiopuhelussa harkitaan 3 osapuolta:
- Palveluntarjoaja - Pääverkko, jolta yrität vetää tietoja. Ne tarjoavat API-vastauksen, kuten käyttäjätunnuksesi, profiilisi kuvan, verkkosivuston URL-osoitteen ja muut asiat.
- kuluttaja - Kolmannen osapuolen sovellus, joka haluaa vastaanottaa tietoja. Tämä olisi sivusto tai mobiilisovellus, joka tekee alkuperäisen yhteyspyynnön, ja käsittelee myös palautustiedot luvan jälkeen.
- käyttäjä - Henkilö, joka istuu tietokoneen takana vuorovaikutuksessa niiden sivustojen kanssa, jotka olisivat sinulle!
OAuthin tarkoituksena ei ole tarjota tiettyä kirjastoa käytettäville verkkosivustoille. Se todella luo “säännöt” avoimen protokolla API: n rakentamiseen. Joten vaikka voimme kaikki hyötyä tästä teknologiasta, se on todella kehittäjiä, jotka todella kiinnostavat tätä aluetta. Jos tarvitset lisätietoja, tutustu tarkistettuun v1.0-versioon, joka julkaistiin huhtikuussa 2010.
Turvallisuus
Koko prosessi tarvitsee lopulta 2 eri näppäintä yhdessä käyttöoikeustunnuksen kanssa. Näppäimet tarjoavat juuripalvelun sovelluksen rekisteröinnin jälkeen - nämä tunnetaan nimellä asiakas ja salainen tunnus. Asiakastunnus siirretään yleensä todennus-URL-osoitteeseen, jotta palvelin voi tunnistaa sovelluksesi.
Salainen tunnus on koodissasi, joten palvelin voi tarkistaa sovelluksen henkilöllisyyden. Samoin etäpalvelin täyttää salaisen tunnuksesi omalla tavalla, joten et lähetä virheellisesti Twitter-pyyntöä Facebookin API: lle tai päinvastoin. Jos käyttäjä valtuuttaa yhteyden ja kaikki avaimet vastaavat, ne palautetaan sivustoosi pitkällä satunnaislukujen ja kirjainten koodilla.
Tätä koodia käytetään uuden käyttöoikeustunnus. Nämä toimivat samalla tavalla kuin istunnon muuttuja, jonka voit tallentaa evästeen, jotta käyttäjä voi kirjautua sivustoosi. Ainoa ero on, että monet palvelut lähettävät takaisin Access Tokenin ja Secret Access Tokenin. Sinun todennäköisesti tarvitsee molempia näistä vetääksesi kaikki tiedot palvelimelta. Esimerkki voisi olla käyttäjän profiilikuvan pyytäminen tallentamaan kopio omalle sivustollesi.
Esimerkki Twitterin OAuth-kirjastosta
Kehittäjät eivät useinkaan todennäköisesti aloita tyhjästä, joten miksi et katso aikaisemmin rakennettuun kirjastoon? Tämä säästää meille aikaa ja päänsärkyä, kun työskentelemme PHP: n kanssa. Katsotaanpa rakentaa todella yksinkertainen esimerkki Twitter-sovelluksen päälle.
Suosittelen Jaisen Mathain Twitter-Asyncia GitHubilla. Se toimii täydellisesti ja tarjoaa jopa todella yksinkertaisia esimerkkikoodeja, joita voimme tarkastella. Voit ladata .zip-tiedoston nyt, mutta ennen kuin tarkastelemme koodia, sinun täytyy rekisteröidä ja saada sovelluksen tunnukset Twitteristä.
Uuden sovelluksen rekisteröinti
Twitter Dev Center on erinomainen resurssi niille, jotka ovat juuri aloittaneet sovellusliittymän. Se on kirjoitettu ja kirjoitettu monta kertaa muutaman vuoden aikana. Haluttu sivu on https://dev.twitter.com/apps/new. Se pyytää sinua kirjautumaan sisään ensin, ja sinun on annettava joitakin käyttöoikeuksia uutta sovellusta varten.
Sovelluksen nimi ja kuvaus näkyvät, kun käyttäjä siirtyy valtuuttamaan Twitteriin. Web-URL-osoitteesi on myös tärkeä erottaa kolmannen osapuolen osoite. Olisi helpompaa työskennellä suoran verkkotunnuksen kanssa, vaikka voit käyttää localhostia testausta varten, mutta en edistä tätä menetelmää. Se on yhtä helppoa rekisteröityä ilmaiseksi web-isännälle ja suorittaa skriptejä sieltä.
Soittopyynnön URL-osoite on lopullinen kohde, kun kävijät joko hyväksyvät tai hylkäävät valtuutuksen. Sinun tehtäväsi on ohjelmoijana lukea Twitterin vastaus ja lähettää vastaava viesti. Async-kirjastossa olemme jo saaneet joitakin valtuuksia, mutta ne eivät toimi, koska soittopyynnön URL-osoite on määritetty ulkoiselle blogille. Jos olet kiinnostunut rakentamaan täysin yhdistetyn OAuth-web-sovelluksen, olen sisällyttänyt joitakin yksityiskohtaisia oppaita alla.
Tarkista koodi
Jos käytät etäverkko-isäntää, saatat haluta purkaa Async-kirjastot ja ladata ne uuteen hakemistoon. Muuten voit tarkistaa lähdekoodin. On todennäköistä, että emme voi koskaan vetää uutta yhteyttä. Mutta käytännön kokemus lähdekoodien lataamisesta ja muokkaamisesta on aina oppimisprosessi.
Juurihakemistossa on nimetty komentosarja simpleTest.php. Sisällä on paljon PHP-koodeja, jotka liittyvät OAuth-kirjastoihin. En voi laittaa sitä yhteen, mutta meidän on tarkasteltava tärkeää koodilohkoa, jotta voimme havaita merkittäviä yksityiskohtia.
Kuluttajaavaimelle ja salaiselle henkilöllisyystunnukselle on 4 hyvin tärkeää muuttujaa sekä salaus- ja salausmerkin tunnus. Kaikki API-palvelut eivät vaadi tätä 4-sarjaa, mutta se on oikea OAuth-protokolla. EpiTwitter-luokka vaatii kaikki 4 arvoa parametreina ja luo yhteyden URL-osoitteen Twitteriin.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Tämän uuden dynaamisen URL-osoitteen avulla voit luoda käyttäjätunnuksen. Tämä ohjaisi heidät ensin turvalliseen Twitter-API-sivuun, jossa käyttäjä hyväksyy tai kieltää yhteyden. Riippumatta siitä, mikä käyttäjä on valinnut, käyttäjä ohjataan uudelleen sovelluksen takaisinsoitto-URL-osoitteeseen. Koko avoimella protokollalla on erittäin puhdas näkökulma, joka mahdollistaa nopean kehityksen erityisesti kirjastoissa, jotka ovat saatavilla lähes kaikilla kielillä.
liittyvät linkit
- hueniverse oauth 1.0 opas
- Hellävarainen OAutin esittely
- OAuth FAQ
- Facebook-todennuslaitteen opas
- Yksinkertainen Twitter OAuth Signin
- OAuthin käyttö Twitterin kanssa Cocoa Objective-C: ssä
- OAuthin kuluttaminen älykkäästi Railsissä
johtopäätös
Toivottavasti tämä käyttöönotto OAuthiin on saanut sinut kiinnostumaan sovellusten rakentamisesta protokollan päälle. Monet kehittäjät ovat pyrkineet juuri tällaiseen ratkaisuun, ja OAuth 2.0 voi olla toisiinsa liittyvien sosiaalisten verkkojen tulevaisuus. Käytän jo yli kaksi tusinaa yhteyksiä Twitter-tilini ja kehittäjän dokumentaatio on todella vaikuttunut!
On selvää, että tästä aiheesta on paljon sanottavaa. Se ei ole jotain, jota saatat pystyä täysin käsittelemään yhdessä istunnossa. Selaa verkkoa kohti lisää OAuth-ratkaisuja ja kerro mielipiteesi alla olevasta keskustelualueesta.