Skip to content

Commit 77cb37a

Browse files
author
Fabian Wiles
committed
feat: remove jsrsasign dependancy
1 parent b4c8731 commit 77cb37a

File tree

6 files changed

+7903
-25
lines changed

6 files changed

+7903
-25
lines changed

package.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"docs:watch": "npm run docs:build -- -s -w",
1717
"format": "prettier --single-quote --write projects/**/*.ts",
1818
"copy:readme": "cpr README.md dist/lib/README.md --overwrite"
19-
},
19+
},
2020
"private": true,
2121
"dependencies": {
2222
"@angular/animations": "6.0.0",
@@ -29,11 +29,13 @@
2929
"@angular/platform-browser": "6.0.0",
3030
"@angular/platform-browser-dynamic": "6.0.0",
3131
"@angular/router": "6.0.0",
32+
"@types/jsonwebtoken": "^7.2.7",
3233
"@webcomponents/custom-elements": "^1.1.0",
3334
"angular-oauth2-oidc": "^2.1.8",
3435
"bootstrap": "^3.3.7",
3536
"core-js": "^2.5.1",
36-
"jsrsasign": "^8.0.12",
37+
"jsonwebtoken": "^8.3.0",
38+
"jwk-to-pem": "^2.0.0",
3739
"rxjs": "6.1.0",
3840
"rxjs-compat": "^6.0.0-rc.0",
3941
"zone.js": "^0.8.26"

projects/lib/ng-package.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
"entryFile": "src/public_api.ts"
77
},
88
"whitelistedNonPeerDependencies": [
9-
"jsrsasign"
9+
"jsonwebtoken",
10+
"jwk-to-pem",
11+
"@types/jsonwebtoken"
1012
]
1113

12-
}
14+
}

projects/lib/ng-package.prod.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"entryFile": "src/public_api.ts"
66
},
77
"whitelistedNonPeerDependencies": [
8-
"jsrsasign"
8+
"jsonwebtoken",
9+
"jwk-to-pem",
10+
"@types/jsonwebtoken"
911
]
10-
}
12+
}

projects/lib/package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
"version": "4.0.2",
88
"repository": "manfredsteyer/angular-oauth2-oidc",
99
"dependencies": {
10-
"jsrsasign": "^8.0.12"
10+
"jsonwebtoken": "^8.3.0",
11+
"jwk-to-pem": "^2.0.0",
12+
"@types/jsonwebtoken": "^7.2.7"
1113
},
1214
"peerDependencies": {
1315
"@angular/common": "^6.0.0",

projects/lib/src/token-validation/jwks-validation-handler.ts

+12-18
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ import {
22
AbstractValidationHandler,
33
ValidationParams
44
} from './validation-handler';
5+
import * as jwkToPem from 'jwk-to-pem';
6+
import * as jwt from 'jsonwebtoken';
57

6-
// declare var require: any;
7-
// let rs = require('jsrsasign');
8-
9-
import * as rs from 'jsrsasign';
108

119
/**
1210
* Validates the signature of an id_token against one
@@ -109,22 +107,18 @@ export class JwksValidationHandler extends AbstractValidationHandler {
109107
return Promise.reject(error);
110108
}
111109

112-
let keyObj = rs.KEYUTIL.getKey(key);
113-
let validationOptions = {
114-
alg: this.allowedAlgorithms,
115-
gracePeriod: this.gracePeriodInSec
116-
};
117-
let isValid = rs.KJUR.jws.JWS.verifyJWT(
118-
params.idToken,
119-
keyObj,
120-
validationOptions
121-
);
122-
123-
if (isValid) {
124-
return Promise.resolve();
125-
} else {
110+
const pem = jwkToPem(key)
111+
try{
112+
jwt.verify(
113+
params.idToken,
114+
pem,
115+
{algorithms: this.allowedAlgorithms, clockTolerance: this.gracePeriodInSec}
116+
)
117+
}
118+
catch(err) {
126119
return Promise.reject('Signature not valid');
127120
}
121+
return Promise.resolve();
128122
}
129123

130124
private alg2kty(alg: string) {

0 commit comments

Comments
 (0)