2012-07-10 12 views
12

Mamy dwa oddzielne produkty, zarówno w postaci aplikacji internetowej, jak i serwera.Jak wdrożyć lub zintegrować pojedyncze logowanie z SAML i Shibboleth

Chcemy wdrożyć Pojedyncze logowanie dla obu z nich, więc gdy użytkownik zaloguje się do jednego produktu, może automatycznie uzyskać dostęp do zasobów w innym produkcie należącym do niego.

Trochę zbadałem i stwierdzam, że SAML to dobre podejście, które możemy podjąć, ale nie jesteśmy pewni, jak chcemy postępować.

Czy warto wdrożyć własnego usługodawcę? Spojrzałem na Shib SP, ale wygląda na to, że jeśli chcę zintegrować go z moimi produktami, nie będzie to łatwe.

Poszukuję więc sugestii osób, które wcześniej napotkały podobny problem.

Kolejna kwestia, jaki zasób mogę zbadać, jeśli potrzebuję wdrożyć SP za pomocą OpenSaml? Wygląda na to, że nie ma wielu tutoriali ani przykładów, do których mogę się odwołać.

Byłbym też bardzo wdzięczny, gdyby ktokolwiek mógł wskazać kilka dużych procedur lub składników, które mój SP powinien zawierać.

EDIT 1:

Wystarczy spróbować podać więcej szczegółów na temat tego, co chcę. Mamy dwa oddzielne produkty. Obecnie jesteśmy w stanie uzewnętrznić bazę danych użytkowników. Na przykład nasze produkty można skonfigurować tak, aby łączyły się z serwerem LDAP lub dowolną inną zewnętrzną bazą danych użytkownika, o ile prawidłowo wykonują usługę.

Teraz naszym celem jest uzyskanie SSO dla obu naszych produktów. Jeden scenariusz to nasz własny komponent SP (implementacja lub integracja) w obu produktach. Klient może mieć własnego dostawcę tożsamości. W przypadku niektórych konfiguracji nasz SP może łączyć się z dostawcą tożsamości i przeprowadzać autoryzację stamtąd, a użytkownik nie musi logować się dwa razy, aby uzyskać dostęp do obu produktów. Ze względu na to, możemy dostarczyć out-of-box IdP, jeśli klient go nie ma.

Odpowiedz

13

Największą trudnością z Shibboleth jest to, że jest to efektywna referencyjna implementacja specyfikacji SAML v2.0.

W przypadku większości rutynowych instalacji w rzeczywistości wymagana jest bardzo niewielka specyfikacja SAML, aby włączyć kilka aplikacji internetowych do obsługi jednokrotnego logowania.

Ale ponieważ Shibboleth realizuje to wszystko, ze wszystkimi możliwościami, może to być konfiguracja niedźwiedzia.

Zrobiliśmy projekt z Shibboleth (i było to na pewno przypadek użycia krawędzi), a dla mnie początkujący SAML w tamtym czasie było naprawdę przykrym obowiązkiem, aby wszystko działało i działało.

Dla naszego następnego przebicia, spojrzałem na SAML spec dla SSO za pośrednictwem profilu internetowego. Jeśli to czytasz, jest to dość proste w przypadku ograniczonego użycia. Zdecydowaliśmy, że zamiast ponownie używać Shibboleth, napisalibyśmy własne IdP i SP używając bibliotek OpenSAML.

Czy możemy przyspieszyć działanie Shibboletha? Prawdopodobnie. Ale nie sądzę, żebyśmy mieli zrozumienie tego, co robimy sami. Trochę Not-Invented-Here, oczywiście, ale te rzeczy są dość mylące, kiedy rozumiesz oprogramowanie i słownictwo, a tym bardziej nie, jeśli nie. A SAML jest pełen nowych słówek.

Możesz również rozważyć użycie numeru SimpleSAML jako dostawcy tożsamości i napisania własnego pliku SP dla aplikacji internetowych. SimpleSAML jest w PHP, ale jest nieco bardziej przyjazny dla użytkownika. Możesz po prostu traktować to jako samodzielną usługę apache.

Powiem, że nasz SP waży około 1000 linii kodu javadoc'd, ale to głównie okablowanie elementów OpenSAML i pewne narzędzia. Tak naprawdę to nie jest takie straszne. Przygotuj się na to, by naprawdę cieszyć się czytaniem podpisanych bloków XML.

To frustrujące, że to naprawdę nie jest prostsze, ale to trochę kurczaka/jaj rzeczą dotyczącą przyjęcia itp

