Integracja WordPress MultiSite Active Directory i prywatność witryny

19

Oto przegląd konfiguracji:

  • Mam wielojęzyczną instalację WordPress 3.4.2.
  • Zainstalowałem wtyczkę integracji uwierzytelniania usługi Active Directory, aby umożliwić użytkownikom korzystanie z poświadczeń AD. Umożliwia to także przypisywanie grup AD do każdej witryny, dzięki czemu administratorzy witryny nie muszą ręcznie przypisywać uprawnień.
  • Zainstalowałem wtyczkę Network Privacy , aby niektóre witryny musiały się zalogować, aby można było zobaczyć dowolną treść. Anonimowi użytkownicy widzą tylko stronę logowania.

Pod wieloma względami ta konfiguracja działa. Mam jednak jeden problem, który powstrzymuje mnie przed wdrożeniem tego do naszej podstawowej instalacji wielu witryn WordPress:

  • Bob jest członkiem grupy „IT Support” w AD.
  • Bob jest również członkiem grupy „Użytkownicy domeny” w AD.
  • Strona główna (www.mysite.com) jest zablokowana, aby umożliwić tylko Domain Usersczłonkom zalogowanie się.
  • Podstrona (www.mysite.com/itsupport) jest zablokowana, aby umożliwić tylko IT Supportczłonkom zalogowanie się.
  • Bob odwiedza witrynę www.mysite.com i jest proszony o uwierzytelnienie. Wprowadza swoje poświadczenia AD i jest dozwolone na stronie.
  • Teraz, gdy jest zalogowany na stronie www.mysite.com, Bob klika link, aby przejść do strony www.mysite.com/itsupport i otrzymuje błąd, że nie jest członkiem witryny.
    • Wygląda na to, że nie utworzono żadnego wpisu użytkownika w bazie danych WordPress dla tej podstrony.
  • Bob wylogowuje się z www.mysite.com.
  • Po wylogowaniu Bob przechodzi bezpośrednio na stronę www.mysite.com/itsupport i zostaje poproszony o uwierzytelnienie. Wprowadza swoje poświadczenia AD i jest dozwolone na stronie.
    • Wygląda na to, że wpis użytkownika w bazie danych WordPress jest tworzony w tym momencie dla tej podstrony.
  • Teraz, jeśli się wyloguje i zaloguje na www.mysite.com, może bez problemów przejść do strony wsparcia technicznego.

Jeśli usunę wpisy użytkownika Boba dla obu stron i wyłączę wtyczkę Prywatność sieci, Bob będzie mógł zalogować się na stronie www.mysite.com, a następnie przejść do strony wsparcia. Ale jeśli usunę jego wpisy użytkownika i ponownie włączę wtyczkę Network Privacy, problem pojawi się ponownie.

Miałem ten sam problem z jedną inną wtyczką prywatności, chociaż nie pamiętam, która.

Jeśli zauważysz problem lub skonfigurujesz coś podobnego, chętnie spróbuję cokolwiek, o ile spełnię podstawowe kryteria korzystania z grup AD i będę w stanie zablokować niektóre witryny.

Phil Erb
źródło
Brzmi jak konflikt przypadków użycia wtyczki / krawędzi. Czy sprawdziłeś u dewelopera wtyczek, czy obsługuje on zewnętrzne bazy danych użytkowników?
Damien
Damien - na forach zarejestrowałem elementy wsparcia dla obu wtyczek. Po prostu widzę, czy potrafię wybrać mózgi tych, którzy mogli wcześniej zmierzyć się z czymś podobnym. Nie wierzę, że wtyczka prywatności naprawdę musi wiedzieć o zewnętrznych bazach danych użytkowników, po prostu musi pozwolić, by wtyczka AD zrobiła swoje i dodała użytkownika do wewnętrznej bazy danych WordPress. Niestety wtyczka prywatności przeszkadza.
Phil Erb
2
Jak sobie z tym poradziłeś? Badam podobne wdrożenie dla szkoły.
orionrush
1
Wygląda na to, że AD zwraca tylko grupę przypisaną do tej witryny - jak w „Hej, to jest strona IT, więc zamierzam tylko zweryfikować, czy logowanie do konta to grupa IT i zignorować inne grupy ”. Może sprawdzisz, czy istnieje sposób, aby AD zapamiętał wszystkie grupy, do których należy użytkownik.
phatskat
1
Jak 4-letnie pytanie może znajdować się na samym szczycie listy odpowiedzi bez odpowiedzi? Nie jest to już nawet istotne, ponieważ obie połączone wtyczki są przestarzałe.
Athoxx

Odpowiedzi:

1

Wypróbuj inne podejście. Zamiast używać wtyczek, proponuję nieco zmodyfikować wordpress, jak opisano w poniższej odpowiedzi.

/programming//a/39195424/3157038

Więc w twoim przypadku powinieneś skonfigurować instalacje wordpress w następujący sposób:

  • mysite.com
    • root: * / domains / mysite.com / public_html
    • db: strona_użytkownika
    • prefiks tabeli: root_
  • mysite.com/itsupport
    • root: * / domains / mysite.com / public_html / itsupport
    • db: strona_użytkownika
    • prefiks tabeli: itsupport_

oprócz konfiguracji podanej w odpowiedzi, z którą się połączyłem, dodaj następujące pliki do plików wp-config obu instalacji wordpress:

define( 'CUSTOM_USER_TABLE', 'mysite_users );
define( 'CUSTOM_USER_META_TABLE', 'mysite_usermeta' );
Fleuv
źródło
0

W przypadku instalacji w wielu witrynach należy przełączyć witrynę pomocy technicznej IT na subdomenę.

Prawdopodobnie występuje niezgodność logowania do pliku cookie. Ponieważ jest ustawiony w katalogu głównym domeny, jest taki sam dla obu stron. Jeśli więc skonfigurujesz support.example.com, powinno to być jaśniejsze niż example.com/support

Chyba że całkowicie się nieporozumiem, w takim przypadku wypróbuj inną wtyczkę, aby ograniczyć zawartość do użytkownika i nie uruchamiaj jej jako podstrony.

keepkalm
źródło