<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
  <meta http-equiv="content-type" content=""/>
  <title>Apache Axis2 JSON and REST with Spring Boot User's Guide</title>
</head>

<body dir="ltr" lang="en-US">
<a name="_Toc96697849" id="_Toc96697849"></a>

<h1 align="center">Apache Axis2 JSON and REST with Spring Boot User's Guide</h1>

<p>This guide will help you get started with Axis2 and JSON via REST, using 
Spring Security with Spring Boot!  It gives a detailed description on how to write 
JSON based REST Web services and also Web service clients via JSON and Curl, how to 
write a custom login, and how to use them in a token based Web service that also helps 
prevent cross site scripting (XSS). 
</p>
<p>More docs concerning Axis2 and JSON can be found in the <a href="
json_support_gson.html">Pure JSON Support</a> and <a href="
json_gson_user_guide.html">JSON User Guide</a>
</p>	
<a name="Introduction"></a>

<h2>Introduction</h2>

<p>This user guide is written based on the Axis2 Standard Binary
Distribution. The Standard Binary Distribution can be directly <a
href="../download.cgi">downloaded</a> or built using
the Source Distribution. If
you choose the latter, then the <a href="installationguide.html">Installation
Guide</a> will instruct you on how to build Axis2 Standard Binary
Distribution using the source.</p>

<p>The source code for this guide provides a pom.xml for an entire demo WAR application built by maven.
</p>

<p>Please note that Axis2 is an open-source effort. If you feel the code
could use some new features or fixes, please get involved and lend us a hand!
The Axis developer community welcomes your participation.</p>

<p>Let us know what you think! Send your feedback to "<a
href="mailto:java-user@axis.apache.org?subject=[Axis2]">java-user@axis.apache.org</a>".
(Subscription details are available on the <a href="../mail-lists.html">Axis2 site</a>.) Kindly
prefix the subject of the mail with [Axis2].</p>

<h2>Getting Started</h2>

<p>This user guide explains how to write and deploy a
new JSON and REST based Web Service using Axis2, and how to write a Web Service client 
using JSON with Curl.
</p>

<p>All the sample code mentioned in this guide is located in
the <b>"samples/userguide/src/springbootdemo"</b> directory of <a
href="../download.cgi">Axis2 standard binary
distribution</a>.</p>
<p>
This quide supplies a pom.xml for building an exploded WAR with Spring Boot - 
however this WAR does not have an embedded web server such as Tomcat. 
</p>
<p>
The testing was carried out on Wildfly, by installing the WAR in its app server. 
</p>
<p>Please deploy the result of the maven build via 'mvn clean install', axis2-json-api.war, into your servlet container and ensure that it installs without any errors.</p>

<h2>Creating a New Web Service</h2>

<p>
Areas out of scope for this guide are JWT and JWE for token generation and validation, 
since they require elliptic curve cryptography. A sample token that is not meant for 
production is generated in this demo - with the intent that the following standards
should be used in its place. This demo merely shows a place to implement these
standards.
</p>
<p>
https://datatracker.ietf.org/doc/html/rfc7519
</p>
<p>
https://datatracker.ietf.org/doc/html/rfc7516
</p>
<p>
Tip: com.nimbusds is recommended as an open-source Java implementation of these 
standards, for both token generation and validation.
</p>
<p>
DB operations are also out of scope. There is a minimal DAO layer for authentication. 
Very limited credential validation is done. 
</p>
<p>
The NoOpPasswordEncoder Spring class included in this guide is meant for demos
and testing only. Do not use this code as is in production.
</p>
<p>
This guide provides two JSON based web services, LoginService and TestwsService.
</p>
<p>
The login, if successful, will return a simple token not meant for anything beyond demos.
The intent of this guide is to show a place that the JWT and JWE standards can be 
implemented.
</p>
<p>
Axis2 JSON support is via POJO Objects. LoginRequest and LoginResponse are coded in the LoginService as the names would indicate. 
</p>
<p>
Also provided is a test service, TestwsService. It includes two POJO Objects as would
be expected, TestwsRequest and TestwsResponse. This service attempts to return 
a String with some Javascript, that is HTML encoded by Axis2 and thereby
eliminating the possibility of a Javascript engine executing the response i.e. a 
reflected XSS attack. 
</p>
<p>
Concerning Spring Security and Spring Boot, the Axis2Application class that 
extends SpringBootServletInitializer as typically done utilizes 
a List of SecurityFilterChain as a binary choice; A login url will match, otherwise invoke 
JWTAuthenticationFilter. All URL's to other services besides the login, will proceed 
after JWTAuthenticationFilter verifies the token.
</p>
<p>
The JWTAuthenticationFilter class expects a token from the web services JSON client in 
the form of "Authorization: Bearer mytoken".
</p>
<p>
The Axis2WebAppInitializer class supplied in this guide, is the config class 
that registers AxisServlet with Spring Boot.
</p>
<p>
Axis2 web services are installed via a WEB-INF/services directory that contains
files with an .aar extention for each service. These aar files are similar to
jar files, and contain a services.xml that defines the web service behavior. 
The pom.xml supplied in this guide generates these files.
</p>
<p>
Tip: don't expose methods in your web services that are not meant to be exposed, 
such as getters and setters. Axis2 determines the avaliable methods by reflection.
For JSON, the message name at the start of the JSON received by the Axis2 server 
defines the Axis2 operation to invoke.  It is recommended that only one method per 
class be exposed as a starting point. The place to add method exclusion is the 
services.xml file: 
</p>
<pre>
    &lt;message name="requestMessage"&gt;
    &lt;excludeOperations&gt;
        &lt;operation>setMyVar&lt;/operation&gt;
    &lt;/excludeOperations&gt;