A jeśli nic z tego nie pasuje do ciebie, możesz spojrzeć na OAuth2 a niektóre jego profile.

+0

Mam takie samo uczucie, gdy próbuję skonfigurować demo za pomocą Shib SP i IdP. Jest zbyt potężny i elastyczny. Spędziłem tyle czasu na czytaniu ich wiki i innych powiązanych zasobów Google. Istnieje wiele nowych słowników, które musimy zrozumieć.Wielkie dzięki za twój post. To sprawia, że ​​jestem bardziej odważny, próbując wdrożyć nasze własne SP. Czy możesz podzielić się ze mną pewnymi zasobami lub przykładami, o których wspomniałeś podczas pisania własnego kodu SP? Nie widzę zbyt wiele w Internecie. – performanceuser

+0

Przeszukałem go i natknąłem się na http://code.google.com/p/websso/. Sam tego nie użyłem, ale jako pierwszy krój wygląda całkiem nieźle. Ma zarówno stronę SP, jak i stronę IdP równania. Kasa svn jest ... duża. Znalazłem także http://www.capcourse.com/Library/OpenSAML/index.html, ale jego kod nie ma (oczywistej) licencji, więc nie przyjrzałem się temu zbyt uważnie. Ale ma ogólne przykłady SAML, które możesz zobaczyć, jeśli utkniesz. –

+0

Wielkie dzięki. Rzucę okiem na te przykłady. – performanceuser

3

Jeśli chcesz zaimplementować SSO tylko między 2 produktami, myślę, że tak, budowanie czegoś od podstaw jest łatwiejsze. Jeśli jest to Java, OpenSaml Shibboletha to bardzo dobra biblioteka.

Gdy zaczynasz wdrażać więcej rzeczy i niektóre złożone scenariusze, chodzenie po coś już zbudowanego jest najlepszym wyborem. Powinieneś również pamiętać o kilku kwestiach, które będziesz pisać w systemie (np. Generowanie asercji, xml-dsig, sprawdzanie poprawności itp.).

Na pierwszy rzut oka może się wydawać, że produkty już zbudowane są zbyt skomplikowane lub trudne do skalowania lub dostosowane do konkretnych potrzeb. Ale twoje wysiłki deweloperów pisząc złącza i implementacje mogą być nagradzane, kiedy masz ochotę eksplodować wszystkie możliwości SAML.

Byłoby jednak bardzo pomocne, gdybyś mógł wyjaśnić bardziej szczegółowo, co chcesz osiągnąć; Czuję, że twoje pytanie jest dość otwarte ...

+0

Dzięki. Zaktualizowałem mój pierwotny wpis. Zgadzam się, pytanie jest otwarte. Próbowałem podać jak najwięcej szczegółów. – performanceuser

+0

@performanceuser ze względu na aktualizację, a jeśli nie wykracza poza to, polecam napisać prostą asercję zużywającą punkt końcowy, który wykonuje całą logikę, i prosi klienta, aby opublikował tam, aby umożliwić logowanie po twojej stronie. Nadal musisz zająć się niektórymi rzeczami (np. Wylogowaniem, bezpieczeństwem), ale myślę, że czas na napisanie tego i zrozumienie ograniczenia jest mniejsze niż to, czego potrzebujesz, aby zrozumieć cały produkt Shibo. –

+0

Dzięki. Spróbuję go wdrożyć. Czy możesz podzielić się ze mną kilkoma zasobami lub przykładami implementacji SP przy pomocy openSAML? Nie widzę zbyt wiele w Internecie. – performanceuser

0

Nie mam osobistego doświadczenia z dostawcą usług Shibboleth, ale obecnie rozwijam architekturę wykorzystującą usługę Shibboleth IdP, usługę Shibboleth Discovery i Guanxi Service Provider. Integracja lekkiego modułu Guard z Guanxi Service Provider z webappem Java to bułka z masłem i możesz łatwo uzyskać architekturę opartą na Shibboleth bez pisania własnych modułów. Jest localhost tutorial do ustawienia Guanxi SP, po prostu pomiń części o Guanxi WAYF i IdP i użyj komponentów Shibboleth na ich miejscu.

+0

Dziękujemy za informacje. Po raz pierwszy usłyszałem o Guanxi. Czy wiesz, czy to jest za darmo? – performanceuser

+0

[1]: https://github.com/guanxi/guanxi-sp-engine/blob/master/README [2]: https://github.com/guanxi/guanxi-sp-guard/blob/ master/README – Erwin

Powiązane problemy