OpenID. Cum am implementat suportul OpenID. Cronicile
Un număr de ori am trecut personal de înregistrare, necesită o confirmare prin e-mail pot fi numărate pe degetele de la o mână: Nu mă deranjează strălucește o cutie de „spam mail“ - doar lene.
Unde pot obține un furnizor deschis?
Vă voi arăta cum să instalați furnizorul deschis pe propria dvs. hosting.
În fișierul rezultat
Am adăugat o linie care se conectează la variabila include_path (unde să caute bibliotecile necesare conexiunii) la rădăcina instalării openid (folosită o cale relativă). Apoi am salvat fișierul ca config.php în director împreună cu server.php.
Apoi deschid http. //center:89/openid/examples/server/server.php și admirați chiar și pe un server de proaspăt-OpenID instalat și de lucru (cel puțin, atunci când am făcut clic pe butonul „autentificare“, numele de utilizator a intrat inventat, nimic „a izbucnit în jos“ , iar în partea de sus a paginii era o inscripție, cum ar fi "bine ai venit, Vasya").
Deschis pentru a vedea codul sursă html pentru o pagină personală. După cum era de așteptat, a existat o directivă:
Apoi am decis să văd cum arată baza de date, ce comprimate au apărut în ea și ce este stocat. Sa dovedit că nu există o bază de date. Ie Valoarea specificată în configurație nu este utilizată nicăieri. A trebuit să creez o bază de date cu mâinile mele (și o mică îngrijorare, ce fel de codificare este necesară pentru munca acestui miracol?).
Repornirea serverului a dus la crearea a două tabele cu numele oid_associations și oid_nonces. Iată codul lor:
De asemenea, mă interesează locul unde vă puteți configura numele (de exemplu, modificați prefixul numelui tabelului). În căutarea de acest loc, am deschis dosarul „OpenID \ Aut \ OpenID \ MySQLStore.php“ și a văzut un cod DDL simplu pentru aceste două tabele (mostenesc codificarea criptare a bazei de date, și nu există coduri de conexiuni selectați codul nu am găsit). Mă întreb ce se va întâmpla atunci când baza utf8, iar codificarea implicită în cp1251 conexiune (ca mine hosting).
OpenID # 038; Mediawiki
Acesta este un exemplu complet de server OpenID (care este integrat cu „nativ“ pentru sistemul de înregistrare mediawiki), astfel încât acum pe o pagina personala a utilizatorului va fi plasat același cod html-furnizorul de OpenID.
Am început prin a spune că a făcut o nouă masă (înlocuiți $ wgDBprefix, respectiv, utilizate pentru a vă prefix mediawiki) în baza de date (baze de date pentru mediawiki, despre serverul de baze de date vechi, cu un exemplu uita nepretențios)
Apoi am copiat directorul extensiei în folderul extensii și am specificat calea către fișierul OpenID.php din fișierul LocalSettings.php
Pentru funcționarea corectă a extensiei, are nevoie de biblioteca openid (nu vine cu extensia însăși). Din fericire, aceste biblioteci au fost folosite în exemplele anterioare, așa că am avut doar pentru a le conecta la include_path. Deci, în fișierul LocalSettings.php înainte de linia care încarcă extensia „Extensii / OpenID / OpenID.php“ a fost adăugată linie, cu indicarea în cazul în care pentru a găsi fișierele de bibliotecă OpenID:
Acum, deschid pagina cu antet mediawiki și văd modificările. Butonul "Autentificare cu OpenID" a apărut în partea de sus a paginii și a fost adăugată o nouă pagină în lista de pagini speciale, care conține un formular de autentificare folosind OpenID (Special: OpenIDLogin). Mergând la pagina mea personală, în codul html văd un link către furnizorul de servicii openid.
Să încercăm să introducem mediawik folosind un nume deschis. Apăs butonul "Conectați-vă cu OpenID", apoi primesc următorul formular:
Bine, din moment ce mă aflu pe mașina de testare a ferestrelor, va trebui să corectez valoarea acestei variabile în acest fișier. Deschideți fișierul Auth / OpenID / CryptUtil.php, găsesc următorul fragment în el și setează valoarea variabilei Auth_OpenID_RAND_SOURCE la null.
Reîncercam procedura de autentificare după ce am rezolvat eroarea și am obținut:
Totul, așa cum ar trebui să fie. Formularul de confirmare a autentificării și solicitarea de a avea încredere în site-ul care a solicitat serviciul de autentificare deschis. Cu toate acestea, starea de spirit rasfatata a aparut neclare in cazul in care din radacina discului (in cazul in care directorul web este localizat) folderul tmp. În interior, care sa dovedit a fi o mulțime de fișiere create de extensia openid la mediawiki. Va trebui să trec din nou prin setup-ul extensiei deschise și să specificați o altă locație pentru aceste fișiere (cu siguranță necesare pentru muncă).
După cum am scris mai sus, extensia pentru lucrul cu openid are două scopuri: puteți să accesați site-ul mediawiki cu ajutorul unor credite deschise furnizate de un anumit furnizor; sau pagina dvs. personală de pe wiki va fi utilizată pentru a vă conecta la alte servere. Pur și simplu, această extensie joacă rolul unui client deschis și al unui server openid. Pentru a lucra fiecare dintre ele, trebuie să creați un loc în care să fie stocate "date importante". Voi începe cu partea clientului. În principiu, există doar două opțiuni: fie un sistem de fișiere, fie un server memcached. Pe gazda țintă în Internet memcached-oh chiar nu miroase - va avea de a face cu fișierele de stocare. Notă pentru viitor: de ce procedura de autentificare este atât de lentă (apache a mâncat întregul procesor și nu pentru o secundă).
Adăug următoarele variabile la fișierul LocalSettings.php:
Apoi am primit următorul mesaj de eroare:
După o scurtă meditație, sa dovedit că am pus un spațiu suplimentar în numele catalogului. Deci, după remediere, autentificarea openid a început să funcționeze și folderele inutile din rădăcina discului nu au fost create. Moralul: indicați corect căile spre fișierul de stocare. În mod automat, acestea nu sunt create (cel puțin atunci când este necesar).
Câștigați, apoi ați câștigat, numai după un răspuns pozitiv la "am încredere în acest site?", Din nou, a existat un mesaj despre eroare și, de această dată, mai interesant:
Sa dovedit că răspunsul furnizorului openid nu coincide cu ceea ce se aștepta Consumer pe partea mediawiki. De dragul interesului, am adus pe ecran ce sa întors de pe server.
Da, matricea se întoarce cu o grămadă de informații, iar clientul dorește să obțină doar o singură linie (interesant, cu ce?). A trebuit să citesc documentația și am găsit expresia fatală:
Data viitoare vă voi spune cum să creați un consumator de servicii de autentificare OpenID. La urma urmei, trebuie să integrez formularul de autentificare în clientul flash al mașinii de antrenament. Voi scrie imediat ce mă ocup de acest proces.