</pre>
<p>
The axis2.xml file can define Moshi or GSON as the JSON engine. GSON was the original 
however development has largely ceased. Moshi is very similar and is widely considered 
to be the superior implementation in terms of performance. GSON will likely continue to
be supported in Axis2 because it is helpful to have two JSON implementations to compare 
with for debugging.  
</p>
<p>
JSON based web services in the binary distribution of axis2.xml are not enabled by 
default. See the supplied axis2.xml of this guide, and note the places were it has 
"moshi". Just replace "moshi" with "gson" as a global search and replace to switch to 
GSON. 
</p>
<p>
Axis2 web services that are JSON based must be invoked from a client that sets an
HTTP header as "Content-Type: application/json". In order for axis2 to properly
handle JSON requests, this header behavior needs to be defined in the file
WEB-INF/conf/axis2.xml.
</p>
<pre>
    &lt;message name="requestMessage"&gt;
        &lt;messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.moshi.JsonFormatter"/&gt;
</pre>
<p>
Other required classes for JSON in the axis2.xml file include JsonRpcMessageReceiver,
JsonInOnlyRPCMessageReceiver, JsonBuilder, and JSONMessageHandler.
</p>
<p>
Invoking the client for a login that returns a token can be done as follows:
</p>
<p>
curl -v -H "Content-Type: application/json" -X POST --data @/home/myuser/login.dat http://localhost:8080/axis2-json-api/services/loginService
</p>
<p>
Where the contents of /home/myuser/login.dat are:
</p>
<p>
{"doLogin":[{"arg0":{"email":java-dev@axis.apache.org,"credentials":userguide}}]}
</p>
<p>
Response: 
</p>
<p>
{"response":{"status":"OK","token":"95104Rn2I2oEATfuI90N","uuid":"99b92d7a-2799-4b20-b029-9fbd6108798a"}}
</p>
<p>
Invoking the client for a Test Service that validates a sample token can be done as 
follows:
</p>
<p>
	curl -v -H "Authorization: Bearer 95104Rn2I2oEATfuI90N" -H "Content-Type: application/json" -X POST --data @/home/myuser/test.dat http://localhost:8080/axis2-json-api/services/testws'
</p>
<p>
Where the contents of /home/myuser/test.dat are below. arg0 is the var name 
and is used by Axis2 as part of its reflection based code:
</p>
<p>
{"doTestws":[{"arg0":{"messagein":hello}}]}
</p>
<p>
Response, HTML encoded to prevent XSS. For the results with encoding see ./src/site/xdoc/docs/json-springboot-userguide.xml.
</p>
<p>
{"response":{"messageout":"&lt;script xmlns=\"http://www.w3.org/1999/xhtml\"&gt;alert('Hello');&lt;/script&gt; \"&gt;","status":"OK"}}
</p>
</body>
</html>
