Skip to content

Commit cae9bfa

Browse files
committed
infer metadata url from settings
1 parent 5361e94 commit cae9bfa

2 files changed

Lines changed: 28 additions & 13 deletions

File tree

src/MetadataService.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import Log from './Log';
55
import JsonService from './JsonService';
66

7+
const OidcMetadataUrlPath = '.well-known/openid-configuration';
8+
79
export default class MetadataService {
810
constructor(settings, JsonServiceCtor = JsonService) {
911
if (!settings) {
@@ -15,6 +17,26 @@ export default class MetadataService {
1517
this._jsonService = new JsonServiceCtor();
1618
}
1719

20+
get metadataUrl() {
21+
if (!this._metadataUrl) {
22+
if (this._settings.metadataUrl) {
23+
this._metadataUrl = this._settings.metadataUrl;
24+
}
25+
else {
26+
this._metadataUrl = this._settings.authority;
27+
28+
if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {
29+
if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {
30+
this._metadataUrl += '/';
31+
}
32+
this._metadataUrl += OidcMetadataUrlPath;
33+
}
34+
}
35+
}
36+
37+
return this._metadataUrl;
38+
}
39+
1840
getMetadata() {
1941
Log.debug("MetadataService.getMetadata");
2042

@@ -23,14 +45,14 @@ export default class MetadataService {
2345
return Promise.resolve(this._settings.metadata);
2446
}
2547

26-
if (!this._settings.metadataUrl) {
27-
Log.error("No metadataUrl configured on settings");
28-
return Promise.reject(new Error("No metadataUrl configured on settings"));
48+
if (!this.metadataUrl) {
49+
Log.error("No authority or metadataUrl configured on settings");
50+
return Promise.reject(new Error("No authority or metadataUrl configured on settings"));
2951
}
3052

31-
Log.debug("getting metadata from", this._settings.metadataUrl);
53+
Log.debug("getting metadata from", this.metadataUrl);
3254

33-
return this._jsonService.getJson(this._settings.metadataUrl)
55+
return this._jsonService.getJson(this.metadataUrl)
3456
.then(metadata => {
3557
Log.debug("json received");
3658
this._settings.metadata = metadata;

src/TokenRevocationClient.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import Log from './Log';
55
import MetadataService from './MetadataService';
66
import Global from './Global';
7-
import OidcClientSettings from './OidcClientSettings';
87

98
const AccessTokenTypeHint = "access_token";
109

@@ -15,13 +14,7 @@ export default class TokenRevocationClient {
1514
throw new Error("No settings provided.");
1615
}
1716

18-
if (settings instanceof OidcClientSettings) {
19-
this._settings = settings;
20-
}
21-
else {
22-
this._settings = new OidcClientSettings(settings);
23-
}
24-
17+
this._settings = settings;
2518
this._XMLHttpRequestCtor = XMLHttpRequestCtor;
2619
this._metadataService = new MetadataServiceCtor(this._settings);
2720
}

0 commit comments

Comments
 (0)