Skip to content

Commit 99ae40d

Browse files
committed
add resource param to authorization requests
1 parent 33f2fdd commit 99ae40d

File tree

5 files changed

+23
-7
lines changed

5 files changed

+23
-7
lines changed

src/OidcClient.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export default class OidcClient {
4444
// have round tripped, but people were getting confused, so i added state (since that matches the spec)
4545
// and so now if data is not passed, but state is then state will be used
4646
data, state,
47-
prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values} = {},
47+
prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource} = {},
4848
stateStore
4949
) {
5050
Log.info("OidcClient.createSigninRequest");
@@ -60,6 +60,7 @@ export default class OidcClient {
6060
max_age = max_age || this._settings.max_age;
6161
ui_locales = ui_locales || this._settings.ui_locales;
6262
acr_values = acr_values || this._settings.acr_values;
63+
resource = resource || this._settings.resource;
6364

6465
let authority = this._settings.authority;
6566

@@ -74,7 +75,7 @@ export default class OidcClient {
7475
scope,
7576
data: data || state,
7677
authority,
77-
prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values
78+
prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource
7879
});
7980

8081
var signinState = request.state;

src/OidcClientSettings.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default class OidcClientSettings {
2121
client_id, response_type = DefaultResponseType, scope = DefaultScope,
2222
redirect_uri, post_logout_redirect_uri,
2323
// optional protocol
24-
prompt, display, max_age, ui_locales, acr_values,
24+
prompt, display, max_age, ui_locales, acr_values, resource,
2525
// behavior flags
2626
filterProtocolClaims = true, loadUserInfo = true,
2727
staleStateAge = DefaultStaleStateAge, clockSkew = DefaultClockSkewInSeconds,
@@ -47,6 +47,7 @@ export default class OidcClientSettings {
4747
this._max_age = max_age;
4848
this._ui_locales = ui_locales;
4949
this._acr_values = acr_values;
50+
this._resource = resource;
5051

5152
this._filterProtocolClaims = !!filterProtocolClaims;
5253
this._loadUserInfo = !!loadUserInfo;
@@ -102,6 +103,9 @@ export default class OidcClientSettings {
102103
get acr_values() {
103104
return this._acr_values;
104105
}
106+
get resource() {
107+
return this._resource;
108+
}
105109

106110

107111
// metadata

src/SigninRequest.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default class SigninRequest {
1010
// mandatory
1111
url, client_id, redirect_uri, response_type, scope, authority,
1212
// optional
13-
data, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values
13+
data, prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource
1414
}) {
1515
if (!url) {
1616
Log.error("No url passed to SigninRequest");
@@ -50,7 +50,7 @@ export default class SigninRequest {
5050
url = UrlUtility.addQueryParam(url, "nonce", this.state.nonce);
5151
}
5252

53-
var optional = { prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values };
53+
var optional = { prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values, resource };
5454
for(let key in optional){
5555
if (optional[key]) {
5656
url = UrlUtility.addQueryParam(url, key, optional[key]);

test/unit/OidcClient.spec.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ describe("OidcClient", function () {
126126
ui_locales: 'u',
127127
id_token_hint: 'ith',
128128
login_hint: 'lh',
129-
acr_values: 'av'
129+
acr_values: 'av',
130+
resource: 'res'
130131
});
131132

132133
p.then(request => {
@@ -144,6 +145,7 @@ describe("OidcClient", function () {
144145
url.should.contain("id_token_hint=ith");
145146
url.should.contain("login_hint=lh");
146147
url.should.contain("acr_values=av");
148+
url.should.contain("resource=res");
147149

148150
done();
149151
});
@@ -163,7 +165,8 @@ describe("OidcClient", function () {
163165
ui_locales: 'u',
164166
id_token_hint: 'ith',
165167
login_hint: 'lh',
166-
acr_values: 'av'
168+
acr_values: 'av',
169+
resource: 'res'
167170
});
168171

169172
p.then(request => {
@@ -181,6 +184,7 @@ describe("OidcClient", function () {
181184
url.should.contain("id_token_hint=ith");
182185
url.should.contain("login_hint=lh");
183186
url.should.contain("acr_values=av");
187+
url.should.contain("resource=res");
184188

185189
done();
186190
});

test/unit/SigninRequest.spec.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ describe("SigninRequest", function() {
169169
subject.url.should.contain("acr_values=foo");
170170
});
171171

172+
it("should include resource", function() {
173+
settings.resource = "foo";
174+
subject = new SigninRequest(settings);
175+
subject.url.should.contain("resource=foo");
176+
});
177+
178+
172179
});
173180

174181
describe("isOidc", function() {

0 commit comments

Comments
 (0)