2010-07-08 15 views
12

Mam istniejącą stronę internetową, którą chcę zamienić w dostawcę OpenID. Wszystkie moje konta użytkowników są przechowywane w tabeli mysql.Tworzenie dostawcy OpenID w PHP

Pomyślałem Ponieważ OpenID jest reprezentowany jako adres URL, mam zamiar zrobić coś takiego: http://login.mydomain.com/username

mam skonfigurować subdomenę i stworzył htaccess, który przekierowuje wszystkie adresy URL do /login.php?username = [nazwa użytkownika]

Sposób, w jaki to widzę, i powiedz mi, czy się mylę, że ktoś mówi, powiedzmy, StackOverflow, że wprowadzają http://login.mydomain.com/myUsername. Dostają się do strony na moim serwerze, która prosi o podanie hasła (ponieważ znam już ich nazwę użytkownika), sprawdzam, czy pasuje i zwraca klucz?

Osób online zalecane przy użyciu Zend_OpenId_Provider. Czytałem ich dokumentację (http://framework.zend.com/manual/en/zend.openid.provider.html), ale uważam, że jest to bardzo mylące. Nie mają przykładu w świecie rzeczywistym, w którym login/hasło użytkownika są przechowywane w bazie danych.

Widziałem również php-open-id (http://github.com/openid/php-openid), ale nie było tam też pomocy.

Wydaje się, że to dość powszechna rzecz. Czy jest tam tutorial lub przykład, który mogę łatwo dostosować?

+1

Chciałbym również uzyskać kilka przykładów tego, ale zmierzam w kierunku zostania dostawcą OpenID, możemy współpracować. Planuję korzystać z Janrain OpenID Enabled: http://www.janrain.com/openid-enabled, ponieważ Zend nie spełnił moich wymagań. I obawiam się, że musisz przeczytać źródło ... – jayarjo

+0

Jestem otwarty na obsługę OpenID lub dowolną inną. Po prostu trudno jest znaleźć pomoc, aby zostać dostawcą. Ustawiłem małą nagrodę w tej sprawie. Może to pomoże ... Głosuj na to pytanie. –

+0

Jakość oficjalnej dokumentacji Zends jest niska. Nie podają prawdziwych przykładów na świecie. – jantimon

Odpowiedz

8

Kiedy oznaczyłeś to pytanie ramą Zend, myślę, że chcesz to zaimplementować z ZF.

Spójrz na konstruktora Zend_OpenId_Provider

public function __construct($loginUrl = null, 
          $trustUrl = null, 
          Zend_OpenId_Provider_User $user = null, 
          Zend_OpenId_Provider_Storage $storage = null, 
          $sessionTtl = 3600) 

Ważną jeden jest parametrem $storage.

W przykładzie na http://framework.zend.com/manual/en/zend.openid.provider.html nie przekazują żadnych parametrów. Oznacza to, że domyślnie używany jest dostawca Zend_OpenId_Provider_Storage_File. Znowu ten plik będzie przechowywany domyślnie w plikach w katalogu TEMP (/tmp w systemie Linux).

Zasadniczo przykład powinien być w pełni funkcjonalny. Można zarejestrować kilka kolejnych użytkowników poprzez wywołanie $server->register($someid, $somepassword);

Ale ponieważ przechowuje kont domyślnie w katalogu tymczasowego, należy zastąpić tę linię przez coś tak (jeśli jest w porządku do kont sklepowych w plikach):

$dir = "/var/lib/myopenidusers"; 
mkdir($dir); 
$server = new Zend_OpenId_Provider(null, null, null, new Zend_OpenId_Provider_Storage($dir)); 

Teraz, jeśli wolisz przechowywać użytkowników w bazie danych, musisz zaimplementować własne Provider_Storage.

Spójrz na abstrakcyjną klasę abstract class Zend_OpenId_Provider_Storage. Oto metody, które musisz wdrożyć.

+0

Pamiętaj, że mam już wszystkich moich użytkowników w mojej bazie danych. Czy nadal muszę je "zarejestrować"? –

+0

Wygląda na to, że muszę napisać to wszystko. Po prostu chcę, aby część "login" została wykonana za pośrednictwem mojej tabeli mysql. Tutaj muszę zaimplementować cały kod od zera, z czego większość nawet nie rozumiem ... –

1

Możesz wypróbować JanRain Engage (http://www.janrain.com/products/engage). Jest to uproszczony interfejs do integracji OpenID z aplikacjami internetowymi. Darmowa wersja powinna być wystarczająco dobra dla wszystkich praktycznych zastosowań.

+1

Engage to ACCEPT OpenId, nie być dostawcą. Być może myślisz o FEDERACJI, która nie jest darmowa. –

0

Używamy: http://source.keyboard-monkeys.org/projects/show/communityid

Z ich strony internetowej:

„Wspólnota-ID jest implementacją OpenID w PHP, który jest OpenID 2.0 Community-ID jest budować do 100% na Open Source i jest. Wydanie na podstawie licencji BSD Użytkownicy mogą śledzić swoje zaufane strony i zarządzać nimi Logowanie do C-ID może być nazwą użytkownika/passowrd lub jednorazowym hasłem z Yubikey. Użytkownik może mieć wiele profili, takich jak prywatne lub firmowe informacje kontaktowe

Dla administratorów Community-ID dostępne są statystyki do śledzenia rejestracja nowych użytkowników, autoryzowanych użytkowników dziennie lub liczba zaufanych witryn. Administratorzy mogą ustawić witrynę w trybie konserwacji lub wysłać e-maile do wszystkich zarejestrowanych użytkowników.

W przypadku danych użytkownika i uwierzytelniania administrator może wybrać domyślną pamięć masową db lub połączyć się z serwerem LDAP. Aktualnym potwierdzonym wsparciem jest OpenLDAP. Inne serwery powinny działać również w porządku.”

+0

Próbuję to ustawić, prowadzę małą firmę ze mną i trzema innymi, uruchamiamy 4 witryny i chcemy SSO, skonfigurowałem część SSO, ale nie wiem, jak przesłać dalej te strony, aby się zalogować z tym :/ – MRVDOG

0

SimpleID to mały i przyjemny w użyciu + SETUP oprogramowania dostawcy OpenID. Używam go sobie i nie mogę narzekać.

2

Próbowałem wszystkiego wymienione tutaj, Wspólnota ID, simpleid, janrain, itp., wraz z wszystkimi tymi, którzy twierdzą, że są dostawcami od OpenID Wiki/Libraries i nie powiodło się, a następnie natknąłem się na Prairie i uruchomiłem go w ciągu około godziny.Troszkę więcej prac nad zmianą zapytań w index.php i login.php i otrzymywałem go do pracy przeciwko mojej tabeli użytkowników:

Powiązane problemy