Harici 'dizin hizmeti' ile TOA / kimlik doğrulama entegrasyonu


15

Bir istemci için bir prototip üzerinde çalışmaya başlamak üzereyim - ve gerekli özelliklerden biri şirket içi kullanıcı kimlik doğrulama / kayıt sistemi ile entegrasyon.

Bu sistem yetkili kullanıcı veritabanı görevi görür ve yeni kullanıcılar oluşturmak ve geçerli kullanıcıların kimliğini doğrulamak için RESTful bir arayüz sağlar.

  1. WP'de yeni kullanıcılar oluşturabilmem gerekiyor ve bu sürecin bir parçası olarak, bu kullanıcıyı oluşturmak / doğrulamak için harici kimlik doğrulama API'sına bir çağrı yapıyoruz.

  2. Geçerli bir kullanıcı olan ancak WP tarafından bilinmeyen bir kişi, WP sitesine kaydolmak zorunda kalmadan yorum yapmak için giriş yapabilmelidir.

  3. Genel web sitesine giriş yapan bir kişi de otomatik olarak WordPress'e giriş yapmalıdır.

Aşağıdaki yol gitmek olduğunu düşünüyorum.

  • (1) için - kullanabileceğim bir kayıt kancası var mı?

  • (2) için - kimlik doğrulama filtresini bağladığımı varsayıyorum - yani birisi giriş yapmaya çalıştığında, bunu tuzağa düşürüyorum, harici sisteme bir çağrı yapıyorum ve sonra WP girişini işliyor veya kayıt işlemine yönlendiriyorum ( 1) Oer alır.

  • (3) için - ana site tarafından ayarlanan giriş çerezini okuyun ve (2) ile devam edilsin mi?

Kullanıcılara ve usermeta tablosuna da kayıt eklemem gerekecek.

Yani, yukarıdakiler mantıklı mı - bir şey düşünmedim mi? Herkes bu konuda yardımcı olmak için herhangi bir iyi kaynak var (@hakre - bu konuda bazı çalışmalar yaptığınızı gördüm !!).

Güncelleme

Bu yüzden hala başımı buna karşı dayayıyorum, aslında kimlik doğrulama filtresine bağlanmaya çalışıyorum ve bunu kullanarak:

  1. 'ana' site için bir giriş çerezinin ayarlanıp ayarlanmadığını kontrol edin ve varsa, kimlik doğrulama API'larına göre yeniden doğrulayın ve geçerliyse, wp_signon()ana site çerezindeki bilgileri (e-posta ve karma şifre) kullanarak bir WP girişini zorlayın. WP için kimlik bilgileri olarak
  2. çerez ayarlanmamışsa, ana site giriş sayfasına yönlendirin ve bir giriş / kayıt alın, sonra 1. adıma dönün
  3. kimliği doğrulanmış bir ana site kullanıcısı olduğunda bir WP kullanıcısı yoksa, oluşturun ve ardından 'şeffaf' bir oturum açın (yani kullanıcı bir WP giriş formu görmez)

Temel olarak, WP giriş formunu tamamen sadece yorum yapacak kullanıcılar için gizlemek ve daha sonra yazarların ve yöneticinin doğrudan erişmesine izin vermenin bir yolunu bulmak istiyorum.

Oldukça yavaş gidiyor, işte yardımcı olabileceğim şeyler:

  • kimlik doğrulama filtresi kullanılacak doğru filtre mi? Beklediğim tüm durumlarda çağrı almak gibi görünmüyor - örneğin, meta widget kimlik doğrulama kanca ateşleme olmadan giriş / çıkış bağlantılarını görüntüler

  • i (başarı gösteren) wp_signon()bir WP_Usernesneyi geri alabilirsiniz , ancak oturum açma durumunu etkilemez - yani meta widget hala yenileme sonra bile "Oturum Aç" gösterir.

Herhangi bir yardım minnetle alındı ​​:)


belki bu ayrı bir soru olmalı?
anu

oh, ve bunun belirtilmesine bile izin verilip verilmediğini bilmiyorum, ama bunun için yarım gün kadar mutlu olurum - profilimdeki iletişim bilgileri.
anu

Yanıtlar:


12

Tamam, benim için çalışan yaklaşım şöyle:

  1. Ana site kullanıcı veritabanının yetkili olduğunu varsayın. Ana site giriş çerezi, site parolasının bir kimliğini ve karmasını içerir.

  2. Çerezleri ana siteden alın ve ana sitenin kimlik doğrulama API'sına göre yeniden doğrulayın

  3. Geçerliyse, dönüş değerinden gelen e-posta adresini 'user_login'WP değeri olarak ve karma site parolasını WP parolası olarak kullanın.

  4. Kullanarak WP'de bu kullanıcının olup olmadığını test edin wp_authenticate('user_login', 'user_pass'). Bu WP_User, başarılı olan bir WP_Errornesneyi veya başarısız olan bir nesneyi döndürür .

  5. Eğer WP_Error/is_wp_error()öyleyse, wp_update_user()bir kullanıcı oluşturmak için kullanın (veya şifreyi değiştirilmiş bir kullanıcıyı güncelleyin).

  6. Oturum yoluyla wp_set_current_user(), wp_set_auth_cookie()vedo_action('wp_login, id)

(Tüm bunlar, 'init'eyleme bağlı bir işlevde bulunur )

Bu çalışıyor gibi görünüyor - WP tarafından bilinmeyen geçerli site kullanıcıları otomatik olarak oluşturulur. Parola değişiklikleri için kullanılır ve site çerezi ayarlanırsa ve WP kullanıcısı varsa, TOA otomatik ve oldukça sorunsuzdur.


1
+1 Müthiş açıklama / cevap. Umarım bir gün biraz daha fazla ayrıntı göstermek için bir gün bulursun. Deneme / erro;)
kaiser

1
Bu tam olarak aradığım şey, biraz daha süreci açıklayabilir misiniz? Özellikle 1,2,3 adımları benim için çok açık değil. Teşekkürler!!
chifliiiii


1

Çeşitli kullanıcıyla ilgili fonksiyon üzerine şartlı tanımlanır !function_exists()içinde wp-includes/pluggable.phpve kendi sürümleri ile geçersiz kılmak için kolaydır.


1

WordPress'te Tek Oturum Açma özelliğini etkinleştirmek bana 18 saatten fazla mücadele verdi, ancak sadece birkaç dakika sürebilir:

Temel olarak, kullanmak isteyeceksiniz https://wordpress.org/plugins/wp-force-login/ ve değiştirilmiş bir sürümü https://as.wordpress.org/plugins/jwt-authenticator/ bir kimlik doğrulama oluşturmak ve sonra sitenizde bir JWT (JSON Web Simgesi) oluşturan ve WordPress sitenizin özel URL'sine yönlendiren korumalı uç nokta.

Bkz tamamını buradan kodu .


Cevabınız için teşekkürler. Bağlantılar kaybolabileceğinden ve sizi işe yaramaz hale getireceğinden, yalnızca bağlantılar yanıtlar önerilmez. İlgili bitleri buraya dahil etmek daha iyidir.
kaiser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.