[JAVA] Erstellen Sie eine JSON-API, die die RSA-Verschlüsselung mit Wicket unterstützt

Umgebung

Hintergrund

Ich möchte mit JSON auf der Wicket-Seite kommunizieren! Übrigens mit einer verschlüsselten Anfrage ...

Fordern Sie mit jsencrypt die RSA-Verschlüsselung an

Setzen Sie den öffentlichen Schlüssel auf pubKey.

myjsencrypt.js


my.jsencrypt = {
        pubKey: '-----BEGIN PUBLIC KEY-----\
Inhalt des öffentlichen Schlüssels
-----END PUBLIC KEY-----\
'

Initialisieren.

myjsencrypt.js


        // encryption setting
        var encrypt = new JSEncrypt();
        encrypt.setPublicKey(my.jsencrypt.pubKey);

Wirf eine Anfrage.

myjsencrypt.js


        // request
        var xhr = new XMLHttpRequest();
        xhr.open("POST",Ziel-URL, true);
        xhr.setRequestHeader("content-type", "application/json");
        xhr.send( encrypt.encrypt(JSON.stringify(data)) );

Bibliothek für json

Es scheint verschiedene Dinge zu geben, aber jackson schien gut zu sein, also habe ich versucht, es zu verwenden. Es ist eigentlich einfach zu bedienen. Stellen Sie es einfach in pom.xml ein.

pom.xml


		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.2</version>
		</dependency>

Seitenverarbeitung mit Wicket

Holen Sie sich die Anfrage und machen Sie sie zu einem Parameter. Informationen zu RSAUtil finden Sie unter RSA-Verschlüsselung / Entschlüsselung mit Java 8.

MyJsonPage.java



		RequestCycle requestCycle = getRequestCycle();
		final WebRequest webRequest = (WebRequest) getRequest();
		final HttpServletRequest rawRequest = (HttpServletRequest) webRequest.getContainerRequest();

		BufferedReader br = null;
		JsonFactory jsonFactory = new JsonFactory();
		ObjectMapper jsonMapper = new ObjectMapper(jsonFactory);

		// <Parametername,Wert>Machen Sie eine Karte von
		TypeReference<ConcurrentHashMap<String,String>> typeRef = new TypeReference<ConcurrentHashMap<String,String>>(){};

		try {
			StringBuffer sb = new StringBuffer();
			br = rawRequest.getReader();

			for (String line = br.readLine(); line != null; line = br.readLine()) {
				sb.append(line);
			}

			// decrypt RSA input
			PrivateKey privKey = RSAUtil.readPrvateKeyFromPem(Private Schlüsseldatei);
			String decrypted = RSAUtil.decryptWithPrivateKey(sb.toString(), privKey);

			// decrypted params to json map
			inputJsonMap = jsonMapper.readValue(decrypted, typeRef);

		} catch (Exception e) {
			/*Fehlerbehandlung*/
		}

Nachdem Sie die Parameter erhalten haben, verarbeiten Sie diese Seite ...

Bereiten Sie eine Methode zum Festlegen des Inhaltstyps vor.

MyJsonPage.java


	// Set content-type
	protected String getContentType() {
		final String encoding = getApplication().getRequestCycleSettings().getResponseRequestEncoding();
		return "application/json; charset=" + encoding;
	}

Gibt den JSON für das Ergebnis zurück.

MyJsonPage.java


		// build JSON response
		try {
			jsonResponse = jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(returnObject);
		} catch (JsonProcessingException e) {
			/*Fehlerbehandlung*/
		}

		requestCycle.scheduleRequestHandlerAfterCurrent(
				new ResourceStreamRequestHandler(
					new StringResourceStream(jsonResponse)	) {

					@Override
					public void respond(IRequestCycle requestCycle) {
						((WebResponse) requestCycle.getResponse()).setContentType(getContentType());
						super.respond(requestCycle);
					}
				}
				);

Dies ist praktisch, da es von Object in JSON konvertiert. PrettyPrinter ist enthalten, da es leicht zu sehen ist.

das ist alles. Danke für deine harte Arbeit!

Recommended Posts

Erstellen Sie eine JSON-API, die die RSA-Verschlüsselung mit Wicket unterstützt
Erstellen Sie mit JAVA eine unveränderliche Klasse
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie eine Excel-Datei mit poi
Erstellen Sie eine einfach zu erweiternde Stream-API-Alternative
Erstellen Sie eine App mit Spring Boot
Lassen Sie uns eine Instanz mit .new selbst erstellen. .. ..
[Java] Erstellen Sie mit Gradle ein ausführbares Modul
Nuxt.js × Erstellen Sie eine Anwendung im Rails-API-Modus
Erstellen Sie eine coole API-Spezifikation mit Micronaut + Swagger UI
Erstellen Sie eine EC-Site mit Rails5 ⑤ ~ Kundenmodell ~
Erstellen Sie einen Annotator, der Kuromoji mit NLP4J verwendet. [007]
Erstellen Sie einen Web-API-Server mit Spring Boot
Erstellen Sie eine EC-Site mit Rails 5 ⑩ ~ Erstellen Sie eine Bestellfunktion ~
Anders als bei JSON
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 2
Erstellen Sie einen HTTPS-Dateiserver für die Entwicklung mit dem Ring-Jetty-Adapter
Erstellen Sie eine EC-Site mit Rails5 Address ~ Adresse, Genre-Modell ~
Erstellen einer EC-Site mit Rails 5 ⑨ ~ Erstellen einer Warenkorbfunktion ~
Erstellen Sie eine EC-Site mit Rails5 ④ ~ Kopf- und Fußzeile ~
Erstellen Sie mit Docker x Cypress eine E2E-Testumgebung
Erstellen Sie eine EC-Site mit Rails5 seed ~ Startdateneingabe ~
Erstellen Sie einen Service mit einem leeren Modell Liferay 7.0 / DXP
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 1