mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'release-2.0.x' of https://github.com/wso2/carbon-device-mgt into release-2.0.x
This commit is contained in:
commit
3cb13e18a5
@ -37,7 +37,6 @@ import javax.ws.rs.POST;
|
|||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
||||||
@ -106,8 +105,13 @@ public class ApiApplicationRegistrationServiceImpl implements ApiApplicationRegi
|
|||||||
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_ID, registrationProfile.getConsumerKey());
|
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_ID, registrationProfile.getConsumerKey());
|
||||||
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_SECRET,
|
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_SECRET,
|
||||||
registrationProfile.getConsumerSecret());
|
registrationProfile.getConsumerSecret());
|
||||||
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG,
|
if (registrationProfile.getValidityPeriod() == 0) {
|
||||||
ApiApplicationConstants.DEFAULT_VALIDITY_PERIOD);
|
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG,
|
||||||
|
ApiApplicationConstants.DEFAULT_VALIDITY_PERIOD);
|
||||||
|
} else {
|
||||||
|
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG,
|
||||||
|
registrationProfile.getValidityPeriod());
|
||||||
|
}
|
||||||
apiManagementProviderService.registerExistingOAuthApplicationToAPIApplication(
|
apiManagementProviderService.registerExistingOAuthApplicationToAPIApplication(
|
||||||
jsonStringObject.toJSONString(), registrationProfile.getApplicationName(),
|
jsonStringObject.toJSONString(), registrationProfile.getApplicationName(),
|
||||||
registrationProfile.getConsumerKey(), username, registrationProfile.isAllowedToAllDomains(),
|
registrationProfile.getConsumerKey(), username, registrationProfile.isAllowedToAllDomains(),
|
||||||
|
|||||||
@ -41,6 +41,8 @@ public class RegistrationProfile {
|
|||||||
private boolean isMappingAnExistingOAuthApp;
|
private boolean isMappingAnExistingOAuthApp;
|
||||||
private String consumerKey;
|
private String consumerKey;
|
||||||
private String consumerSecret;
|
private String consumerSecret;
|
||||||
|
@XmlElement(required = false)
|
||||||
|
private int validityPeriod;
|
||||||
|
|
||||||
public String getApplicationName() {
|
public String getApplicationName() {
|
||||||
return applicationName;
|
return applicationName;
|
||||||
@ -89,4 +91,12 @@ public class RegistrationProfile {
|
|||||||
public void setConsumerSecret(String consumerSecret) {
|
public void setConsumerSecret(String consumerSecret) {
|
||||||
this.consumerSecret = consumerSecret;
|
this.consumerSecret = consumerSecret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getValidityPeriod() {
|
||||||
|
return validityPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValidityPeriod(int validityPeriod) {
|
||||||
|
this.validityPeriod = validityPeriod;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,6 +60,8 @@ var WEB_SERVICE_ADDRESSING_VERSION = 1.0;
|
|||||||
var TOKEN_PAIR = "tokenPair";
|
var TOKEN_PAIR = "tokenPair";
|
||||||
var ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS = "encodedTenantBasedClientAppCredentials";
|
var ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS = "encodedTenantBasedClientAppCredentials";
|
||||||
var CONTENT_TYPE_IDENTIFIER = "Content-Type";
|
var CONTENT_TYPE_IDENTIFIER = "Content-Type";
|
||||||
|
var ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS = "encodedTenantBasedWebSocketClientCredentials";
|
||||||
|
|
||||||
var CONTENT_DISPOSITION_IDENTIFIER = "Content-Disposition";
|
var CONTENT_DISPOSITION_IDENTIFIER = "Content-Disposition";
|
||||||
var APPLICATION_JSON = "application/json";
|
var APPLICATION_JSON = "application/json";
|
||||||
var APPLICATION_ZIP = "application/zip";
|
var APPLICATION_ZIP = "application/zip";
|
||||||
@ -76,4 +78,6 @@ var HTTP_CONFLICT = 409;
|
|||||||
var HTTP_CREATED = 201;
|
var HTTP_CREATED = 201;
|
||||||
|
|
||||||
var CACHED_CREDENTIALS = "tenantBasedCredentials";
|
var CACHED_CREDENTIALS = "tenantBasedCredentials";
|
||||||
|
var CACHED_CREDENTIALS_FOR_WEBSOCKET_APP = "tenantBasedWebSocketClientCredentials";
|
||||||
|
|
||||||
var ALLOWED_SCOPES = "scopes";
|
var ALLOWED_SCOPES = "scopes";
|
||||||
|
|||||||
@ -138,6 +138,63 @@ var utils = function () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
publicMethods["getTenantBasedWebSocketClientAppCredentials"] = function (username) {
|
||||||
|
if (!username) {
|
||||||
|
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
|
||||||
|
"based client app credentials. No username " +
|
||||||
|
"as input - getTenantBasedWebSocketClientAppCredentials(x)");
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
//noinspection JSUnresolvedFunction, JSUnresolvedVariable
|
||||||
|
var tenantDomain = carbon.server.tenantDomain({username: username});
|
||||||
|
if (!tenantDomain) {
|
||||||
|
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
|
||||||
|
"based client application credentials. Unable to obtain a valid tenant domain for provided " +
|
||||||
|
"username - getTenantBasedWebSocketClientAppCredentials(x, y)");
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
var cachedBasedWebsocketClientAppCredentials = privateMethods.
|
||||||
|
getCachedBasedWebSocketClientAppCredentials(tenantDomain);
|
||||||
|
if (cachedBasedWebsocketClientAppCredentials) {
|
||||||
|
return cachedBasedWebsocketClientAppCredentials;
|
||||||
|
} else {
|
||||||
|
var adminUsername = deviceMgtProps["adminUser"];
|
||||||
|
var adminUserTenantId = deviceMgtProps["adminUserTenantId"];
|
||||||
|
//claims required for jwtAuthenticator.
|
||||||
|
var claims = {"http://wso2.org/claims/enduserTenantId": adminUserTenantId,
|
||||||
|
"http://wso2.org/claims/enduser": adminUsername};
|
||||||
|
var jwtToken = publicMethods.getJwtToken(adminUsername, claims);
|
||||||
|
|
||||||
|
// register a tenant based app at API Manager
|
||||||
|
var applicationName = "websocket_webapp_" + tenantDomain;
|
||||||
|
var requestURL = deviceMgtProps["oauthProvider"]["appRegistration"]
|
||||||
|
["apiManagerClientAppRegistrationServiceURL"] +
|
||||||
|
"?tenantDomain=" + tenantDomain + "&applicationName=" + applicationName;
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("POST", requestURL, false);
|
||||||
|
xhr.setRequestHeader("Content-Type", "application/json");
|
||||||
|
xhr.setRequestHeader("X-JWT-Assertion", "" + jwtToken);
|
||||||
|
xhr.send();
|
||||||
|
if (xhr["status"] == 201 && xhr["responseText"]) {
|
||||||
|
var responsePayload = parse(xhr["responseText"]);
|
||||||
|
var tenantTenantBasedWebsocketClientAppCredentials = {};
|
||||||
|
tenantTenantBasedWebsocketClientAppCredentials["clientId"] = responsePayload["client_id"];
|
||||||
|
tenantTenantBasedWebsocketClientAppCredentials["clientSecret"] =
|
||||||
|
responsePayload["client_secret"];
|
||||||
|
privateMethods.setCachedBasedWebSocketClientAppCredentials(tenantDomain,
|
||||||
|
tenantTenantBasedWebsocketClientAppCredentials);
|
||||||
|
return tenantTenantBasedWebsocketClientAppCredentials;
|
||||||
|
} else {
|
||||||
|
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving tenant " +
|
||||||
|
"based client application credentials from API " +
|
||||||
|
"Manager - getTenantBasedWebSocketClientAppCredentials(x, y)");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
privateMethods["setCachedTenantBasedClientAppCredentials"] = function (tenantDomain, clientAppCredentials) {
|
privateMethods["setCachedTenantBasedClientAppCredentials"] = function (tenantDomain, clientAppCredentials) {
|
||||||
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS"]);
|
var cachedTenantBasedClientAppCredentialsMap = application.get(constants["CACHED_CREDENTIALS"]);
|
||||||
if (!cachedTenantBasedClientAppCredentialsMap) {
|
if (!cachedTenantBasedClientAppCredentialsMap) {
|
||||||
@ -159,7 +216,32 @@ var utils = function () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
publicMethods["getTokenPairAndScopesByPasswordGrantType"] = function (username, password, encodedClientAppCredentials, scopes) {
|
privateMethods["getCachedBasedWebSocketClientAppCredentials"] = function (tenantDomain) {
|
||||||
|
var cachedBasedWebSocketClientAppCredentialsMap
|
||||||
|
= application.get(constants["CACHED_CREDENTIALS_FOR_WEBSOCKET_APP"]);
|
||||||
|
if (!cachedBasedWebSocketClientAppCredentialsMap ||
|
||||||
|
!cachedBasedWebSocketClientAppCredentialsMap[tenantDomain]) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return cachedBasedWebSocketClientAppCredentialsMap[tenantDomain];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
privateMethods["setCachedBasedWebSocketClientAppCredentials"] = function (tenantDomain, clientAppCredentials) {
|
||||||
|
var cachedBasedWebSocketClientAppCredentialsMap
|
||||||
|
= application.get(constants["CACHED_CREDENTIALS_FOR_WEBSOCKET_APP"]);
|
||||||
|
if (!cachedBasedWebSocketClientAppCredentialsMap) {
|
||||||
|
cachedBasedWebSocketClientAppCredentialsMap = {};
|
||||||
|
cachedBasedWebSocketClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
|
||||||
|
application.put(constants["CACHED_CREDENTIALS_FOR_WEBSOCKET_APP"]
|
||||||
|
, cachedBasedWebSocketClientAppCredentialsMap);
|
||||||
|
} else if (!cachedBasedWebSocketClientAppCredentialsMap[tenantDomain]) {
|
||||||
|
cachedBasedWebSocketClientAppCredentialsMap[tenantDomain] = clientAppCredentials;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
publicMethods["getTokenPairAndScopesByPasswordGrantType"] = function (username, password
|
||||||
|
, encodedClientAppCredentials, scopes) {
|
||||||
if (!username || !password || !encodedClientAppCredentials || !scopes) {
|
if (!username || !password || !encodedClientAppCredentials || !scopes) {
|
||||||
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving access token by password " +
|
log.error("{/app/modules/oauth/token-handler-utils.js} Error in retrieving access token by password " +
|
||||||
"grant type. No username, password, encoded client app credentials or scopes are " +
|
"grant type. No username, password, encoded client app credentials or scopes are " +
|
||||||
|
|||||||
@ -39,6 +39,7 @@ var handlers = function () {
|
|||||||
"as input - setupTokenPairByPasswordGrantType(x, y)");
|
"as input - setupTokenPairByPasswordGrantType(x, y)");
|
||||||
} else {
|
} else {
|
||||||
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
|
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
|
||||||
|
privateMethods.setUpEncodedTenantBasedWebSocketClientAppCredentials(username);
|
||||||
var encodedClientAppCredentials = session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
|
var encodedClientAppCredentials = session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
|
||||||
if (!encodedClientAppCredentials) {
|
if (!encodedClientAppCredentials) {
|
||||||
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair by " +
|
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair by " +
|
||||||
@ -81,6 +82,7 @@ var handlers = function () {
|
|||||||
"as input - setupTokenPairByPasswordGrantType(x, y)");
|
"as input - setupTokenPairByPasswordGrantType(x, y)");
|
||||||
} else {
|
} else {
|
||||||
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
|
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
|
||||||
|
privateMethods.setUpEncodedTenantBasedWebSocketClientAppCredentials(username);
|
||||||
var encodedClientAppCredentials = session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
|
var encodedClientAppCredentials = session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
|
||||||
if (!encodedClientAppCredentials) {
|
if (!encodedClientAppCredentials) {
|
||||||
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair " +
|
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair " +
|
||||||
@ -168,5 +170,44 @@ var handlers = function () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
privateMethods["setUpEncodedTenantBasedWebSocketClientAppCredentials"] = function (username) {
|
||||||
|
if (!username) {
|
||||||
|
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
|
||||||
|
"client credentials to session context. No username of logged in user is found as " +
|
||||||
|
"input - setUpEncodedTenantBasedWebSocketClientAppCredentials(x)");
|
||||||
|
} else {
|
||||||
|
if (devicemgtProps["apimgt-gateway"]) {
|
||||||
|
var tenantBasedWebSocketClientAppCredentials
|
||||||
|
= tokenUtil.getTenantBasedWebSocketClientAppCredentials(username);
|
||||||
|
if (!tenantBasedWebSocketClientAppCredentials) {
|
||||||
|
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up encoded tenant " +
|
||||||
|
"based client credentials to session context as the server is unable " +
|
||||||
|
"to obtain such credentials - setUpEncodedTenantBasedWebSocketClientAppCredentials(x)");
|
||||||
|
} else {
|
||||||
|
var encodedTenantBasedWebSocketClientAppCredentials =
|
||||||
|
tokenUtil.encode(tenantBasedWebSocketClientAppCredentials["clientId"] + ":" +
|
||||||
|
tenantBasedWebSocketClientAppCredentials["clientSecret"]);
|
||||||
|
// setting up encoded tenant based client credentials to session context.
|
||||||
|
session.put(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"],
|
||||||
|
encodedTenantBasedWebSocketClientAppCredentials);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var dynamicClientAppCredentials = tokenUtil.getDynamicClientAppCredentials();
|
||||||
|
if (!dynamicClientAppCredentials) {
|
||||||
|
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up encoded tenant based " +
|
||||||
|
"client credentials to session context as the server is unable to obtain " +
|
||||||
|
"dynamic client credentials - setUpEncodedTenantBasedWebSocketClientAppCredentials(x)");
|
||||||
|
}
|
||||||
|
var encodedTenantBasedWebSocketClientAppCredentials =
|
||||||
|
tokenUtil.encode(dynamicClientAppCredentials["clientId"] + ":" +
|
||||||
|
dynamicClientAppCredentials["clientSecret"]);
|
||||||
|
// setting up encoded tenant based client credentials to session context.
|
||||||
|
session.put(constants["ENCODED_TENANT_BASED_WEB_SOCKET_CLIENT_CREDENTIALS"],
|
||||||
|
encodedTenantBasedWebSocketClientAppCredentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return publicMethods;
|
return publicMethods;
|
||||||
}();
|
}();
|
||||||
Loading…
Reference in New Issue
Block a user