2009-11-27 36 views

Trả lời

9

JSecurity thực sự đã trở thành một dự án Apache dưới tên Apache Ki một thời gian trước và họ không hài lòng với thay đổi tên vì lý do nào đó và đã thay đổi nó thành Apache Shiro ngay sau đó. Ngoài ra Stark chỉ là một trình bao bọc plugin grails cho Spring Security và acegi là nguồn gốc của dự án Spring Security.

Vậy cái nào sẽ sử dụng?

Trước hết là, Spring Security là một API bảo mật trưởng thành và đã được sử dụng rộng rãi, từ sự ổn định, hỗ trợ và đặc biệt là quan điểm bảo mật, đây là một lựa chọn tốt. Shiro tiếc là mất một chút trong này kể từ khi tôi biết, nó vẫn còn thiếu trong việc áp dụng rộng rãi.

Thứ hai, cách thức mà khung bảo mật thực sự hoạt động là khá quan trọng, nó phải có khả năng cho phép bạn thực hiện chương trình yêu cầu bảo mật ứng dụng của mình. Ví dụ: trong khi một số người thích cách Shiro hoạt động (see this tutorial, đặc biệt là phần dưới dòng tiêu đề "Quickstart.java"), những người khác không thể sống mà không có công cụ Spring-esque Spring Security, v.v. Về cơ bản bạn cần phải thử cả hai và tìm ra nếu họ đáp ứng nhu cầu của bạn từ quan điểm khả năng sử dụng xem.

Thứ ba, hãy chắc chắn về bảo mật thực tế! Bảo mật mùa xuân có thể được kiểm dịch để bảo mật, Shiro là an toàn nhất vì không có sự chấp nhận rộng rãi nào ẩn các vấn đề bảo mật một cách dễ dàng, xem ví dụ Firefox vulnerabilities để xem cơ sở người dùng bắt đầu ảnh hưởng đến bảo mật thực tế của ứng dụng trong thời gian dài.

Để kết thúc điều này, nếu tôi phải chọn cho bạn, tôi sẽ chọn Spring Security vì nó được sử dụng rộng rãi, nó được cách ly để bảo mật và đã tích hợp với Grails. JSecurity/Ki/Shiro không tệ chút nào và tôi đã sử dụng nó một thời gian, nhưng hiện tại nó đang ở trạng thái yếu kém vì ai biết lý do gì và cho một khung bảo mật không thể chấp nhận được.

Chỉnh sửa: Đã hơn 1 năm kể từ khi tôi trả lời câu hỏi này, tôi cảm thấy cần phải quay lại và nói rằng gần đây công ty chúng tôi đã quyết định đi với Spring Security do khả năng cắm và tính năng được chứng minh cao. Điều này tất nhiên làm tôi hơi thiên vị nhưng trong mọi trường hợp, tôi muốn nói rằng Spring Security là con đường để đi.

+0

Ôi trời ơi, thậm chí không nhớ đã trả lời câu trả lời này ... Tôi cảm thấy cần chỉnh sửa theo một vài dòng :) – Esko

7

Câu trả lời của Esko rất tuyệt vời và toàn diện. Tôi đã đánh giá các khung công tác khác nhau cách đây một tháng và đã chọn Shiro làm khung bảo mật cơ bản, mặc dù có kinh nghiệm trước đó với Spring Security. Tôi cần một giải pháp có khả năng tạo ra các yêu cầu ủy quyền phức tạp. Mô hình của JSecurity rất đơn giản, nhưng rất mạnh mẽ.

Điều cuối cùng đã thuyết phục được tôi, là plugin Nimble, là một lớp giao diện người dùng trên đầu trang của Shiro. Nó cho phép bạn quản lý người dùng, vai trò, nhóm, tạo tài khoản tự phục vụ, email, v.v ... và dễ dàng tích hợp vào ứng dụng của bạn. Không phải viết tất cả mã đó là một chiến thắng lớn đối với tôi. Nó cũng cho phép tích hợp với OpenId, facebook, và những thứ khác.

Nếu Nimble làm việc cho SpringSecurity, tôi có lẽ đã chọn nó, nhưng tôi đã xem nó như một chiến thắng lớn đối với tôi.

0

Cảm ơn các bạn đã trả lời. Tôi thực sự đã thử an ninh mùa xuân trên một ứng dụng grails.Plugin grails làm cho nó khá dễ sử dụng.

liên quan.

Josh

+0

Psst, SO nghi thức là bạn chọn một trong các câu trả lời là "đúng" * đánh dấu màu xanh lá cây dưới bộ đếm lên/xuống * sau khi bạn cảm thấy như bạn đã cho một cái. Tôi biết, đôi khi rất khó vì có nhiều câu trả lời hay nhưng nó sẽ giúp mọi người trong tương lai, đặc biệt là những người không có thời gian để đọc từng từ liên quan đến câu hỏi. – Esko

1

Tôi đã sử dụng cả hai khuôn khổ và yêu thích cách Shiro hoạt động so với phương pháp của Spring. Tôi không biết tại sao Spring Security lại nổi tiếng đến vậy. Không giống như Shiro, Spring Security chạy tự nhiên trong suốt ứng dụng bất cứ khi nào cấu hình là cần thiết. Không phải là an ninh một mối quan tâm xuyên suốt cho hầu hết các ứng dụng? Nếu vậy, nó sẽ không được "sạch mã" để cô lập nó vào một địa điểm duy nhất? Hai xu của tôi.