Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply fixes from patches to identity components #13377

Closed
wants to merge 7 commits into from
43 changes: 42 additions & 1 deletion modules/distribution/product/src/main/extensions/basicauth.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
~ under the License.
--%>

<%@ page import="org.apache.cxf.jaxrs.client.Client" %>
<%@ page import="org.apache.cxf.configuration.jsse.TLSClientParameters" %>
<%@ page import="org.apache.cxf.transport.http.HTTPConduit" %>
<%@ page import="org.apache.cxf.jaxrs.client.JAXRSClientFactory" %>
<%@ page import="org.apache.cxf.jaxrs.provider.json.JSONProvider" %>
<%@ page import="org.apache.cxf.jaxrs.client.WebClient" %>
Expand Down Expand Up @@ -47,6 +50,12 @@
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.ApplicationDataRetrievalClientException" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.PreferenceRetrievalClient" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.PreferenceRetrievalClientException" %>
<%@ page import="org.wso2.carbon.utils.CustomHostNameVerifier" %>
<%@ page import="javax.net.ssl.HostnameVerifier" %>
<%@ page import="static org.wso2.carbon.CarbonConstants.ALLOW_ALL" %>
<%@ page import="static org.wso2.carbon.CarbonConstants.DEFAULT_AND_LOCALHOST" %>
<%@ page import="static org.wso2.carbon.CarbonConstants.HOST_NAME_VERIFIER" %>
<%@ page import="org.apache.http.conn.ssl.AllowAllHostnameVerifier" %>

<jsp:directive.include file="includes/init-loginform-action-url.jsp"/>
<jsp:directive.include file="plugins/basicauth-extensions.jsp"/>
Expand Down Expand Up @@ -206,6 +215,32 @@

SelfUserRegistrationResource selfUserRegistrationResource = JAXRSClientFactory
.create(url, SelfUserRegistrationResource.class, providers);

Client client = WebClient.client(selfUserRegistrationResource);
HTTPConduit conduit = WebClient.getConfig(client).getHttpConduit();
TLSClientParameters tlsParams = conduit.getTlsClientParameters();
if (tlsParams == null) {
tlsParams = new TLSClientParameters();
}
HostnameVerifier allowAllHostnameVerifier = new AllowAllHostnameVerifier();
if (EndpointConfigManager.isHostnameVerificationEnabled()) {
if (DEFAULT_AND_LOCALHOST.equals(System.getProperty(HOST_NAME_VERIFIER))) {
/*
* If hostname verifier is set to DefaultAndLocalhost, allow following domains in addition to the
* hostname:
* ["::1", "127.0.0.1", "localhost", "localhost.localdomain"]
*/
tlsParams.setHostnameVerifier(new CustomHostNameVerifier());
} else if (ALLOW_ALL.equals(System.getProperty(HOST_NAME_VERIFIER))) {
// If hostname verifier is set to AllowAll, disable hostname verification.
tlsParams.setHostnameVerifier(allowAllHostnameVerifier);
}
} else {
// Disable hostname verification
tlsParams.setHostnameVerifier(allowAllHostnameVerifier);
}
conduit.setTlsClientParameters(tlsParams);

WebClient.client(selfUserRegistrationResource).header("Authorization", header);
Response selfRegistrationResponse = selfUserRegistrationResource.regenerateCode(selfRegistrationRequest);
if (selfRegistrationResponse != null && selfRegistrationResponse.getStatus() == HttpStatus.SC_CREATED) {
Expand Down Expand Up @@ -233,7 +268,13 @@
}
%>

