Skip to content

Commit e104af5

Browse files
authored
Merge pull request #266 from XeroAPI/sid-development
Add Auth0 library for verifying JWTs
2 parents 2acaaaa + 1d46111 commit e104af5

File tree

12 files changed

+3050
-3376
lines changed

12 files changed

+3050
-3376
lines changed

docs/v4/accounting/index.html

Lines changed: 3008 additions & 3365 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<artifactId>xero-java</artifactId>
66
<packaging>jar</packaging>
77
<name>xero-java</name>
8-
<version>4.7.1</version>
8+
<version>4.7.2</version>
99
<url>https://github.com/XeroAPI/Xero-Java</url>
1010
<description>This is the official Java SDK for Xero API</description>
1111
<licenses>
@@ -43,6 +43,11 @@
4343
<artifactId>java-jwt</artifactId>
4444
<version>3.8.1</version>
4545
</dependency>
46+
<dependency>
47+
<groupId>com.auth0</groupId>
48+
<artifactId>jwks-rsa</artifactId>
49+
<version>0.17.0</version>
50+
</dependency>
4651
<dependency>
4752
<groupId>com.google.api-client</groupId>
4853
<artifactId>google-api-client</artifactId>

src/main/java/com/xero/api/ApiClient.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616
import com.google.api.client.json.Json;
1717
import java.io.IOException;
1818
import java.io.OutputStream;
19+
import com.auth0.jwk.Jwk;
20+
import com.auth0.jwk.JwkException;
21+
import com.auth0.jwk.JwkProvider;
22+
import com.auth0.jwk.UrlJwkProvider;
23+
import com.auth0.jwt.JWT;
24+
import com.auth0.jwt.JWTVerifier;
25+
import com.auth0.jwt.algorithms.Algorithm;
26+
import com.auth0.jwt.interfaces.DecodedJWT;
27+
import java.net.MalformedURLException;
28+
import java.net.URL;
29+
import java.security.interfaces.RSAPublicKey;
1930

2031

2132
public class ApiClient {
@@ -115,9 +126,24 @@ public void writeTo(OutputStream out) throws IOException {
115126
}
116127

117128
// Builder pattern to get API instances for this client.
118-
119129
public AccountingApi accountingApi() {
120130
return new AccountingApi(this);
121131
}
132+
133+
public DecodedJWT verify(String accessToken) throws MalformedURLException, JwkException {
134+
135+
DecodedJWT unverifiedJWT = JWT.decode(accessToken);
136+
JwkProvider provider = new UrlJwkProvider(new URL("https://identity.xero.com/.well-known/openid-configuration/jwks"));
137+
Jwk jwk = provider.get(unverifiedJWT.getKeyId());
138+
139+
Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) jwk.getPublicKey(),null);
140+
141+
JWTVerifier verifier = JWT.require(algorithm)
142+
.withIssuer("https://identity.xero.com")
143+
.build();
144+
DecodedJWT verifiedJWT = verifier.verify(accessToken);
145+
146+
return verifiedJWT;
147+
}
122148

123149
}

src/main/java/com/xero/api/client/AccountingApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public class AccountingApi {
9797
private ApiClient apiClient;
9898
private static AccountingApi instance = null;
9999
private String userAgent = "Default";
100-
private String version = "4.7.1";
100+
private String version = "4.7.2";
101101
static final Logger logger = LoggerFactory.getLogger(AccountingApi.class);
102102

103103
public AccountingApi() {

src/main/java/com/xero/api/client/AssetApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class AssetApi {
4747
private ApiClient apiClient;
4848
private static AssetApi instance = null;
4949
private String userAgent = "Default";
50-
private String version = "4.7.1";
50+
private String version = "4.7.2";
5151
static final Logger logger = LoggerFactory.getLogger(AssetApi.class);
5252

5353
public AssetApi() {

src/main/java/com/xero/api/client/BankFeedsApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public class BankFeedsApi {
4545
private ApiClient apiClient;
4646
private static BankFeedsApi instance = null;
4747
private String userAgent = "Default";
48-
private String version = "4.7.1";
48+
private String version = "4.7.2";
4949
static final Logger logger = LoggerFactory.getLogger(BankFeedsApi.class);
5050

5151
public BankFeedsApi() {

src/main/java/com/xero/api/client/FilesApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class FilesApi {
5252
private ApiClient apiClient;
5353
private static FilesApi instance = null;
5454
private String userAgent = "Default";
55-
private String version = "4.7.1";
55+
private String version = "4.7.2";
5656
static final Logger logger = LoggerFactory.getLogger(FilesApi.class);
5757

5858
public FilesApi() {

src/main/java/com/xero/api/client/IdentityApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class IdentityApi {
4343
private ApiClient apiClient;
4444
private static IdentityApi instance = null;
4545
private String userAgent = "Default";
46-
private String version = "4.7.1";
46+
private String version = "4.7.2";
4747
static final Logger logger = LoggerFactory.getLogger(IdentityApi.class);
4848

4949
public IdentityApi() {

src/main/java/com/xero/api/client/PayrollAuApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public class PayrollAuApi {
6262
private ApiClient apiClient;
6363
private static PayrollAuApi instance = null;
6464
private String userAgent = "Default";
65-
private String version = "4.7.1";
65+
private String version = "4.7.2";
6666
static final Logger logger = LoggerFactory.getLogger(PayrollAuApi.class);
6767

6868
public PayrollAuApi() {

src/main/java/com/xero/api/client/PayrollNzApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public class PayrollNzApi {
104104
private ApiClient apiClient;
105105
private static PayrollNzApi instance = null;
106106
private String userAgent = "Default";
107-
private String version = "4.7.1";
107+
private String version = "4.7.2";
108108
static final Logger logger = LoggerFactory.getLogger(PayrollNzApi.class);
109109

110110
public PayrollNzApi() {

0 commit comments

Comments
 (0)