2011-12-22 57 views
10

OAuth2ProtectedResourceFilter trong org.springframework.security.oauth2.provider.filter:không RESOURCEID có ý nghĩa gì trong OAuth 2.0 với Xuân An

Collection<String> resourceIds = auth.getClientAuthentication().getResourceIds(); 
if (resourceIds!=null && !resourceIds.isEmpty() && !resourceIds.contains(resourceId)) { 
    throw new InvalidTokenException("Invalid token does not contain resource id ("+resourceId+"): " + token);     
} 

Tôi nghĩ rằng nó không phải là hữu ích. Mã này kiểm tra cái gì?

Trả lời

0

Dường như nó kiểm tra xem khách hàng có được phép xem một tài nguyên cụ thể hay không. Bạn không chắc chắn về cách biến của mã thông báo tham gia, có vẻ như có một số mã có liên quan hơn mà bạn không hiển thị.

3

Dựa trên những gì tôi đã thu thập, đó là id của dịch vụ tài nguyên.

Nó trở nên rõ ràng hơn khi bạn xem xét việc tách biệt nhà cung cấp mã thông báo oauth và máy chủ tài nguyên của bạn cho mục đích phiên bản api. Ví dụ: khách hàng A (cA) có quyền truy cập api1 và Client B (cB) có quyền truy cập api2, bạn thực thi quyền truy cập này bằng cách đọc chính tả trong máy chủ tài nguyên xml của bạn cho api1 đó là tài nguyên-id = api1 và sau đó định cấu hình chi tiết khách hàng của bạn cho cA rằng chúng có resourceIds = "api1", và tương tự cho [cB, api2].

Điều này cho phép chúng tôi bảo vệ quyền truy cập api và giữ tuyên bố bảo vệ riêng biệt với tuyên bố vai trò khách hàng của chúng tôi.

+5

Các resourceIds khác với các phạm vi như thế nào? – yankee