2009-03-09 32 views
74

Tôi gặp khó khăn trong việc hiểu JAAS. Tất cả dường như phức tạp hơn nó nên (đặc biệt là hướng dẫn Sun). Tôi cần một hướng dẫn đơn giản hoặc ví dụ về cách thực hiện bảo mật (xác thực + ủy quyền) trong ứng dụng java dựa trên Struts + Spring + Hibernate với kho lưu trữ người dùng tùy chỉnh. Có thể được thực hiện bằng cách sử dụng ACEGI.JAAS cho con người

+0

Câu hỏi hay. Tiêu đề tuyệt vời pithy cho một thất bại tài liệu hợp pháp. –

+0

H & Đ tốt nhất trên JAAS. Tôi đã có một thời gian thực sự khó khăn để bắt đầu với nó. – cristiandley

+0

@mattb, tôi muốn tạo phụ lục, nếu có thể. Tôi tin rằng [câu trả lời của tôi] (http://stackoverflow.com/a/43220700/3542189) có thể giúp hiểu được câu hỏi của bạn. Nói khái niệm. – pss1suporte

Trả lời

22
+1

cảm ơn :) jaas cuốn sách là thực sự tốt – Makky

+3

Các linke cho jaasbook đã chết. Nó đã được chuyển đến https://jaasbook.wordpress.com/ –

+0

