Skip to content

Commit 734bd70

Browse files
committed
CLOUDSTACK-8037: URL encode cookie values with UTF8 as per version 1
As per Version 1 cookies, certain characters are now allowed such as space, colons etc but they should be url encoded using UTF8 encoding. The frontend has a cookie value unboxing method that removes any double quotes that are added. As per the doc http://download.oracle.com/javase/6/docs/api/java/net/URLEncoder.html values are application/x-www-form-urlencoded and as per http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4 whitespaces are encoded as +, therefore '+' are replaced by %20 (whitespace). Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
1 parent b2b4962 commit 734bd70

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

plugins/user-authenticators/saml2/src/org/apache/cloudstack/api/command/SAML2LoginAPIAuthenticatorCmd.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -269,14 +269,14 @@ public String authenticate(final String command, final Map<String, Object[]> par
269269
try {
270270
if (_apiServer.verifyUser(user.getId())) {
271271
LoginCmdResponse loginResponse = (LoginCmdResponse) _apiServer.loginUser(session, username, user.getPassword(), domainId, null, remoteAddress, params);
272-
resp.addCookie(new Cookie("userid", loginResponse.getUserId()));
273-
resp.addCookie(new Cookie("domainid", loginResponse.getDomainId()));
274-
resp.addCookie(new Cookie("role", loginResponse.getType()));
272+
resp.addCookie(new Cookie("userid", URLEncoder.encode(loginResponse.getUserId(), HttpUtils.UTF_8)));
273+
resp.addCookie(new Cookie("domainid", URLEncoder.encode(loginResponse.getDomainId(), HttpUtils.UTF_8)));
274+
resp.addCookie(new Cookie("role", URLEncoder.encode(loginResponse.getType(), HttpUtils.UTF_8)));
275275
resp.addCookie(new Cookie("username", URLEncoder.encode(loginResponse.getUsername(), HttpUtils.UTF_8)));
276276
resp.addCookie(new Cookie("sessionKey", URLEncoder.encode(loginResponse.getSessionKey(), HttpUtils.UTF_8)));
277277
resp.addCookie(new Cookie("account", URLEncoder.encode(loginResponse.getAccount(), HttpUtils.UTF_8)));
278278
resp.addCookie(new Cookie("timezone", URLEncoder.encode(loginResponse.getTimeZone(), HttpUtils.UTF_8)));
279-
resp.addCookie(new Cookie("userfullname", loginResponse.getFirstName() + "%20" + loginResponse.getLastName()));
279+
resp.addCookie(new Cookie("userfullname", URLEncoder.encode(loginResponse.getFirstName() + " " + loginResponse.getLastName(), HttpUtils.UTF_8).replace("+", "%20")));
280280
resp.sendRedirect(_configDao.getValue(Config.SAMLCloudStackRedirectionUrl.key()));
281281
return ApiResponseSerializer.toSerializedString(loginResponse, responseType);
282282

0 commit comments

Comments
 (0)