Skip to content

Commit 61a596d

Browse files
committed
externalized strings from user info views
1 parent 86e95d9 commit 61a596d

File tree

3 files changed

+29
-20
lines changed

3 files changed

+29
-20
lines changed

openid-connect-server/src/main/java/org/mitre/openid/connect/view/UserInfoJWTView.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.slf4j.Logger;
4040
import org.slf4j.LoggerFactory;
4141
import org.springframework.beans.factory.annotation.Autowired;
42+
import org.springframework.http.MediaType;
4243
import org.springframework.stereotype.Component;
4344

4445
import com.google.common.base.Strings;
@@ -59,13 +60,19 @@
5960
@Component(UserInfoJWTView.VIEWNAME)
6061
public class UserInfoJWTView extends UserInfoView {
6162

63+
public static final String CLIENT = "client";
64+
6265
/**
6366
* Logger for this class
6467
*/
6568
private static final Logger logger = LoggerFactory.getLogger(UserInfoJWTView.class);
6669

6770
public static final String VIEWNAME = "userInfoJwtView";
6871

72+
public static final String JOSE_MEDIA_TYPE_VALUE = "application/jwt";
73+
public static final MediaType JOSE_MEDIA_TYPE = new MediaType("application", "jwt");
74+
75+
6976
@Autowired
7077
private JWTSigningAndValidationService jwtService;
7178

@@ -83,13 +90,13 @@ protected void writeOut(JsonObject json, Map<String, Object> model,
8390
HttpServletRequest request, HttpServletResponse response) {
8491

8592
try {
86-
ClientDetailsEntity client = (ClientDetailsEntity)model.get("client");
93+
ClientDetailsEntity client = (ClientDetailsEntity)model.get(CLIENT);
8794

8895
// use the parser to import the user claims into the object
8996
StringWriter writer = new StringWriter();
9097
gson.toJson(json, writer);
9198

92-
response.setContentType("application/jwt");
99+
response.setContentType(JOSE_MEDIA_TYPE_VALUE);
93100

94101
JWTClaimsSet claims = JWTClaimsSet.parse(writer.toString());
95102

openid-connect-server/src/main/java/org/mitre/openid/connect/view/UserInfoView.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,14 @@
4747
@Component(UserInfoView.VIEWNAME)
4848
public class UserInfoView extends AbstractView {
4949

50-
private static JsonParser jsonParser = new JsonParser();
50+
public static final String REQUESTED_CLAIMS = "requestedClaims";
51+
public static final String AUTHORIZED_CLAIMS = "authorizedClaims";
52+
public static final String SCOPE = "scope";
53+
public static final String USER_INFO = "userInfo";
5154

5255
public static final String VIEWNAME = "userInfoView";
56+
57+
private static JsonParser jsonParser = new JsonParser();
5358

5459
/**
5560
* Logger for this class
@@ -89,20 +94,20 @@ public boolean shouldSkipClass(Class<?> clazz) {
8994
@Override
9095
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) {
9196

92-
UserInfo userInfo = (UserInfo) model.get("userInfo");
97+
UserInfo userInfo = (UserInfo) model.get(USER_INFO);
9398

94-
Set<String> scope = (Set<String>) model.get("scope");
99+
Set<String> scope = (Set<String>) model.get(SCOPE);
95100

96101
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
97102

98103

99104
JsonObject authorizedClaims = null;
100105
JsonObject requestedClaims = null;
101-
if (model.get("authorizedClaims") != null) {
102-
authorizedClaims = jsonParser.parse((String) model.get("authorizedClaims")).getAsJsonObject();
106+
if (model.get(AUTHORIZED_CLAIMS) != null) {
107+
authorizedClaims = jsonParser.parse((String) model.get(AUTHORIZED_CLAIMS)).getAsJsonObject();
103108
}
104-
if (model.get("requestedClaims") != null) {
105-
requestedClaims = jsonParser.parse((String) model.get("requestedClaims")).getAsJsonObject();
109+
if (model.get(REQUESTED_CLAIMS) != null) {
110+
requestedClaims = jsonParser.parse((String) model.get(REQUESTED_CLAIMS)).getAsJsonObject();
106111
}
107112
JsonObject json = toJsonFromRequestObj(userInfo, scope, authorizedClaims, requestedClaims);
108113

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,11 @@ public class UserInfoEndpoint {
7272
*/
7373
private static final Logger logger = LoggerFactory.getLogger(UserInfoEndpoint.class);
7474

75-
private static final MediaType JOSE_MEDIA_TYPE = new MediaType("application", "jwt");
76-
private static final String JOSE_MEDIA_TYPE_VALUE = "application/jwt";
77-
7875
/**
7976
* Get information about the user as specified in the accessToken included in this request
8077
*/
8178
@PreAuthorize("hasRole('ROLE_USER') and #oauth2.hasScope('" + SystemScopeService.OPENID_SCOPE + "')")
82-
@RequestMapping(method= {RequestMethod.GET, RequestMethod.POST}, produces = {MediaType.APPLICATION_JSON_VALUE, JOSE_MEDIA_TYPE_VALUE})
79+
@RequestMapping(method= {RequestMethod.GET, RequestMethod.POST}, produces = {MediaType.APPLICATION_JSON_VALUE, UserInfoJWTView.JOSE_MEDIA_TYPE_VALUE})
8380
public String getInfo(@RequestParam(value="claims", required=false) String claimsRequestJsonString,
8481
@RequestHeader(value="Accept", required=false) String acceptHeader,
8582
OAuth2Authentication auth, Model model) {
@@ -99,21 +96,21 @@ public String getInfo(@RequestParam(value="claims", required=false) String claim
9996
return HttpCodeView.VIEWNAME;
10097
}
10198

102-
model.addAttribute("scope", auth.getOAuth2Request().getScope());
99+
model.addAttribute(UserInfoView.SCOPE, auth.getOAuth2Request().getScope());
103100

104-
model.addAttribute("authorizedClaims", auth.getOAuth2Request().getExtensions().get("claims"));
101+
model.addAttribute(UserInfoView.AUTHORIZED_CLAIMS, auth.getOAuth2Request().getExtensions().get("claims"));
105102

106103
if (!Strings.isNullOrEmpty(claimsRequestJsonString)) {
107-
model.addAttribute("requestedClaims", claimsRequestJsonString);
104+
model.addAttribute(UserInfoView.REQUESTED_CLAIMS, claimsRequestJsonString);
108105
}
109106

110-
model.addAttribute("userInfo", userInfo);
107+
model.addAttribute(UserInfoView.USER_INFO, userInfo);
111108

112109
// content negotiation
113110

114111
// start off by seeing if the client has registered for a signed/encrypted JWT from here
115112
ClientDetailsEntity client = clientService.loadClientByClientId(auth.getOAuth2Request().getClientId());
116-
model.addAttribute("client", client);
113+
model.addAttribute(UserInfoJWTView.CLIENT, client);
117114

118115
List<MediaType> mediaTypes = MediaType.parseMediaTypes(acceptHeader);
119116
MediaType.sortBySpecificityAndQuality(mediaTypes);
@@ -123,7 +120,7 @@ public String getInfo(@RequestParam(value="claims", required=false) String claim
123120
|| client.getUserInfoEncryptedResponseEnc() != null) {
124121
// client has a preference, see if they ask for plain JSON specifically on this request
125122
for (MediaType m : mediaTypes) {
126-
if (!m.isWildcardType() && m.isCompatibleWith(JOSE_MEDIA_TYPE)) {
123+
if (!m.isWildcardType() && m.isCompatibleWith(UserInfoJWTView.JOSE_MEDIA_TYPE)) {
127124
return UserInfoJWTView.VIEWNAME;
128125
} else if (!m.isWildcardType() && m.isCompatibleWith(MediaType.APPLICATION_JSON)) {
129126
return UserInfoView.VIEWNAME;
@@ -137,7 +134,7 @@ public String getInfo(@RequestParam(value="claims", required=false) String claim
137134
for (MediaType m : mediaTypes) {
138135
if (!m.isWildcardType() && m.isCompatibleWith(MediaType.APPLICATION_JSON)) {
139136
return UserInfoView.VIEWNAME;
140-
} else if (!m.isWildcardType() && m.isCompatibleWith(JOSE_MEDIA_TYPE)) {
137+
} else if (!m.isWildcardType() && m.isCompatibleWith(UserInfoJWTView.JOSE_MEDIA_TYPE)) {
141138
return UserInfoJWTView.VIEWNAME;
142139
}
143140
}

0 commit comments

Comments
 (0)