@Martlark, tôi muốn tạo phụ lục, nếu có thể. Tôi tin rằng [câu trả lời của tôi] (http://stackoverflow.com/a/43220700/3542189) có thể giúp bạn hiểu câu trả lời của mình. Nói khái niệm. – pss1suporte

1

Để có hướng dẫn JAAS hoàn toàn, hãy kiểm tra this. Đó là cũ nhưng nên giúp đỡ với những điều cơ bản JAAS.

2

tôi không thể nói quá nhiều đến JAAS chính nó, nhưng "suggested steps" guide này vào mùa xuân an và the reference manual đều nguồn lực khá tốt về Xuân An - nếu thiết lập của bạn là bất cứ điều gì gần đơn giản, bạn không thực sự cần phải làm nhiều hơn là đọc những điều này.

+0

Hướng dẫn "các bước được đề xuất" đã chuyển đến đây: http://static.springsource.org/spring-security/site/start-here.html – aliopi

+0

cảm ơn, cập nhật liên kết –

49

Người dùng khác đã cung cấp một số liên kết rất hữu ích ở trên để tôi không bận tâm đến các liên kết. Tôi đã làm một nghiên cứu tương tự trong JAAS cho ứng dụng web và đã chạy vào một "rào cản tâm trí" cho đến khi cuối cùng tôi nhận ra JAAS là một khuôn khổ giải quyết an ninh tại một "lớp" khác nhau sau đó ứng dụng web trong thế giới Java. Nó được xây dựng để giải quyết các vấn đề bảo mật trong Java SE chứ không phải Java EE.

JAAS là một khung bảo mật được xây dựng để bảo mật mọi thứ ở cấp độ thấp hơn nhiều sau đó ứng dụng web. Một số ví dụ về những điều này là mã và tài nguyên có sẵn ở cấp JVM, do đó tất cả những khả năng này để thiết lập các tệp chính sách ở cấp JVM.

Tuy nhiên, vì Java EE được xây dựng trên đầu trang của Java SE, một vài mô-đun từ JAAS được tái sử dụng trong bảo mật Java EE như LoginModules và Callbacks. Lưu ý rằng ngoài bảo mật Java EE, còn có bảo mật Spring (trước đây gọi là Acegi), tương tự như bảo mật Java EE nguyên gốc đã khắc phục một "lớp" cao hơn nhiều trong vấn đề bảo mật ứng dụng web. Nó là một triển khai bảo mật riêng biệt và không được xây dựng trên đầu trang của bảo mật Java EE tiêu chuẩn, mặc dù nó hoạt động tương tự trong nhiều trường hợp. Để tóm tắt, trừ khi bạn đang tìm cách bảo mật tài nguyên ở cấp độ Java SE (lớp, tài nguyên hệ thống), tôi không thấy bất kỳ việc sử dụng thực sự nào của JAAS ngoài việc sử dụng lớp và giao diện chung. Chỉ cần tập trung vào việc sử dụng Bảo mật mùa xuân hoặc bảo mật Java EE cũ đơn giản, cả hai đều giải quyết được rất nhiều vấn đề bảo mật ứng dụng web phổ biến.

+2

Hướng dẫn Java EE 6 giả định hiểu các khái niệm bảo mật cơ bản, do đó, tổng quan về JAAS sẽ không bị tổn thương. – jacktrades

+0

Giải thích tốt nhất về JAAS! –

+0

@isiu, tôi muốn tạo phụ lục, nếu có thể. Tôi tin rằng [câu trả lời của tôi] (http://stackoverflow.com/a/43220700/3542189) có thể giúp bạn hiểu câu trả lời của mình. Nói khái niệm. – pss1suporte

11

javax.security là imho overcomplicated API. Kết quả là có những người triển khai của LoginModules không chỉ, nhưng toàn bộ xác thực và ủy quyền api, tạo lớp trừu tượng ở trên, như xác thực & Trình quản lý ủy quyền.

Để bắt đầu, bạn nên in this vào bộ nhớ của mình.

Thứ hai, imho đơn giản nhất, thiết lập & thư viện đi cho JAAS là Jboss PicketBox. Nó nói làm thế nào để làm xác thực và ủy quyền thông qua JBossAuthenticationManager và JBossAuthorizationManager ... Dễ dàng cấu hình thông qua XML hoặc chú thích. Bạn có thể sử dụng nó để quản lý cả ứng dụng web và các ứng dụng độc lập.

Nếu bạn cần phần ủy quyền để quản lý quyền truy cập kho lưu trữ, trong điều khoản của ACL cho tài nguyên, đây là những gì bạn đang tìm kiếm chắc chắn.

Vấn đề với an ninh là, thông thường bạn cần để tùy chỉnh nó cho nhu cầu của bạn, vì vậy bạn có thể sẽ thực hiện:

LoginModule - xác minh userName + Mật khẩu

CallbackHandler được sử dụng như Điều này new LoginContext("Sample", new MyCallbackHandler());

CallbackHandler được chuyển đến LoginModules cơ bản để họ có thể giao tiếp và tương tác với người dùng - nhắc tên người dùng và mật khẩu qua inte người dùng đồ họa rface, ví dụ. Vì vậy, bên trong của Handler bạn nhận được tên người dùng và mật khẩu từ người dùng và nó được chuyển đến LoginModule.

LoginContext - sau đó bạn chỉ cần gọi lc.login(); và xác thực thông tin đăng nhập. LoginContext được điền với đối tượng được xác thực.

Tuy nhiên Jboss picketbox cung cấp cho bạn một cách thực sự dễ dàng để đi, trừ khi bạn cần một cái gì đó cụ thể. câu trả lời

7

lsiu là một trong những câu trả lời ở đây là thực sự "làm cho nó";)

Thêm vào câu trả lời đó, một tài liệu tham khảo thực sự tốt về chủ đề này là Whatever Happened to JAAS?. Nó giải thích cách JASPIC là liên kết trong Java EE giữa các mô hình bảo mật của Servlet và EJB và có thể là mô-đun đăng nhập JAAS, nhưng trong nhiều trường hợp, vai trò của JAAS được giảm xuống tương ứng với tên người dùng và vai trò tương đối đơn giản trong Java EE.

Từ cùng một tác giả là JAAS in the Enterprise, là một bài viết cũ hơn nhưng cung cấp nhiều nền tảng lịch sử về lý do mô hình Java SE (JAAS) và Java EE phân tách theo cách họ đã làm.

Nhìn chung nhưng một số loại từ JAAS được sử dụng trực tiếp trong Java EE, về cơ bản là Principal, SubjectCallbackHandler. Hai loại sau được sử dụng chủ yếu bởi JASPIC. Tôi đã giải thích JASPIC trong bài viết Implementing container authentication in Java EE with JASPIC.

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