2011-09-23 57 views
10

हमारे ग्राहकों में से एक यह अनुरोध कर रहा है कि हम एसएएमएल के माध्यम से एकल लॉगआउट (एसएलओ) लागू करें। एसएएमएल सेवा का उनका पक्ष पहचान प्रदाता है, जबकि हमारा सेवा प्रदाता है। सिंगल-साइनऑन (एसएसओ) क्लाइंट के आईडीपी के साथ उपयोगकर्ता के क्रेडेंशियल्स को सत्यापित करके काम करता है, फिर उपयोगकर्ता को एक और मंच पर एक लॉगिन पेज पर रीडायरेक्ट करता है, जिसमें टोकन होता है जो उन्हें सीधे लॉग इन करने देता है। वह प्लेटफ़ॉर्म SAML के बारे में बिल्कुल कुछ नहीं जानता है, और विशेष रूप से SimpleSAMLphp सत्र स्थिति साझा नहीं करता है।क्या कोई अच्छा SimpleSAMLphp एसएलओ उदाहरण है?

लॉगआउट, दो तरह से होने की जरूरत है, हालांकि: उपयोगकर्ता हमारे मंच पर प्रस्थान करें बटन हिट

  • हैं, तो उन्हें हमारी साइट से लॉग आउट करने की जरूरत है, और IdP के SLO सेवा मारा।

  • यदि उपयोगकर्ता क्लाइंट के पक्ष में लॉगआउट बटन या किसी अन्य सेवा प्रदाता के पक्ष पर हिट करता है, तो क्लाइंट आईडीपी हमारी एसपी की एसएलओ सेवा को हिट करेगा, जिसे उपयोगकर्ता को वापस रीडायरेक्ट करने से पहले उन्हें अपने वास्तविक मंच से लॉग आउट करने की आवश्यकता है एसपी के लॉगआउट प्रतिक्रिया पृष्ठ पर।

मैं अपने मंच को समझाने के लिए लॉग आउट करने पर एक मनमाना पेज के लिए उपयोगकर्ता अनुप्रेषित करने में सक्षम हूँ, इसलिए मुझे लगता है कि पहले भाग में एक पेज SimpleSAML_Auth_Simple::getLogoutURL() का उपयोग करता है के द्वारा प्राप्त किया जा सकता है।

ऐसा पृष्ठ भी आईडीपी पक्ष से मारा जाने पर भी काम कर सकता है, लेकिन एसएएमएल चश्मा काफी जटिल हैं कि जब तक हम इसे आज तक सुनिश्चित नहीं कर सकते हैं। हालांकि, config/authsources.php में एसपी कॉन्फ़िगरेशन SingleLogoutService पैरामीटर स्वीकार नहीं करता है; /www/module.php/saml/sp/metadata.php/entityid द्वारा उत्पादित मेटाडेटा अभी भी /www/module.php/saml/sp/saml2-logout.php/entityid को एकलLogoutService स्थान के रूप में सूचीबद्ध करता है। यदि यह पृष्ठ SimpleSAMLphp सत्र को साफ़ करने के लिए आवश्यक है, तो यह ठीक है, लेकिन मुझे यह जानने की आवश्यकता है कि उपयोगकर्ता को हमारे प्लेटफ़ॉर्म से लॉग आउट करने के लिए आवश्यक अतिरिक्त रीडायरेक्ट में कैसे पर्ची करें।

मैंने उदाहरणों की खोज करने की कोशिश की है, लेकिन मुझे जो कुछ मिलता है वह एपीआई संदर्भ है। यह जानना भी अच्छा होगा कि मैं अपने स्वयं के आईडीपी को स्थापित किए बिना लॉगआउट का परीक्षण कैसे कर सकता हूं; क्या openidp.feide.no जैसी कोई सेवा है जो एसएलओ के साथ-साथ एसएसओ को संभालती है?

+0

[शिबोबोलेथ] (http://shibboleth.internet2.edu/) पर एक नज़र डालें। –

+0

@ जेरेडफिशिश: सॉफ़्टवेयर जावा-आधारित प्रतीत होता है, जहां हमें अनुरोध किया गया है कि वह हिस्टोरिकल किशमिश के लिए PHP का उपयोग करें। यदि आप प्रोटोकॉल का मतलब है, तो यह ग्राहक द्वारा निर्धारित किया जाता है; दोनों संबंधित हैं, लेकिन मुझे यकीन नहीं है कि वे पूरी तरह से संगत हैं। ग्राहक की सेवा से बात करने के लिए एक सच्चे SAML पैकेज को पर्याप्त रूप से समझना मुश्किल था। – eswald

उत्तर

3

SLO अंक

इस योजना की कल्पना कीजिए:

plattform - SP1 ----- IdP ----- SP2 ----- अनुप्रयोग

plattform और Apps के साथ जुड़े हुए हैं simpleSAMLphp एसपी, जो एक आईडीपी के साथ एक संघ भी बनाता है।

आप Platffom, APP1 और APP2 के सामान्य कार्य लॉग आउट खोजने के लिए और इसे फिर से लिखने चाहिए:

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 
} 

यह स्थानीय सत्र, सपा इस आवेदन, IdP सत्र और सपा सत्र से जुड़ा सत्र समाप्त हो जाएगा एसडी से आईडीपी से जुड़ा हुआ है लेकिन ... अन्य ऐप्स सत्र के साथ क्या होता है? वे अभी भी सक्रिय होंगे। आपने इसे समाप्त करने के लिए एक सक्रिय कॉल के बारे में सोचा था, लेकिन मुझे लगता है कि अगर आप "is_logged_in()" फ़ंक्शन को ओवरराइड करते हैं तो कई ऐप लागू होते हैं।

आप इस समारोह को ओवरराइड करें और केवल सच वापसी करता है, तो भी समारोह

$auth->isAuthenticated() 

हाल ही में मैं Wordpess SAML plugin पर इस कार्यक्षमता लागू का उपयोग कर एक वैध सपा सत्र सक्रिय मौजूद है, जाँच code

IdP अंक

Onelogin free trial का उपयोग करें, आप अपने एसपी को पंजीकृत कर सकते हैं और इसके आईडीपी का उपयोग कर सकते हैं। इस guide to configure your SAML connectors

का पालन करें, लेकिन मुझे लगता है कि आप बेहतर तरीके से एक आईडीपी बनाने की कोशिश कर सकते हैं। एक अच्छा documentation है और चरण आसान हैं। यदि आप किसी डेटाबेस/ldap को कॉन्फ़िगर करने में समय बर्बाद नहीं करना चाहते हैं तो "example-userpass" ऑथसोर्स का उपयोग करें।

इसके अलावा आप अपने वास्तविक simplesamlphp उदाहरण को एसपी & आईडीपी के रूप में सेट कर सकते हैं, लेकिन मुझे लगता है कि यदि आप सिम्प्लेस्लैल्फ सीख रहे हैं तो बेहतर मिश्रण न करें।

संबंधित मुद्दे