Fix some for logout iam
This commit is contained in:
+13
-5
@@ -93862,17 +93862,25 @@ var require_iam_logout_service = __commonJS({
|
||||
const cached = kid ? this.keys.get(kid) : [...this.keys.values()][0];
|
||||
if (cached && !stale)
|
||||
return cached;
|
||||
await this.loadKeys();
|
||||
const key = kid ? this.keys.get(kid) : [...this.keys.values()][0];
|
||||
await this.loadKeys(false);
|
||||
let key = kid ? this.keys.get(kid) : [...this.keys.values()][0];
|
||||
if (!key && kid) {
|
||||
await this.loadKeys(true);
|
||||
key = this.keys.get(kid);
|
||||
}
|
||||
if (!key)
|
||||
throw new IamLogoutTokenError("no matching signing key at the identity service");
|
||||
return key;
|
||||
}
|
||||
async loadKeys() {
|
||||
async loadKeys(bypassCache) {
|
||||
const uri = bypassCache ? `${this.iam.issuer}/.well-known/jwks.json?_=${Date.now()}` : `${this.iam.issuer}/.well-known/jwks.json`;
|
||||
let response;
|
||||
try {
|
||||
response = await fetch(`${this.iam.issuer}/.well-known/jwks.json`, {
|
||||
headers: { accept: "application/json" }
|
||||
response = await fetch(uri, {
|
||||
headers: {
|
||||
accept: "application/json",
|
||||
...bypassCache ? { "cache-control": "no-cache", pragma: "no-cache" } : {}
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
throw new iam_service_1.IamUnavailableError(`could not reach the identity service: ${error.message}`);
|
||||
|
||||
@@ -120,19 +120,29 @@ export class IamLogoutService {
|
||||
|
||||
if (cached && !stale) return cached;
|
||||
|
||||
await this.loadKeys();
|
||||
await this.loadKeys(false);
|
||||
|
||||
const key = kid ? this.keys.get(kid) : [...this.keys.values()][0];
|
||||
let key = kid ? this.keys.get(kid) : [...this.keys.values()][0];
|
||||
if (!key && kid) {
|
||||
await this.loadKeys(true);
|
||||
key = this.keys.get(kid);
|
||||
}
|
||||
if (!key) throw new IamLogoutTokenError('no matching signing key at the identity service');
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
private async loadKeys(): Promise<void> {
|
||||
private async loadKeys(bypassCache: boolean): Promise<void> {
|
||||
const uri = bypassCache
|
||||
? `${this.iam.issuer}/.well-known/jwks.json?_=${Date.now()}`
|
||||
: `${this.iam.issuer}/.well-known/jwks.json`;
|
||||
let response: Response;
|
||||
try {
|
||||
response = await fetch(`${this.iam.issuer}/.well-known/jwks.json`, {
|
||||
headers: { accept: 'application/json' },
|
||||
response = await fetch(uri, {
|
||||
headers: {
|
||||
accept: 'application/json',
|
||||
...(bypassCache ? { 'cache-control': 'no-cache', pragma: 'no-cache' } : {}),
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
throw new IamUnavailableError(`could not reach the identity service: ${(error as Error).message}`);
|
||||
|
||||
Reference in New Issue
Block a user