<% if (Boolean.parseBoolean(loginFailed)) { %>
<% if (StringUtils.equals(request.getParameter("errorCode"), IdentityCoreConstants.USER_ACCOUNT_LOCKED_ERROR_CODE) &&
StringUtils.equals(request.getParameter("remainingAttempts"), "0") ) { %>
<div class="ui visible negative message" id="error-msg" data-testid="login-page-error-message">
<%=AuthenticationEndpointUtil.i18n(resourceBundle, "error.user.account.locked.incorrect.login.attempts")%>
</div>
<% } else if (Boolean.parseBoolean(loginFailed) &&
!errorCode.equals(IdentityCoreConstants.USER_ACCOUNT_NOT_CONFIRMED_ERROR_CODE)) { %>
<div class="ui visible negative message" id="error-msg" data-testid="login-page-error-message">
<%= AuthenticationEndpointUtil.i18n(resourceBundle, errorMessage) %>
</div>
Expand Down
5 changes: 4 additions & 1 deletion modules/distribution/product/src/main/extensions/header.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@

<%
String tenant = request.getParameter("tenantDomain");
if (tenant == null) {
tenant = request.getParameter("TenantDomain");
}
if (tenant == null) {
String cb = request.getParameter("callback");
cb = StringUtils.replace(cb, " ", "");
Expand All @@ -39,7 +42,7 @@
String decodedValue = uri.getQuery();
String[] params = decodedValue.split("&");
for (String param : params) {
if (param.startsWith("tenantDomain=")) {
if (param.startsWith("tenantDomain=") || param.startsWith("TenantDomain=")) {
String[] keyVal = param.split("=");
tenant = keyVal[1];
}
Expand Down
22 changes: 0 additions & 22 deletions modules/distribution/product/src/main/extensions/login.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -142,28 +142,6 @@
String username = null;
String usernameIdentifier = null;

if (isIdentifierFirstLogin(inputType)) {
String authAPIURL = application.getInitParameter(Constants.AUTHENTICATION_REST_ENDPOINT_URL);
if (StringUtils.isBlank(authAPIURL)) {
authAPIURL = IdentityUtil.getServerURL("/api/identity/auth/v1.1/", true, true);
}
if (!authAPIURL.endsWith("/")) {
authAPIURL += "/";
}
authAPIURL += "context/" + request.getParameter("sessionDataKey");
String contextProperties = AuthContextAPIClient.getContextProperties(authAPIURL);
Gson gson = new Gson();
Map<String, Object> parameters = gson.fromJson(contextProperties, Map.class);
if (parameters != null) {
username = (String) parameters.get("username");
usernameIdentifier = (String) parameters.get("username");
} else {
String redirectURL = "error.do";
response.sendRedirect(redirectURL);
return;
}
}

// Login context request url.
String sessionDataKey = request.getParameter("sessionDataKey");
String appName = request.getParameter("sp");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
~ under the License.
--%>

<%-- page content -->
<%-- page content --%>
<div class="ui grid">
<div class="two column row"></div>
<div class="four wide computer four wide tablet column">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.IdentityManagementEndpointConstants" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.IdentityManagementServiceUtil" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.IdentityManagementEndpointUtil" %>
<%@ page import="org.wso2.carbon.identity.recovery.IdentityRecoveryConstants" %>
<%@ page import="org.wso2.carbon.identity.base.IdentityRuntimeException" %>
<%@ page import="org.wso2.carbon.identity.recovery.util.Utils" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.ApiException" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.api.ReCaptchaApi" %>
<%@ page import="org.wso2.carbon.identity.mgt.endpoint.util.client.model.ReCaptchaProperties" %>
Expand Down Expand Up @@ -107,6 +110,22 @@
return;
}

try {
if (StringUtils.isNotBlank(callback) && !Utils.validateCallbackURL(callback, tenantDomain,
IdentityRecoveryConstants.ConnectorConfig.SELF_REGISTRATION_CALLBACK_REGEX)) {
request.setAttribute("error", true);
request.setAttribute("errorMsg", IdentityManagementEndpointUtil.i18n(recoveryResourceBundle,
"Callback.url.format.invalid"));
request.getRequestDispatcher("error.jsp").forward(request, response);
return;
}
} catch (IdentityRuntimeException e) {
request.setAttribute("error", true);
request.setAttribute("errorMsg", e.getMessage());
request.getRequestDispatcher("error.jsp").forward(request, response);
return;
}

if (StringUtils.isBlank(callback)) {
callback = IdentityManagementEndpointUtil.getUserPortalUrl(
application.getInitParameter(IdentityManagementEndpointConstants.ConfigConstants.USER_PORTAL_URL), tenantDomain);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,5 +136,13 @@
"broker.transport.amqp.enabled": false,
"apim.throttling.enable_policy_deployment": false
}
},
"authenticationendpoint.enable_shortened_urls": {
"false": {
"authentication.endpoint.redirect_params.filter_policy": "exclude",
"authentication.endpoint.redirect_params.parameters": [
"loggedInUser"
]
}
}
}