2013-02-19 32 views
15

Tôi có thiết lập tomcat 7 với oldApp.war và newApp.war được triển khai trên đó. Cả hai ứng dụng đều có cùng thông tin đăng nhập cho người dùng trên cơ sở dữ liệu.Cách triển khai SSO trên ứng dụng web tomcat hiện có

Tôi có thể truy cập các ứng dụng bằng cách sử dụng https://localhost/oldApphttps:localhost/newApp tương ứng.

Ứng dụng cũ của tôi là một ứng dụng Java MVC mùa xuân và khi người dùng đăng nhập vào oldApp Tôi muốn có liên kết đưa người dùng vào ứng dụng mới mà không yêu cầu thông tin đăng nhập.

Tôi muốn biết cách triển khai SSO để thực hiện việc này. Tôi tốt nhất không muốn chạy bất kỳ dịch vụ bên ngoài để xử lý này.

Xin cảm ơn trước.

Trả lời

6

Bạn có thể thực hiện SSO bằng nhiều cách khác nhau:

  1. Oauth 2-http://oauth.net/2/
  2. SAML 2 - https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security

SAML 2.0 có nhiều triển khai cho vai trò nhận dạng/nhà cung cấp dịch vụ.

Đối với một danh sách triển khai IDP tôi có thể chỉ cho bạn stackoverflow bài đăng này: https://stackoverflow.com/a/761774/126414

Nếu bạn đang có kế hoạch để thực hiện cung cấp dịch vụ có một phần mở rộng mùa xuân đẹp: http://static.springsource.org/spring-security/site/extensions/saml/index.html

+0

bạn có thể cung cấp một số tài nguyên không có mùa xuân –

+0

@JafarAli Bạn có thể vui lòng cung cấp thêm chi tiết trong câu hỏi của mình không? Trường hợp sử dụng của bạn là gì? Bạn có IDP hiện tại (mà bạn đang sử dụng?) Và làm việc trên SP để tích hợp với nó? – svlada

+0

CHÚNG TÔI có trình quản lý truy cập Oracle với hỗ trợ SAML 2.0 là IDP và ứng dụng của tôi sẽ đảm nhận vai trò của nhà cung cấp dịch vụ. Ứng dụng của tôi hiện không sử dụng Spring. –

10

Cập nhật: 2018 và thông tin bên dưới đã lỗi thời. Nếu bạn đang bắt đầu một ứng dụng mới, hãy sử dụng giao thức nhận dạng được liên kết như Open ID Connect và bạn sẽ nhận được SSO miễn phí.

Có một vài phương pháp bạn có thể thực hiện:

  1. Bạn có thể sử dụng Tomcat để thẩm định và sử dụng single sign on khả năng của Tomcat. Nếu bạn hiện đang sử dụng Spring để xác thực người dùng, bạn có thể cần thay đổi một số thứ. Ngoài ra, tùy thuộc vào cách bạn đang thực hiện xác thực, xác thực của Tomcat có thể không đủ cấu hình.
  2. Bạn có thể thiết lập thứ ba, CAS, servlet (hoặc một cái gì đó tương tự), cả hai ứng dụng web đều xác thực.
  3. Bạn có thể tự thiết lập điều này bằng cách sử dụng Spring và pre-authenticated filters. Về cơ bản bạn sẽ phải viết bộ lọc đã được xác thực trước của mình để kiểm tra một số vị trí mà cả hai servlet đã truy cập (cơ sở dữ liệu ?, bối cảnh chia sẻ?) Cho các thông tin đăng nhập hiện có trước khi quay trở lại các phương thức xác thực cũ. Bạn sẽ muốn đảm bảo xóa xác thực này trong bộ lọc ở đâu đó để yêu cầu tiếp theo không tự động kế thừa thông tin xác thực yêu cầu trước đó.
+0

Url CAS đã lỗi thời. Đây là URI hiện tại: https://www.apereo.org/projects/cas – Elijah

+0

Cảm ơn, đã cập nhật URL – Pace

2

Bạn có thể triển khai Máy chủ CAS (không có gì ngoài chiến tranh) trong tomcat và định cấu hình bộ lọc ứng dụng web của bạn cho phù hợp. Bạn có thể nhận trợ giúp từ số link này.

0

tôi đã được quản lý này với SSO Van Tomcat:

  1. Đặt SSO Van trong chủ phần tử (localhost) của server.xml file:

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> </Host>

  2. Thêm người dùng và vai trò (ví dụ. trong tomcat_users.xml):

    <user username="user1" password="user1" roles="employee"/>

  3. Trong web-app yếu tố của ứng dụng của bạn web.xml tập tin, thêm chế bảo mật:

    <security-constraint> <web-resource-collection> <web-resource-name>App name</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>employee</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>file</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>employee</role-name> </security-role>

  4. Vậy là xong. Bây giờ, hãy đăng nhập vào một trong các ứng dụng của bạn và bạn phải đăng nhập vào các ứng dụng khác.

Tất nhiên, bạn không nên sử dụng mật khẩu máy bay trong sản xuất, đây chỉ là ví dụ nhanh. Bạn sẽ xem xét xác thực Digest, cũng như cấu hình SSL trên Tomcat.

Tôi hy vọng điều này sẽ giúp ai đó!

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