2011-09-23 75 views
10

Müşterilerimizden biri, SAML aracılığıyla Tek Oturum Açma (SLO) gerçekleştirmemizi istiyor. SAML servisinin kendi tarafları Kimlik Sağlayıcısıdır, bizimki ise Hizmet Sağlayıcıdır. Single-Signon (SSO), kullanıcının kimlik bilgilerini istemcinin IdP'si ile doğrulayarak ve kullanıcıyı daha sonra başka bir platformda oturum açma sayfasına yönlendirerek çalışır. Böylece, oturum açmalarını sağlayan bir simge vardır. Bu platform, SAML hakkında hiçbir şey bilmez. özellikle SimpleSAMLphp oturum durumunu paylaşmaz.İyi bir SimpleSAMLphp SLO örneği var mı?

Çıkış olsa iki yol gerçekleşmesi gerekiyor: Kullanıcı platformumuzda çıkış düğmesi vurur

  • Eğer sitemizde dışına giriş yapmanız gerekiyor ve IDP en SLO hizmetini çarptı. Kullanıcı istemcinin tarafında veya başka bir hizmet sağlayıcının tarafında oturum kapatma düğmesine basarsa, istemci IdP'si SP'nin SLO hizmetine çarpacak ve ardından kullanıcıyı yeniden yönlendirmeden önce onları gerçek platformumuzdan çıkış yapması gerekecektir. SP'nin çıkış sinyali sayfasına.

Ben çıkış yapınca keyfi bir sayfaya yönlendirecek bizim platformu ikna edebilmek değilim, bu yüzden ilk bölümü SimpleSAML_Auth_Simple::getLogoutURL() kullanan bir sayfa elde edilebilir düşünüyorum.

Böyle bir sayfa ayrıca IdP tarafından vurulduğunda da çalışabilir, ancak SAML özellikleri, denemeden emin olamayacağımız kadar karmaşıktır. Ancak, config/authsources.php'daki SP yapılandırması bir SingleLogoutService parametresini kabul etmez; /www/module.php/saml/sp/metadata.php/entityid tarafından üretilen meta veriler hala Tek Oturum Açma Hizmeti konumu olarak /www/module.php/saml/sp/saml2-logout.php/entityid listeler. Bu sayfa SimpleSAMLphp oturumunun temizlenmesi için gerekliyse, sorun değil, ancak kullanıcıyı platformumuzdan çıkarmak için gereken ek yönlendirmelerde nasıl kayılacağımızı bilmem gerekiyor.

Örnek aramayı denedim, ancak tek yaptığım API başvuruları. Kendi ID'imi kurmaya çalışmadan nasıl durdurabileceğimi bilmek de güzel olurdu; SLO'nun yanı sıra SSO'yu işleyen openidp.feide.no gibi bir hizmet var mı?

+0

[Shibboleth] 'e bakın (http://shibboleth.internet2.edu/). –

+0

@JaredFarrish: Yazılımda, PHP'nin histerik kuru üzüm için kullanılmasını istediğimiz Java tabanlı görünüyor. Protokolü kastediyorsanız, müşteri tarafından belirlenir; ikisi birbiriyle ilgilidir, ama tamamen uyumlu olmadıklarından emin değilim. Müşterinin hizmetiyle konuşmak için gerçek bir SAML paketini ikna etmek yeterince zordu. – eswald

cevap

3

SLO Sayı

bu düzeni düşünün:

Plattform - SP1'i ----- IdP ----- SP2 ----- App

Plattform ve Apps ile bağlantılıdır Ayrıca bir IdP ile bir federasyon oluşturan simpleSAMLphp SP.

Sen Platffom, Uyg1 ve Uyg2 normal oturumu fonksiyonunu bulup yeniden gerekir:

normal_app_logout() { 

// code of the normal logout 
.... 
.... 

// new code 

require_once('<path-to-ssp>/simplesamlphp/lib/_autoload.php'); //load the _autoload.php 
$auth = new SimpleSAML_Auth_Simple('default-sp'); // or the auth source you using at your SP 
$auth->logout(); <--- call to the SLO 
} 

Bu, yerel oturumu, bu uygulama, IdP oturum ve SP oturumları bağlı SP oturumunu sona erecek IdP'ye bağlı SP'lerin ancak ... diğer uygulamalar oturumuna ne oldu? Hala aktif olacaklar. Sonlandırmak için aktif bir çağrı hakkında düşündünüz, ancak birçok uygulamanın uyguladığı "is_logged_in()" işlevini geçersiz kılarsanız daha iyi olacağını düşünüyorum.

Bu işlevi geçersiz kılmak ve işlevini

$auth->isAuthenticated() 
Son zamanlarda

ben Wordpess SAML plugin bu işlevselliği uygulamaya kullanarak da geçerli SP oturumu aktif varsa tek gerçek dönmelidir

, code

IdP Sorununu kontrol

Onelogin free trial'u kullanın, SP'nizi buradan kaydedebilir ve IdP kodunu kullanabilirsiniz. Bu guide to configure your SAML connectors

Bunu takip ederseniz, kendiniz bir IdP oluşturmaya daha iyi olabileceğinizi düşünüyorum. Güzel bir documentation var ve adımlar kolay. Bir veritabanı/ldap yapılandırmak için zaman harcamak istemiyorsanız, "example-userpass" authsource kullanın.

Gerçek simplesamlphp örneğinizi SP & IdP olarak ayarlayabilirsiniz ancak simplesamlphp öğreniyorsanız daha iyi karıştırmayın.

İlgili konular