Skip to content

Commit 9691f02

Browse files
committed
added audience parameter to parser, fixed token generator to match HEART spec
1 parent 49a8848 commit 9691f02

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

openid-connect-server/src/main/java/org/mitre/openid/connect/request/ConnectOAuth2RequestFactory.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.mitre.openid.connect.request;
1818

1919

20-
import static org.mitre.openid.connect.request.ConnectRequestParameters.CLAIMS;
20+
import static org.mitre.openid.connect.request.ConnectRequestParameters.*;
2121
import static org.mitre.openid.connect.request.ConnectRequestParameters.CLIENT_ID;
2222
import static org.mitre.openid.connect.request.ConnectRequestParameters.DISPLAY;
2323
import static org.mitre.openid.connect.request.ConnectRequestParameters.LOGIN_HINT;
@@ -133,6 +133,11 @@ public AuthorizationRequest createAuthorizationRequest(Map<String, String> input
133133
request.getExtensions().put(LOGIN_HINT, inputParams.get(LOGIN_HINT));
134134
}
135135

136+
if (inputParams.containsKey(AUD)) {
137+
request.getExtensions().put(AUD, inputParams.get(AUD));
138+
}
139+
140+
136141
if (inputParams.containsKey(REQUEST)) {
137142
request.getExtensions().put(REQUEST, inputParams.get(REQUEST));
138143
processRequestObject(inputParams.get(REQUEST), request);

openid-connect-server/src/main/java/org/mitre/openid/connect/request/ConnectRequestParameters.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,8 @@ public interface ConnectRequestParameters {
4343
// responses
4444
public String ERROR = "error";
4545
public String LOGIN_REQUIRED = "login_required";
46+
47+
// audience
48+
public String AUD = "aud";
4649

4750
}

openid-connect-server/src/main/java/org/mitre/openid/connect/token/ConnectTokenEnhancer.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@
4040
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
4141
import org.springframework.stereotype.Service;
4242

43+
import com.google.common.base.Strings;
4344
import com.google.common.collect.Lists;
4445
import com.nimbusds.jose.JWSAlgorithm;
4546
import com.nimbusds.jose.JWSHeader;
4647
import com.nimbusds.jwt.JWTClaimsSet;
48+
import com.nimbusds.jwt.JWTClaimsSet.Builder;
4749
import com.nimbusds.jwt.SignedJWT;
4850

4951
@Service
@@ -88,13 +90,20 @@ public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentica
8890
String clientId = originalAuthRequest.getClientId();
8991
ClientDetailsEntity client = clientService.loadClientByClientId(clientId);
9092

91-
JWTClaimsSet claims = new JWTClaimsSet.Builder()
92-
.audience(Lists.newArrayList(clientId))
93+
Builder builder = new JWTClaimsSet.Builder()
94+
.claim("azp", clientId)
9395
.issuer(configBean.getIssuer())
9496
.issueTime(new Date())
9597
.expirationTime(token.getExpiration())
96-
.jwtID(UUID.randomUUID().toString()) // set a random NONCE in the middle of it
97-
.build();
98+
.subject(authentication.getName())
99+
.jwtID(UUID.randomUUID().toString()); // set a random NONCE in the middle of it
100+
101+
String audience = (String) authentication.getOAuth2Request().getExtensions().get("aud");
102+
if (!Strings.isNullOrEmpty(audience)) {
103+
builder.audience(Lists.newArrayList(audience));
104+
}
105+
106+
JWTClaimsSet claims = builder.build();
98107

99108
JWSAlgorithm signingAlg = jwtService.getDefaultSigningAlgorithm();
100109
JWSHeader header = new JWSHeader(signingAlg, null, null, null, null, null, null, null, null, null,
@@ -161,5 +170,6 @@ public ClientDetailsEntityService getClientService() {
161170
public void setClientService(ClientDetailsEntityService clientService) {
162171
this.clientService = clientService;
163172
}
173+
164174

165-
}
175+
}

0 commit comments

Comments
 (0)