2017-12-21 14 views
0

過去数日間、私はJavaで暗号化を使用してSOAP Webサービスを作成するのに苦労しています。 誰も私にどのようにそれを達成することができます示唆できますか?Javaでのx.509を使用したSOAP暗号化

私は今まで何をしてきたのかをあなたに見せます。

1)Person.java(POJOクラス)

package com.journaldev.jaxws.beans; 

import java.io.Serializable; 

public class Person implements Serializable{ 

private static final long serialVersionUID = -5577579081118070434L; 

private String name; 
private int age; 
private int id; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getAge() { 
    return age; 
} 

public void setAge(int age) { 
    this.age = age; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

@Override 
public String toString(){ 
    return id+"::"+name+"::"+age; 
} 

} 

2)PersonService(インタフェース)

package com.journaldev.jaxws.service; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.jws.soap.SOAPBinding; 

import com.journaldev.jaxws.beans.Person; 

@WebService 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public interface PersonService { 

@WebMethod 
public boolean addPerson(Person p); 

@WebMethod 
public boolean deletePerson(int id); 

@WebMethod 
public Person getPerson(int id); 

@WebMethod 
public Person[] getAllPersons(); 
} 

3)PersonServiceImpl(サービス実装クラス)

package com.journaldev.jaxws.service; 

import java.util.HashMap; 
import java.util.Map; 
import java.util.Set; 

import javax.jws.WebService; 

import com.journaldev.jaxws.beans.Person; 

@WebService(endpointInterface = "com.journaldev.jaxws.service.PersonService") 
public class PersonServiceImpl implements PersonService { 

private static Map<Integer,Person> persons = new HashMap<Integer,Person>(); 

@Override 
public boolean addPerson(Person p) { 
    if(persons.get(p.getId()) != null) return false; 
    persons.put(p.getId(), p); 
    return true; 
} 

@Override 
public boolean deletePerson(int id) { 
    if(persons.get(id) == null) return false; 
    persons.remove(id); 
    return true; 
} 

@Override 
public Person getPerson(int id) { 
    return persons.get(id); 
} 

@Override 
public Person[] getAllPersons() { 
    Set<Integer> ids = persons.keySet(); 
    Person[] p = new Person[ids.size()]; 
    int i=0; 
    for(Integer id : ids){ 
     p[i] = persons.get(id); 
     i++; 
    } 
    return p; 
} 

} 

4) SOAPパブリッシャー(パブリッシャーまたはサーバー)

package com.journaldev.jaxws.service;

import javax.xml.ws.Endpoint; 

public class SOAPPublisher { 

public static void main(String[] args) { 
    Endpoint.publish("http://localhost:8080/ws/person", new PersonServiceImpl()); 
} 

} 

5)SOAPPublisherClient(クライアント)

package com.journaldev.jaxws.service; 

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.Arrays; 

import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 

import com.journaldev.jaxws.beans.Person; 

public class SOAPPublisherClient { 

public static void main(String[] args) throws MalformedURLException { 
    URL wsdlURL = new URL("http://localhost:8080/ws/person?wsdl"); 
    //check above URL in browser, you should see WSDL file 

    //creating QName using targetNamespace and name 
    QName qname = new QName("http://service.jaxws.journaldev.com/", "PersonServiceImplService"); 

    Service service = Service.create(wsdlURL, qname); 

    //We need to pass interface and model beans to client 
    PersonService ps = service.getPort(PersonService.class); 

    Person p1 = new Person(); p1.setName("Pankaj"); p1.setId(1); p1.setAge(30); 
    Person p2 = new Person(); p2.setName("Meghna"); p2.setId(2); p2.setAge(25); 

    //add person 
    System.out.println("Add Person Status="+ps.addPerson(p1)); 
    System.out.println("Add Person Status="+ps.addPerson(p2)); 

    //get person 
    System.out.println(ps.getPerson(1)); 

    //get all persons 
    System.out.println(Arrays.asList(ps.getAllPersons())); 

    //delete person 
    System.out.println("Delete Person Status="+ps.deletePerson(2)); 

    //get all persons 
    System.out.println(Arrays.asList(ps.getAllPersons())); 

} 

} 

これは私が現在やっていることです。 X.509を使ってMessage本体を暗号化する方法を知りたい。 これは、サーバーコードとクライアントコードのどちらにも役立ちます。

+0

と - いくつかのより多くのリンクhttps://stackoverflow.com/questions/3752075/sign-and-encrypt-soap-messages-with-apache-cxf – gusto2

答えて

0

WS-Securityと呼ばれるだけでなく採用SOAP拡張機能があります。規格は、署名されたメッセージと暗号化されたメッセージの外観を定義します。

私はあなたが使用しているフレームワークを確認していない(他のCXF、Axis2のは、?)の各フレームワークをセットアップするメッセージの暗号化をさまざまな方法があります。 CXFの場合

私はthis readingで始まり、さらにはリンクされ、いくつかのsamplesがあります示唆しています。

私は、私は私の以前のプロジェクトから持っていた/リンクのコードスニペットを見つけることができません、私はそれらを見つけた場合、私は私が許可されるとき、それらをここに貼り付けようとします。

関連する問題