Skip to content

Commit 89316cb

Browse files
committed
fixed default token lifetimes for heart mode
1 parent 9691f02 commit 89316cb

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

openid-connect-server-webapp/src/main/webapp/resources/js/admin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,8 @@ var AppRouter = Backbone.Router.extend({
495495
defaultMaxAge:60000,
496496
scope: _.uniq(_.flatten(app.systemScopeList.defaultScopes().pluck("value"))),
497497
accessTokenValiditySeconds:3600,
498-
idTokenValiditySeconds:600,
498+
refreshTokenValiditySeconds:24*3600,
499+
idTokenValiditySeconds:300,
499500
grantTypes: ["authorization_code"],
500501
responseTypes: ["code"],
501502
subjectType: "PUBLIC",

openid-connect-server-webapp/src/main/webapp/resources/template/client.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ <h1 data-i18n="client.client-form.edit"></h1>
426426
<div class="controls">
427427
<% if (!heartMode) { %>
428428
<div>
429-
<input type="radio" id="tokenEndpointAuthMethodBasic" name="tokenEndpointAuthMethod" value="SECRET_BASIC" <%-((client.tokenEndpointAuthMethod == 'SECRET_BASIC') || (!tokenEndpointAuthMethod) ? 'checked' : '')%>>
429+
<input type="radio" id="tokenEndpointAuthMethodBasic" name="tokenEndpointAuthMethod" value="SECRET_BASIC" <%-((client.tokenEndpointAuthMethod == 'SECRET_BASIC') || (!client.tokenEndpointAuthMethod) ? 'checked' : '')%>>
430430
<label for="tokenEndpointAuthMethodBasic" class="radio" data-i18n="client.client-form.secret-http">Client Secret over HTTP Basic</label>
431431
</div>
432432
<div>
@@ -439,7 +439,7 @@ <h1 data-i18n="client.client-form.edit"></h1>
439439
</div>
440440
<% } %>
441441
<div>
442-
<input type="radio" id="tokenEndpointAuthMethodAssym" name="tokenEndpointAuthMethod" value="PRIVATE_KEY" <%-((client.tokenEndpointAuthMethod == 'PRIVATE_KEY') || (heartMode && !tokenEndpointAuthMethod) ? 'checked' : '')%>>
442+
<input type="radio" id="tokenEndpointAuthMethodAssym" name="tokenEndpointAuthMethod" value="PRIVATE_KEY" <%-((client.tokenEndpointAuthMethod == 'PRIVATE_KEY') || (heartMode && !client.tokenEndpointAuthMethod) ? 'checked' : '')%>>
443443
<label for="tokenEndpointAuthMethodAssym" class="radio" data-i18n="client.client-form.secret-asymmetric-jwt">Asymmetrically-signed JWT assertion</label>
444444
</div>
445445
<div>
@@ -591,7 +591,7 @@ <h1 data-i18n="client.client-form.edit"></h1>
591591
<label for="disableRefreshTokenTimeout" class="checkbox" data-i18n="client.client-form.refresh-tokens-no-expire">Refresh tokens do not time out</label>
592592
</div>
593593
<div>
594-
<input type="text" class="" value="<%-(client.refreshTokenValiditySeconds == null ? '' : refreshTokenValiditySeconds)%>" id="refresh-token-timeout-time" size="16" style="width:8em;">
594+
<input type="text" class="" value="<%-(client.refreshTokenValiditySeconds == null ? '' : client.refreshTokenValiditySeconds)%>" id="refresh-token-timeout-time" size="16" style="width:8em;">
595595
<select id="refresh-token-timeout-unit" style="width:8em;">
596596
<option data-i18n="client.client-form.seconds">seconds</option>
597597
<option data-i18n="client.client-form.minutes">minutes</option>

openid-connect-server-webapp/src/main/webapp/resources/template/dynreg.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ <h1 data-i18n="client.client-form.edit"></h1>
333333
</div>
334334
<% } %>
335335
<div>
336-
<input type="radio" id="tokenEndpointAuthMethodAssym" name="tokenEndpointAuthMethod" value="private_key_jwt" <%-((client.token_endpoint_auth_method == 'private_key_jwt') || (heartMode && !tokenEndpointAuthMethod) ? 'checked' : '')%>>
336+
<input type="radio" id="tokenEndpointAuthMethodAssym" name="tokenEndpointAuthMethod" value="private_key_jwt" <%-((client.token_endpoint_auth_method == 'private_key_jwt') || (heartMode && !client.tokenEndpointAuthMethod) ? 'checked' : '')%>>
337337
<label for="tokenEndpointAuthMethodAssym" class="radio" data-i18n="client.client-form.secret-asymmetric-jwt">Asymmetrically-signed JWT assertion</label>
338338
</div>
339339
<div>

openid-connect-server/src/main/java/org/mitre/openid/connect/web/DynamicClientRegistrationEndpoint.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,26 @@ public String registerNewClient(@RequestBody String jsonString, Model m) {
153153
}
154154

155155
// set some defaults for token timeouts
156-
newClient.setAccessTokenValiditySeconds((int)TimeUnit.HOURS.toSeconds(1)); // access tokens good for 1hr
157-
newClient.setIdTokenValiditySeconds((int)TimeUnit.MINUTES.toSeconds(10)); // id tokens good for 10min
158-
newClient.setRefreshTokenValiditySeconds(null); // refresh tokens good until revoked
156+
if (config.isHeartMode()) {
157+
// heart mode has different defaults depending on primary grant type
158+
if (newClient.getGrantTypes().contains("authorization_code")) {
159+
newClient.setAccessTokenValiditySeconds((int)TimeUnit.HOURS.toSeconds(1)); // access tokens good for 1hr
160+
newClient.setIdTokenValiditySeconds((int)TimeUnit.MINUTES.toSeconds(5)); // id tokens good for 5min
161+
newClient.setRefreshTokenValiditySeconds((int)TimeUnit.HOURS.toSeconds(24)); // refresh tokens good for 24hr
162+
} else if (newClient.getGrantTypes().contains("implicit")) {
163+
newClient.setAccessTokenValiditySeconds((int)TimeUnit.MINUTES.toSeconds(15)); // access tokens good for 15min
164+
newClient.setIdTokenValiditySeconds((int)TimeUnit.MINUTES.toSeconds(5)); // id tokens good for 5min
165+
newClient.setRefreshTokenValiditySeconds(0); // no refresh tokens
166+
} else if (newClient.getGrantTypes().contains("client_credentials")) {
167+
newClient.setAccessTokenValiditySeconds((int)TimeUnit.HOURS.toSeconds(6)); // access tokens good for 6hr
168+
newClient.setIdTokenValiditySeconds(0); // no id tokens
169+
newClient.setRefreshTokenValiditySeconds(0); // no refresh tokens
170+
}
171+
} else {
172+
newClient.setAccessTokenValiditySeconds((int)TimeUnit.HOURS.toSeconds(1)); // access tokens good for 1hr
173+
newClient.setIdTokenValiditySeconds((int)TimeUnit.MINUTES.toSeconds(10)); // id tokens good for 10min
174+
newClient.setRefreshTokenValiditySeconds(null); // refresh tokens good until revoked
175+
}
159176

160177
// this client has been dynamically registered (obviously)
161178
newClient.setDynamicallyRegistered(true);

0 commit comments

Comments
 (0)