String iss = ‘hddhhd’;
String aud = ‘https://login.salesforce.com’;
String sub = ‘ayub@tenetizer.com’;
Long exp = DateTime.now().addMinutes(5).getTime();
String jwtHeader = ‘{“typ”:”JWT”,”alg”:”RS256″}’;
String jwtClaims = ‘{“iss”:”‘ + iss + ‘”,”sub”:”‘ + sub + ‘”,”aud”:”‘ + aud + ‘”,”exp”:’ + exp + ‘}’;
String jwtRequest = System.encodingUtil.base64Encode(Blob.valueOf(jwtHeader)).replace(‘+’, ‘-‘).replace(‘/’, ‘‘) + ‘.’ + System.encodingUtil.base64Encode(Blob.valueOf(jwtClaims)).replace(‘+’, ‘-‘).replace(‘/’, ‘‘);
String signature = System.encodingUtil.base64Encode(Crypto.signWithCertificate(‘RSA-SHA256’, Blob.valueOf(jwtRequest), ‘Akwa_VoC_Sync’)).replace(‘+’, ‘-‘).replace(‘/’, ‘_’);
String signedJwtRequest = jwtRequest + ‘.’ + signature;
system.debug(signedJwtRequest);
String payload = ‘grant_type=’ + System.EncodingUtil.urlEncode(‘urn:ietf:params:oauth:grant-type:jwt-bearer’, ‘UTF-8’);
payload += ‘&assertion=’ + signedJwtRequest;
Http httpObj = new Http();
HttpRequest req = new HttpRequest();
HttpResponse res;
req.setEndpoint(‘https://login.salesforce.com/services/oauth2/token’);
req.setMethod(‘POST’);
req.setHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’);
req.setBody(payload);
res = httpObj.send(req);
system.debug(res.getBody());