2012-05-14 32 views
18

Tôi cần triển khai ứng dụng khách jax-ws.Chính sách ký và mã hóa

Đây là những gì các tài liệu cung cấp nói về an ninh

Hiện nay, chúng tôi sử dụng SOAP Message Security phiên bản 1.0 đặc điểm kỹ thuật tại http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf

Tiêu chuẩn này sử dụng hai khác từ mức W3C:
XMLENC (http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/)
và XMLDSIG (http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/)

Để ký, một "SecurityTokenReference" sử dụng một "tham chiếu" trực tiếp chỉ định "URI" và "valueType" của X509 là bắt buộc. Đối với mã hóa , chúng tôi cũng khuyên bạn nên sử dụng mã hóa, nhưng chúng tôi cũng hỗ trợ theo thứ tự tùy chọn tham chiếu đến khóa người định danh, tên X509IssuerSerial hoặc .

Khối được mã hóa và đã ký phải là thẻ “body”.

Chúng tôi khuyên bạn nên sử dụng: “rsa-sha1” để ký, “rsa-1_5” cho khóa mã hóa và “tripledes-cbc” để mã hóa nội dung.

Vì vậy, tôi đã đưa ra chính sách sau (được tạo từ netbeans). Nhưng ... nó không nhìn thẳng vào tôi. Dịch vụ web không thể truy cập được, nhưng tôi không chắc chắn rằng các phiên bản thông số phù hợp. Tôi đọc rất nhiều về chủ đề này, nhưng tôi vẫn còn hơi bối rối. Chính sách này có ổn không?

<wsp1:Policy wsu:Id="ListeOperationsPeriodeSoapBindingSoapPolicy"> 
    <wsp1:ExactlyOne> 
     <wsp1:All> 
      <sp:TransportBinding> 
       <wsp1:Policy> 
        <sp:TransportToken> 
         <wsp1:Policy> 
          <sp:HttpsToken RequireClientCertificate="false"/> 
         </wsp1:Policy> 
        </sp:TransportToken> 
        <sp:Layout> 
         <wsp1:Policy> 
          <sp:Lax/> 
         </wsp1:Policy> 
        </sp:Layout> 
        <sp:AlgorithmSuite> 
         <wsp1:Policy> 
          <sp:TripleDesRsa15/> 
         </wsp1:Policy> 
        </sp:AlgorithmSuite> 
       </wsp1:Policy> 
      </sp:TransportBinding> 
      <sp:Wss10/> 
      <sp:EndorsingSupportingTokens> 
       <wsp1:Policy> 
        <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
         <wsp1:Policy> 
          <sp:WssX509V3Token10/> 
         </wsp1:Policy> 
        </sp:X509Token> 
       </wsp1:Policy> 
      </sp:EndorsingSupportingTokens> 

     </wsp1:All> 
    </wsp1:ExactlyOne> 
</wsp1:Policy> 
<wsp:Policy wsu:Id="ListeOperationsPeriodeSoapBindingSoap_perform_Input_Policy"> 
    <wsp:ExactlyOne> 
     <wsp:All> 
      <sp1:SignedEncryptedSupportingTokens> 
       <wsp:Policy> 
        <sp1:X509Token sp1:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
         <wsp:Policy> 
          <sp1:WssX509V3Token10/> 
         </wsp:Policy> 
        </sp1:X509Token> 
       </wsp:Policy> 
      </sp1:SignedEncryptedSupportingTokens> 
     </wsp:All> 
    </wsp:ExactlyOne> 

</wsp:Policy> 

CHỈNH SỬA: Tôi không thể gửi thư được mong đợi bằng witit. Ví dụ, bằng cách sử dụng thuật sĩ Netbeans, tôi không thể nhận được một tiêu đề được mã hóa mà không sử dụng địa chỉ. Nó có thể là có thể?

Tôi đã hack thứ gì đó với lớp trục 1 cũ và wss4j, nó hoạt động nhưng nó xấu xí và tôi muốn sử dụng thứ gì đó tương lai hơn.

+0

Khoản tiền thưởng lớn hơn có giúp được không? – ymajoros

+0

Tôi không thể nhận được thư để gửi tin nhắn mong muốn bằng wsit. Ví dụ, bằng cách sử dụng thuật sĩ Netbeans, tôi không thể nhận được một tiêu đề được mã hóa mà không sử dụng địa chỉ. Nó có thể là có thể? Tôi đã hack cái gì đó với một lớp 1 trục cũ và wss4j, nó hoạt động nhưng nó xấu xí và tôi muốn sử dụng một cái gì đó tương lai hơn bằng chứng. – ymajoros

+0

Đây là một câu hỏi đánh giá mã thuộc về trang đánh giá mã. – user1378730

Trả lời

1

Có thể bạn muốn thử với CXF thay vì WSIT? http://cxf.apache.org/docs/ws-security.html

+0

Tôi có thể. Tôi đã giải quyết được vấn đề của mình với một bản hack xấu xí. Các nhà cung cấp nói rằng nó sẽ làm cho một wsdl phong nha với những hạn chế an ninh, có thể vào năm tới hoặc lâu hơn. Khi họ sẽ, tôi sẽ sử dụng wsit và nó sẽ hoạt động. Trong khi đó, hoạt động hack xấu xí của tôi hoạt động. – ymajoros

+0

Bạn có sử dụng CXF để hack xấu xí của bạn sau đó không? – adosaiguas

+0

Không, tôi đã điều chỉnh một số lớp học wss4j và tàu điện ngầm 1 để làm việc với tàu điện ngầm, vì tôi đã có cấu hình hoạt động trong tàu điện ngầm/wss4j. Về cơ bản tôi đã sao chép và thay đổi các lớp tàu điện ngầm, vì vậy không có sự phụ thuộc vào tàu điện ngầm. Tôi vẫn tin rằng tàu điện ngầm là sự lựa chọn đúng đắn. Như tôi đã có một cái nhìn sâu sắc về wss4j, tôi đảm bảo với bạn nó bẩn như địa ngục. – ymajoros

