2012-07-10 25 views
12

Chúng tôi có hai sản phẩm riêng biệt, bao gồm cả ứng dụng web và máy chủ.Cách triển khai hoặc tích hợp một dấu hiệu đơn với SAML và Shibboleth

Chúng tôi muốn triển khai Đăng nhập một lần cho cả hai, vì vậy khi người dùng đăng nhập vào một sản phẩm, anh ấy có thể tự động truy cập tài nguyên trong sản phẩm khác thuộc về anh ấy.

Tôi đã khám phá một chút và tìm SAML là một cách tiếp cận tốt mà chúng tôi có thể thực hiện, nhưng chúng tôi không chắc chắn cách chúng tôi muốn tiếp tục.

Bạn có nên triển khai Nhà cung cấp dịch vụ của riêng mình không? Tôi đã nhìn vào Shib SP, nhưng có vẻ như nếu tôi muốn tích hợp nó vào sản phẩm của tôi, nó cũng sẽ không dễ dàng chút nào.

Vì vậy, tôi chỉ đang tìm kiếm một số đề xuất từ ​​những người đã gặp phải sự cố tương tự trước đây.

Một câu hỏi khác là tài nguyên mà tôi có thể nghiên cứu nếu tôi cần triển khai SP bằng cách sử dụng OpenSaml? Có vẻ như không có nhiều hướng dẫn hoặc ví dụ mà tôi có thể tham khảo.

Tôi cũng sẽ thực sự được đánh giá cao nếu có ai có thể chỉ ra một số quy trình hoặc thành phần lớn mà SP của riêng tôi cần chứa.

CHỈNH SỬA 1:

Chỉ cần cố gắng cung cấp thêm chi tiết về những gì tôi muốn. Chúng tôi có hai sản phẩm riêng biệt. Hiện tại chúng tôi có thể mở rộng cơ sở dữ liệu người dùng. Ví dụ: các sản phẩm của chúng tôi có thể được định cấu hình để kết nối với máy chủ LDAP hoặc bất kỳ DB người dùng bên ngoài nào khác miễn là chúng triển khai dịch vụ đúng cách.

Bây giờ mục tiêu của chúng tôi là chúng tôi muốn SSO cho cả hai sản phẩm của chúng tôi. Một kịch bản là chúng tôi có thành phần SP của riêng mình (hoặc triển khai hoặc tích hợp) trong cả hai sản phẩm. Khách hàng có thể có IdP riêng của họ. Với một số cấu hình, SP của chúng tôi có thể kết nối với IdP của họ và thực hiện xác thực từ đó và người dùng không cần đăng nhập hai lần để truy cập cả hai sản phẩm. Vì lý do, chúng tôi có thể cung cấp một IDP trong hộp nếu khách hàng không có.

Trả lời

13

Khó khăn lớn nhất với Shibboleth là việc thực hiện tham chiếu của đặc tả SAML v2.0 có hiệu quả.

Đối với hầu hết các cài đặt thường lệ, tuy nhiên, bạn thực sự cần rất ít thông số SAML để bật một số ứng dụng web cho SSO.

Nhưng kể từ khi Shibboleth thực hiện toàn bộ điều, với tất cả khả năng của nó, nó có thể là một con gấu để cấu hình.

Chúng tôi đã làm một dự án với Shibboleth (và nó được thừa nhận là một trường hợp sử dụng cạnh), và, đối với tôi, một người mới làm quen SAML vào thời điểm đó, nó thực sự là một việc vặt để làm mọi thứ.

Đối với lần đâm tiếp theo của chúng tôi, tôi đã xem số SAML spec cho SSO thông qua Cấu hình web. Nếu bạn đọc nó, nó thực sự khá đơn giản cho trường hợp sử dụng hạn chế này. Và chúng tôi quyết định rằng thay vì sử dụng Shibboleth một lần nữa, chúng tôi sẽ viết IdP và SP của riêng mình bằng cách sử dụng thư viện OpenSAML.

Chúng ta có thể giúp Shibboleth hoạt động nhanh hơn không? Có lẽ. Nhưng tôi không nghĩ rằng chúng tôi sẽ có sự hiểu biết về nó mà chúng tôi tự làm. Một chút không được phát minh-Đây, chắc chắn, nhưng công cụ này là khó hiểu đủ khi bạn hiểu phần mềm và từ vựng, ít hơn nhiều khi bạn không. Và SAML có đầy đủ từ vựng mới.

Bạn cũng có thể xem xét sử dụng SimpleSAML làm IdP và viết SP của riêng bạn cho ứng dụng web của bạn. SimpleSAML có trong PHP, nhưng nó thân thiện hơn một chút. Bạn chỉ có thể coi nó như là một dịch vụ apache tự chứa.

Tôi sẽ nói rằng SP của chúng tôi nặng khoảng 1000 dòng mã javadoc'd, nhưng chủ yếu là kết nối các công cụ OpenSAML với nhau và một số công cụ tiện ích. Trong sự thật nó không phải là đáng sợ. Hãy sẵn sàng để thực sự thích đọc các đốm màu XML đã ký mặc dù.

