[JAVA] Créez une API JSON prenant en charge le cryptage RSA avec wicket

environnement

Contexte

Je souhaite communiquer en utilisant JSON sur la page du guichet! Au fait, avec une requête cryptée ...

Demande avec jsencrypt pour le chiffrement RSA

Définissez la clé publique sur pubKey.

myjsencrypt.js


my.jsencrypt = {
        pubKey: '-----BEGIN PUBLIC KEY-----\
Contenu de la clé publique
-----END PUBLIC KEY-----\
'

Initialiser.

myjsencrypt.js


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

Lancez une demande.

myjsencrypt.js


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

Bibliothèque pour json

Il semble y avoir différentes choses, mais jackson semblait être bon, alors j'ai essayé de l'utiliser. C'est en fait facile à utiliser. Définissez-le simplement dans pom.xml.

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>

Traitement des pages avec Wicket

Récupérez la requête et faites-en un paramètre. Pour RSAUtil, reportez-vous à RSA Encryption / Decryption with 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);

		// <Le nom du paramètre,valeur>Faire une carte de
		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(Fichier de clé privée);
			String decrypted = RSAUtil.decryptWithPrivateKey(sb.toString(), privKey);

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

		} catch (Exception e) {
			/*La gestion des erreurs*/
		}

Maintenant que les paramètres ont été obtenus, procédez sur cette page ...

Préparez une méthode pour définir Content-Type.

MyJsonPage.java


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

Renvoie le JSON du résultat.

MyJsonPage.java


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

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

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

C'est pratique car il convertit d'Object en JSON. PrettyPrinter est inclus car il est facile à voir.

c'est tout. Je vous remercie pour votre travail acharné!

Recommended Posts

Créez une API JSON prenant en charge le cryptage RSA avec wicket
Créer une classe immuable avec JAVA
Créez une application avec Spring Boot 2
Créer un fichier Excel avec POI
Créez une alternative à l'API Stream facile à étendre
Créez une application avec Spring Boot
Créons vous-même une instance avec .new. .. ..
[Java] Créer un module exécutable avec Gradle
Nuxt.js × Créer une application en mode API Rails
Créez des spécifications API intéressantes avec Micronaut + Swagger UI
Créer un site EC avec Rails5 ⑤ ~ Modèle client ~
Créer un annotateur qui utilise kuromoji avec NLP4J [007]
Créer un serveur API Web avec Spring Boot
Créer un site EC avec Rails 5 ⑩ ~ Créer une fonction de commande ~
Différé avec JSON
J'ai créé un domaine api avec Spring Framework. Partie 2
Créez un serveur de fichiers HTTPS pour le développement avec ring-jetty-adapter
Créer un site EC avec Rails5 ⑦ ~ Adresse, modèle de genre ~
Créer un site EC avec Rails 5 ⑨ ~ Créer une fonction de panier ~
Créer un site EC avec Rails5 ④ ~ En-tête et pied de page ~
Créer un environnement de test E2E avec Docker x Cypress
Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~
Créer un service avec un modèle vide Liferay 7.0 / DXP
J'ai créé un domaine api avec Spring Framework. Partie 1