1

Bạn có vẻ bối rối. Nói chung, bạn nên có một chính sách duy nhất. Trong trường hợp của bạn, bạn có nguy cơ chấp nhận các cuộc gọi dịch vụ web không an toàn bởi vì bạn có một chính sách xác định ràng buộc vận chuyển (https), trong khi cái kia thì không.

Ngoài ra, vì bạn có một ràng buộc vận chuyển, điều đó có nghĩa là toàn bộ cơ thể sẽ được mã hóa bằng giao thức truyền tải (https). Bạn không cần phải xác định mã hóa cơ thể một cách rõ ràng. Trong thực tế, ràng buộc này sẽ mã hóa mọi thứ ngoại trừ tiêu đề http.

Ràng buộc vận chuyển thực sự là cách dễ nhất để nhận các dịch vụ web bảo mật. Nếu bạn muốn kiểm soát toàn bộ, bạn phải viết liên kết đối xứng hoặc đối xứng riêng của bạn tùy thuộc vào nhu cầu của bạn. Asymetric phức tạp hơn vì nó đòi hỏi một chứng chỉ trên cả hai mặt, trong khi asymetric chỉ yêu cầu chứng chỉ máy chủ (chấp nhận các máy khách ẩn danh). Các ràng buộc đối xứng và đối xứng đòi hỏi sự quan tâm. Chúng được thiết kế rất linh hoạt và sẽ cho phép bạn thiết kế bất kỳ chính sách nào, ngay cả khi dễ bị tấn công nhất định.

Khi không sử dụng liên kết vận chuyển, thì bạn phải chỉ định nội dung phải được mã hóa.Như đã nêu trong thông số kỹ thuật:

sp:EncryptedParts/sp:Body 

Hoặc dịch sang xml:

<sp:EncryptedParts> 
    <sp:Body/> 
</sp:EncryptedParts> 

Tương tự như vậy, nếu bạn muốn cơ thể sẽ được ký kết:

<sp:SignedParts> 
    <sp:Body/> 
</sp:SignedParts> 

Có thêm nhiều lựa chọn để xác định chữ ký/thứ tự mã hóa, cho dù mã hóa chữ ký hay không, v.v.

Như tên gọi, policie s chẳng hạn như sp: EndorsingSupportingToken áp dụng cho mã thông báo hỗ trợ. Loại tôi quen thuộc là mã thông báo tên người dùng mà bạn có thể đưa vào bên trong yêu cầu dịch vụ web.

WS-SecurityPolicy specification là tài liệu hữu ích nhất mà tôi đã đọc để hiểu chính sách. Bạn nên dành thời gian để đọc kỹ. Nó chi tiết những điều khá tốt và chứa các ví dụ hữu ích. Nó là tốt để đọc các phiên bản khác nhau của các tài liệu vì một số khía cạnh sẽ được tài liệu tốt hơn trong các phiên bản gần đây. Lưu ý tôi đã liên kết v1.3.

Thiết lập máy khách và dịch vụ web và viết các kiểm tra đơn giản. Đặc biệt là nếu bạn chưa quen với dịch vụ web.

Một công cụ sẽ giúp bạn xây dựng chính sách nhanh chóng là SoapUI. Nó không hỗ trợ chính xác những gì tôi cần nhưng nó đã giúp tôi học một vài điều. Nó có một giao diện người dùng tuyệt vời và nó không phải là rất khó sử dụng.

Lấy một số ví dụ hoặc xây dựng một số ví dụ, sau đó giải mã chúng với sự trợ giúp của đặc điểm kỹ thuật.

Tôi đã tìm thấy các chính sách khá phức tạp. Hãy chuẩn bị để hấp thụ rất nhiều khái niệm!

+0

Vâng, tôi không có sự lựa chọn. Tôi là khách hàng và không có gì để nói về máy chủ, được sử dụng bởi các khách hàng khác (bất cứ điều gì tôi nghĩ về nó). Tôi đã có một wsdl mà không có những hạn chế về bảo mật. Điều này không thể thương lượng được. – ymajoros

+0

Đối tác của bạn không hợp tác lắm. Có lẽ họ không quan tâm đến việc bạn gọi dịch vụ của họ? Nếu họ làm khách hàng auth bạn sẽ không bao giờ có thể gọi dịch vụ mà không có chứng chỉ khách hàng thích hợp. Nếu họ yêu cầu tên người dùng + mật khẩu, bạn sẽ không bao giờ có thể gọi dịch vụ. Có thể họ chấp nhận khách hàng ẩn danh qua https? Kiểm tra nó ra. Mã hóa một dịch vụ web đơn giản bằng cách sử dụng bảo mật https (ví dụ: một hàm hello world duy nhất). Sau đó mã máy khách tương ứng. Một khi nó hoạt động, hãy vượt qua các ngón tay của bạn và thử nó với dịch vụ 'thực'. –

+0

'Đối tác của tôi' thực sự là đối tác của khách hàng của tôi và họ có độc quyền, vì vậy chúng tôi cần gọi dịch vụ web của họ vì chúng tôi không có lựa chọn và chúng tôi bị lôi cuốn trong trạng thái rằng nó sẽ không thay đổi bất cứ lúc nào Sớm.Họ cai trị thế giới, bạn sẽ ngạc nhiên bởi những gì họ làm (kinh doanh của họ, không phải công nghệ). Dù sao, tôi có một hack xấu xí được đề cập ở trên mà làm việc trong sản xuất kể từ một vài tháng. – ymajoros

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