Đó là bực bội rằng đây thực sự là không đơn giản, nhưng đó là một chút của một điều gà/trứng về làm con nuôi, vv

Và nếu không ai trong số đó phù hợp với bạn, bạn có thể nhìn vào OAuth2 và một số của nó hồ sơ.

+0

Tôi có cảm giác giống như khi bạn cố gắng thiết lập một bản demo sử dụng Shib SP và IdP. Nó quá mạnh và linh hoạt. Tôi đã dành rất nhiều thời gian để đọc wiki của họ và google các tài nguyên liên quan khác. Có rất nhiều từ vựng mới mà chúng ta cần phải hiểu.Cảm ơn vì bài đăng của bạn. Nó làm cho tôi dũng cảm hơn để thử thực hiện SP của riêng mình. Bạn có thể chia sẻ với tôi một số tài nguyên hoặc ví dụ mà bạn đã đề cập trong khi viết mã SP của riêng bạn không? Tôi không thấy nhiều trên Internet. – performanceuser

+0

Tôi googled xung quanh và đi qua http://code.google.com/p/websso/. Tôi đã không sử dụng bản thân mình, nhưng như là một cắt đầu tiên nó trông khá tốt. Nó có cả hai mặt SP và IdP của phương trình. Thanh toán svn là ... lớn. Tôi cũng tìm thấy http://www.capcourse.com/Library/OpenSAML/index.html, nhưng mã của anh ấy không có giấy phép (rõ ràng), vì vậy tôi không xem xét nó quá chặt chẽ. Nhưng nó có các ví dụ SAML chung mà bạn có thể xem xét nếu bạn gặp khó khăn. –

+0

Cảm ơn rất nhiều. Tôi sẽ xem xét các ví dụ này. – performanceuser

3

Nếu bạn chỉ muốn triển khai SSO giữa 2 sản phẩm, tôi nghĩ có, việc xây dựng thứ gì đó từ đầu sẽ dễ dàng hơn. Nếu đó là Java, OpenSaml của Shibboleth là một lib rất tốt.

Khi bạn bắt đầu triển khai nhiều nội dung hơn và một số trường hợp phức tạp, hãy tìm kiếm thứ gì đó đã được xây dựng là lựa chọn tốt nhất. Bạn cũng nên nhận thức được một số công cụ bạn sẽ có khả năng viết trên cơ sở cho mỗi hệ thống (e. G. Khẳng định thế hệ, xml-dsig, xác nhận, vv).

Trong nháy mắt, có vẻ như các sản phẩm đã được xây dựng quá phức tạp hoặc khó quy mô hoặc thích ứng với nhu cầu cụ thể của bạn. Nhưng nỗ lực của bạn bằng văn bản kết nối và triển khai có thể được khen thưởng khi bạn cảm thấy như bùng nổ tất cả các khả năng SAML.

Sẽ rất hữu ích nếu bạn có thể giải thích chi tiết hơn về những gì bạn muốn đạt được; Tôi cảm thấy câu hỏi của bạn khá cởi mở ...

+0

Cảm ơn. Tôi đã cập nhật bài đăng gốc của mình. Tôi đồng ý câu hỏi là loại mở. Tôi đã cố cung cấp càng nhiều chi tiết càng tốt. – performanceuser

+0

@performanceuser được cập nhật của bạn và nếu nó không vượt quá điều đó, tôi khuyên bạn nên viết một xác nhận SAML đơn giản tiêu thụ điểm cuối thực hiện tất cả logic và yêu cầu khách hàng của bạn đăng ở đó để bật đăng nhập ở bên cạnh bạn. Bạn vẫn phải chăm sóc một số thứ (i. E logout, security) nhưng tôi nghĩ rằng thời gian để viết nó và biết ràng buộc là ít hơn cái bạn cần để hiểu được sản phẩm của Shibo đầy đủ. –

+0

Cảm ơn. Tôi sẽ cố gắng thực hiện một. Bạn có thể chia sẻ với tôi một số tài nguyên hoặc ví dụ về việc triển khai SP bằng cách sử dụng openSAML không? Tôi không thấy nhiều trên Internet. – performanceuser

0

Tôi không có kinh nghiệm cá nhân với Nhà cung cấp dịch vụ Shibboleth, nhưng tôi hiện đang phát triển kiến ​​trúc sử dụng Shibboleth IdP, Dịch vụ phát hiện Shibboleth và Guanxi Service Provider. Tích hợp mô-đun bảo vệ nhẹ từ Nhà cung cấp dịch vụ Guanxi với Java webapp là một miếng bánh và bạn có thể dễ dàng có được cấu trúc dựa trên Shibboleth mà không cần viết mô-đun của riêng bạn. Có localhost tutorial để thiết lập Guanxi SP, chỉ cần bỏ qua các phần về Guanxi WAYF và IdP và sử dụng các thành phần của Shibboleth ở vị trí của chúng.

+0

Cảm ơn thông tin của bạn. Đây là lần đầu tiên tôi nghe nói về Guanxi. Bạn có biết nếu nó là miễn phí? – 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

Các vấn đề liên quan