07 Sep 2021 ClassNotes
07 Sep 2021 ClassNotes
------------------------------------------------------------------------
-> What is Security ?
-> By using above In-Memory and JDBC Authentication we can secure web applications.
----------------------------------------------------------------------------------
How to secure Distributed application
----------------------------------------------------------------------------------
-> When one application is using services of other applications then implementation
of security with webservices concepts becomes more important.
----------------------------------------------------------------------------------
-> JWT is standard mechanism to implement Token based security
-> JWT is not only for java, we can use this technique in other languages also to
secure our applications.
----------------------------------------------------------------------------------
i) header
ii) payload
iii) signature
Payload : IT contains claims (Client ID, Client Name, Issuer Name, Audience Name,
Date of Issue, Expirty Date etc..)
Signature : Base64 encoded form of header & payload, aditionally signed with secret
key.
Sample Token
------------
eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJ0azk5MzEiLCJzdWIiOiJteXRva2VuIiwiaXNzIjoiQXNob2sgSV
QiLCJhdWQiOiJBQkNfSVQiLCJpYXQiOjE2MzA5ODQ2NTQsImV4cCI6MTYzMDk4ODI1NH0.8WN1DMPJ7ding
c4pAFmPDQyk2SnfAJ-OutGHQ5gcy0qd1h1lc3rrTApc7tvI0l-aCYRB5CcxWbBHRUDlC9i8Zg
-----------------------------------------------------------------------------------
------------
Steps to generate token using JWT
-----------------------------------------------------------------------------------
-----------
1) Create Maven Project with below dependencies
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
package in.ashokit;
import java.util.Base64;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
return Jwts.builder()
.setId("tk9931")
.setSubject(subject)
.setIssuer("Ashok IT")
.setAudience("ABC_IT")
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis()+
TimeUnit.HOURS.toMillis(1)))
.signWith(SignatureAlgorithm.HS512,
Base64.getEncoder().encode(secretKey.getBytes()))
.compact();
}
//Generating Token
String token = JWTUtil.generateToken(subject, secretKey);
//printing token
System.out.println(token);