Làm thế nào một nhà cung cấp JACC có thể sử dụng các phương tiện ánh xạ vai trò chính của máy chủ được triển khai trên đó?


154

Tôi đang viết một JACCnhà cung cấp.

Trên đường đi, điều này có nghĩa là thực hiện a PolicyConfiguration.

PolicyConfigurationtrách nhiệm chấp nhận thông tin cấu hình từ máy chủ ứng dụng, chẳng hạn như quyền nào tích lũy cho vai trò nào. Điều này là để Policysau này có thể đưa ra quyết định ủy quyền khi trao thông tin về người dùng hiện tại và những gì anh ta đang cố gắng thực hiện.

Tuy nhiên, đó không phải là một phần của PolicyConfigurationhợp đồng (tàn bạo) để duy trì ánh xạ giữa các vai trò và quyền của họ và Principalsđược gán cho các vai trò đó.

Thông thường - luôn luôn, thực sự - một máy chủ ứng dụng chứa ánh xạ này. Ví dụ, trên Glassfish, bạn ảnh hưởng đến bản đồ này bằng cách cung cấp những thứ như sun-web.xmlsun-ejb-jar.xmlvv với các module Java EE của bạn. (Các tệp dành riêng cho nhà cung cấp này chịu trách nhiệm cho biết, ví dụ: superuserslà một nhóm sẽ được chỉ định vai trò ứng dụng của admins.)

Tôi muốn sử dụng lại chức năng mà các tệp này cung cấp và tôi muốn làm như vậy cho càng nhiều mảng máy chủ ứng dụng càng tốt.

Đây là - hoàn toàn tùy tiện - IBM đảm nhận vấn đề này, dường như để xác nhận sự nghi ngờ của tôi rằng những gì tôi muốn làm về cơ bản là không thể . (Thêm đạn cho trường hợp của tôi rằng hợp đồng Java EE cụ thể này không xứng đáng với tờ giấy được in trên đó.)

Câu hỏi của tôi: làm thế nào để tôi có được thông tin ánh xạ vai trò chính này - cho người mới bắt đầu - Glassfish và JBoss từ bên trong a PolicyConfiguration? Nếu có một cách tiêu chuẩn để làm điều đó mà tôi không biết, thì tôi là tất cả.


7
Bạn đã có tiến bộ nào về vấn đề này chưa? Tôi cũng muốn viết một nhà cung cấp JACC và cũng là nhà cung cấp xác thực JASPIC để xây dựng các ứng dụng web di động ...
perissf

Điều này cũng không có vẻ rất hứa hẹn: Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.Xem docs.oracle.com/cd/E24329_01/web.1211/e24485/ Kẻ
Arjan Tijms

2
Tôi đồng ý với điều này vào lúc này là bạn phải luôn đảm bảo rằng nhà cung cấp JACC của bạn được kết hợp với một nhà cung cấp JASPIC mà bạn cũng có nghĩa vụ phải viết. Tôi chưa đi con đường này nhưng nó đã ở trên bàn của tôi để thử.
Laird Nelson

@LairdNelson, nếu bạn có thời gian, có lẽ bạn nên viết một câu trả lời xung quanh bình luận JASPIC của bạn. Điều này nghe có vẻ hứa hẹn và có 300 tiền thưởng danh tiếng cho câu hỏi này.
jimhark

5
Chào; không cố giữ ai trong sự hồi hộp :-) Tôi không có câu trả lời ở đây rằng tôi có thể nhanh chóng đánh đòn. Tôi chỉ nhớ Ron Monzillo khuyên tôi rằng cách duy nhất để nhận các nhiệm vụ chính cho vai trò "vào" một nhà cung cấp JACC theo cách mà nó có thể hiểu là thực hiện JASPIC cùng với nó một cách hiệu quả.
Laird Nelson

Câu trả lời:


3

Câu trả lời ngắn gọn là: không có cách chuẩn để làm điều đó.

Mặc dù Glassfish và JBoss hỗ trợ ánh xạ vai trò chính, JACC không giả định tất cả các container làm, và do đó, nó giao trách nhiệm giữ các ánh xạ đó cho việc triển khai của nhà cung cấp JACC. Từ các tài liệu (xem: PolicyConfiguration.addToRolephương thức ):

Công việc của nhà cung cấp Chính sách là đảm bảo rằng tất cả các quyền được thêm vào vai trò đều được cấp cho hiệu trưởng "được ánh xạ tới vai trò".

Nói cách khác, bạn cần tự thực hiện điều đó trong nhà cung cấp JACC của mình cho mỗi container. Ví dụ, đối với JBoss, bạn có thể sử dụng một trong các lớp con của AbstractRolesMappingProvider.


Bên cạnh đó, một nhà cung cấp di động có thể chọn bỏ qua ánh xạ vai trò của container; ví dụ, có thể giả sử rằng bất kỳ hiệu trưởng nào ngụ ý vai trò ứng dụng cùng tên, trừ khi ứng dụng bằng cách nào đó (thông qua một PolicyContextHandlernhà cung cấp được đăng ký cụ thể cho mục đích đó, chẳng hạn) chuyển tải theo cách khác. Một nhà cung cấp khác cũng có thể bỏ qua khái niệm về vai trò hoàn toàn (và do đó do container cung cấp PolicyConfiguration), thay vào đó chỉ hoạt động trên các ánh xạ chính cho phép (do ứng dụng cung cấp) (và trong đó các quyền đó không bị giới hạn đối với các quyền của JACC).
Uux

Lưu ý phụ # 2: Kể từ Java EE 8, ánh xạ theo vai trò nhóm 1: 1 đã trở thành mặc định mới (tuy nhiên chỉ đưa chúng ta đi được nửa đường, vì các vai trò vẫn phải được khai báo tĩnh - giả sử không có nhà cung cấp JACC tùy chỉnh nào có hiệu lực).
Uux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.