2013-05-17 33 views
9

Sử dụng spring-security-oauth2 để bảo vệ tài nguyên của tôi khỏi điểm cuối SSO có thể hoạt động như một máy chủ ủy quyền. Tôi hơi bối rối khi tài liệu nêu rõ:Cách nào đúng để tách Máy chủ tài nguyên và Máy chủ ủy quyền?

Vai trò của nhà cung cấp trong OAuth 2.0 thực sự được phân chia giữa Dịch vụ ủy quyền và Dịch vụ tài nguyên và đôi khi trong cùng một ứng dụng, với OAuth bảo mật mùa xuân, bạn có tùy chọn chia chúng trên hai ứng dụng và cũng có nhiều Dịch vụ tài nguyên dùng chung Dịch vụ cấp phép.

Nhưng tôi không nghĩ rằng tôi đã tìm thấy một ví dụ về điều này xảy ra. Trong sparklr/tonr máy chủ ủy quyền và máy chủ tài nguyên nằm trong cùng một ứng dụng. Ví dụ duy nhất tôi thấy từ tìm kiếm là this spring-servlet.xml, yêu cầu this triển khai tùy chỉnh ResourceServerTokenServices để hoạt động.

Tôi muốn tránh viết thực hiện tùy chỉnh ResourceServerTokenServices nếu có thể. Có cách nào khác để hỗ trợ máy chủ ủy quyền bên ngoài trong máy chủ tài nguyên không? Nội dung nào đó dọc theo dòng:

<bean class="com.example.ExternalAuthorizationServerTokenServices" 
    p:remote-url="https://my-oauth-compatible-sso.com" 
    p:token-endpoint="/oauth/access_token" 
    p:authorize-endpoint="/oauth/authorize" /> 

Điều này có thể?

* CHỈNH SỬA: Tôi sẽ thêm nó như một giải pháp thay thế (hoặc có thể đây là giải pháp dự định) Tôi đang sử dụng một cửa hàng mã thông báo jdbc và dựa vào thực tế là cả hai máy chủ đều có quyền truy cập vào cơ sở dữ liệu đó.

+1

như thế nào kết quả tìm kiếm? Tôi bắt đầu đối mặt với cùng một vấn đề và bất kỳ lời khuyên nào sẽ được đánh giá cao. – beku8

+2

Kết quả chính xác là những gì tôi đang tìm kiếm. Miễn là bạn chỉ định một 'JdbcTokenStore' được trỏ tới cùng một' DataSource' cho cả máy chủ tài nguyên và máy chủ ủy quyền, nó có vẻ hoạt động tốt. – Joe

+1

Tôi đã tách các auth và các máy chủ tài nguyên. Các trường hợp thử nghiệm chưa hoàn thành. Bạn có thể tìm thấy nó ở đây https://github.com/nareshbafna/oauth2 – anfab

Trả lời

0

Bạn có thể tách tài nguyên mở và tài nguyên được bảo vệ trong spring-security.xml

Mẫu/api/** sẽ được bảo vệ và các tài nguyên khác sẽ được mở.

<!-- Protected resources --> 
    <http pattern="/api/**" create-session="never" use-expressions="true" 
     entry-point-ref="oauthAuthenticationEntryPoint" 
     access-decision-manager-ref="accessDecisionManager" 
     xmlns="http://www.springframework.org/schema/security"> 
     <anonymous enabled="false" /> 
     <intercept-url pattern="/api/**" 
      access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" /> 
     <custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" /> 
     <!-- <access-denied-handler ref="oauthAccessDeniedHandler"/> --> 
     <access-denied-handler ref="oauthAccessDeniedHandler" /> 
    </http> 
Các vấn đề liên quan