diff --git a/components/oauth-extensions/dynamic-client-manager/pom.xml b/components/oauth-extensions/dynamic-client-manager/pom.xml
index a04aa0ecea..b00035fa32 100644
--- a/components/oauth-extensions/dynamic-client-manager/pom.xml
+++ b/components/oauth-extensions/dynamic-client-manager/pom.xml
@@ -118,8 +118,41 @@
org.wso2.carbon.device.mgt.core
provided
-
+
+ org.wso2.carbon
+ org.wso2.carbon.utils
+ provided
+
+
+ org.wso2.carbon.identity
+ org.wso2.carbon.identity.application.mgt
+ provided
+
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.api
+ provided
+
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.impl
+ provided
+
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.keymgt.client
+ provided
+
+
+ org.wso2.carbon.identity
+ org.wso2.carbon.identity.oauth
+ provided
+
+
+ com.googlecode.json-simple.wso2
+ json-simple
+ provided
+
-
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/ApplicationConstants.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/ApplicationConstants.java
new file mode 100644
index 0000000000..f01ad38814
--- /dev/null
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/ApplicationConstants.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.identity.oauth.extension;
+
+public class ApplicationConstants {
+
+ public static final String OAUTH_CLIENT_ID = "client_id"; //this means consumer key
+ public static final String OAUTH_CLIENT_SECRET = "client_secret";
+ public static final String OAUTH_REDIRECT_URIS = "redirect_uris";
+ public static final String OAUTH_CALLBACK_URIS = "callback_url";
+ public static final String OAUTH_CLIENT_NAME = "client_name";
+ public static final String OAUTH_CLIENT_TYPE = "client_type";
+ public static final String APP_KEY_TYPE = "key_type";
+ public static final String APP_CALLBACK_URL = "callback_url";
+ public static final String APP_HOME_PAGE = "homepage";
+ public static final String OAUTH_CLIENT_CONTACT = "contact";
+ public static final String APP_LOGOURI = "logouri";
+ public static final String OAUTH_CLIENT_SCOPE = "scope";
+ public static final String OAUTH_CLIENT_GRANT = "grant_types";
+ public static final String OAUTH_CLIENT_RESPONSETYPE = "response_types";
+ public static final String OAUTH_CLIENT_AUTHMETHOD = "token_endpoint_auth_method";
+ public static final String OAUTH_CLIENT_REGISTRATION_CLIENT_URI = "registration_client_uri";
+ public static final String OAUTH_CLIENT_REGISTRATION_ACCESSTOKEN = "registration_access_token";
+ public static final String OAUTH_CLIENT_CONTACTS = "contacts";
+ public static final String OAUTH_CLIENT_MANUAL = "MANUAL";
+ public static final String OAUTH_CLIENT_PRODUCTION = "PRODUCTION";
+ public static final String OAUTH_CLIENT_SANDBOX = "SANDBOX";
+ public static final String OAUTH_CLIENT_NOACCESSTOKEN = "NO ACCESS TOKEN";
+ public static final String OAUTH_CLIENT_JSONPARAMSTRING = "jsonParams";
+ public static final String OAUTH_CLIENT_USERNAME = "username";
+ public static final String OAUTH_CLIENT_APPLICATION = "application";
+ public static final String VALIDITY_PERIOD = "validityPeriod";
+
+}
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/OAuthApplicationInfo.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/OAuthApplicationInfo.java
new file mode 100644
index 0000000000..e994bad555
--- /dev/null
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/OAuthApplicationInfo.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.identity.oauth.extension;
+
+import org.json.simple.JSONObject;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class OAuthApplicationInfo {
+
+
+ private String clientId;
+ private String clientName;
+ private String callBackURL;
+ private String clientSecret;
+ private Map parameters = new HashMap();
+
+ /**
+ * get client Id (consumer id)
+ * @return clientId
+ */
+ public String getClientId() {
+ return clientId;
+ }
+ /**
+ * set client Id
+ * @param clientId
+ */
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ }
+
+ public String getClientSecret() {
+ return clientSecret;
+ }
+
+ public void setClientSecret(String clientSecret) {
+ this.clientSecret = clientSecret;
+ }
+
+ /**
+ * Set client Name of OAuthApplication.
+ * @param clientName
+ */
+ public void setClientName(String clientName){
+ this.clientName = clientName;
+ }
+
+ /**
+ * Set callback URL of OAuthapplication.
+ * @param callBackURL
+ */
+ public void setCallBackURL(String callBackURL){
+ this.callBackURL = callBackURL;
+ }
+
+ public void addParameter(String name,Object value){
+ parameters.put(name,value);
+ }
+
+ public Object getParameter(String name){
+ return parameters.get(name);
+ }
+
+ public String getJsonString(){
+
+ return JSONObject.toJSONString(parameters);
+
+ }
+
+ public String getClientName(){
+ return clientName;
+ }
+
+ public String getCallBackURL(){
+ return callBackURL;
+ }
+
+ public void putAll(Map parameters){
+ this.parameters.putAll(parameters);
+ }
+
+ public void removeParameter(String key){
+ this.parameters.remove(key);
+ }
+
+}
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationProfile.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationProfile.java
new file mode 100644
index 0000000000..eb2b653ed6
--- /dev/null
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationProfile.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.identity.oauth.extension;
+
+import javax.ws.rs.core.Request;
+
+public class RegistrationProfile {
+
+ private String applicationType;
+ private String[] redirectUris;
+ private String clientName;
+ private String logoUri;
+ private String subjectType;
+ private String sectorIdentifierUri;
+ private String tokenEndpointAuthMethod;
+ private String jwksUri;
+ private String userInfoEncryptedResponseAlg;
+ private String userInfoEncryptedResponseEnc;
+ private String[] contacts;
+ private String[] requestUris;
+
+ public String getApplicationType() {
+ return applicationType;
+ }
+
+ public void setApplicationType(String applicationType) {
+ this.applicationType = applicationType;
+ }
+
+ public String[] getRedirectUris() {
+ return redirectUris;
+ }
+
+ public void setRedirectUris(String[] redirectUris) {
+ this.redirectUris = redirectUris;
+ }
+
+ public String getClientName() {
+ return clientName;
+ }
+
+ public void setClientName(String clientName) {
+ this.clientName = clientName;
+ }
+
+ public String getLogoUri() {
+ return logoUri;
+ }
+
+ public void setLogoUri(String logoUri) {
+ this.logoUri = logoUri;
+ }
+
+ public String getSubjectType() {
+ return subjectType;
+ }
+
+ public void setSubjectType(String subjectType) {
+ this.subjectType = subjectType;
+ }
+
+ public String getSectorIdentifierUri() {
+ return sectorIdentifierUri;
+ }
+
+ public void setSectorIdentifierUri(String sectorIdentifierUri) {
+ this.sectorIdentifierUri = sectorIdentifierUri;
+ }
+
+ public String getTokenEndpointAuthMethod() {
+ return tokenEndpointAuthMethod;
+ }
+
+ public void setTokenEndpointAuthMethod(String tokenEndpointAuthMethod) {
+ this.tokenEndpointAuthMethod = tokenEndpointAuthMethod;
+ }
+
+ public String getJwksUri() {
+ return jwksUri;
+ }
+
+ public void setJwksUri(String jwksUri) {
+ this.jwksUri = jwksUri;
+ }
+
+ public String getUserInfoEncryptedResponseAlg() {
+ return userInfoEncryptedResponseAlg;
+ }
+
+ public void setUserInfoEncryptedResponseAlg(String userInfoEncryptedResponseAlg) {
+ this.userInfoEncryptedResponseAlg = userInfoEncryptedResponseAlg;
+ }
+
+ public String getUserInfoEncryptedResponseEnc() {
+ return userInfoEncryptedResponseEnc;
+ }
+
+ public void setUserInfoEncryptedResponseEnc(String userInfoEncryptedResponseEnc) {
+ this.userInfoEncryptedResponseEnc = userInfoEncryptedResponseEnc;
+ }
+
+ public String[] getContacts() {
+ return contacts;
+ }
+
+ public void setContacts(String[] contacts) {
+ this.contacts = contacts;
+ }
+
+ public String[] getRequestUris() {
+ return requestUris;
+ }
+
+ public void setRequestUris(String[] requestUris) {
+ this.requestUris = requestUris;
+ }
+
+}
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationResponse.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationResponse.java
new file mode 100644
index 0000000000..23d60a8f11
--- /dev/null
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationResponse.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.identity.oauth.extension;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+
+public class RegistrationResponse extends Response {
+
+ @Override
+ public Object getEntity() {
+ return null;
+ }
+
+ @Override
+ public int getStatus() {
+ return 0;
+ }
+
+ @Override
+ public MultivaluedMap getMetadata() {
+ return null;
+ }
+
+}
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationService.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationService.java
index 49795c9f8d..9f2a0edd71 100644
--- a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationService.java
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/RegistrationService.java
@@ -23,16 +23,14 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
-@Path("/connect")
public interface RegistrationService {
@POST
@Path("/register")
- Response register(Request request);
+ Response register(RegistrationProfile profile);
}
\ No newline at end of file
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/impl/ClientRegistrationServiceImpl.java b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/impl/ClientRegistrationServiceImpl.java
new file mode 100644
index 0000000000..5b180823c8
--- /dev/null
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/java/org/wso2/carbon/identity/oauth/extension/impl/ClientRegistrationServiceImpl.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.wso2.carbon.identity.oauth.extension.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.json.simple.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.wso2.carbon.apimgt.api.APIManagementException;
+import org.wso2.carbon.apimgt.impl.utils.APIUtil;
+import org.wso2.carbon.apimgt.keymgt.client.SubscriberKeyMgtClient;
+import org.wso2.carbon.context.CarbonContext;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.identity.application.common.IdentityApplicationManagementException;
+import org.wso2.carbon.identity.application.common.model.InboundAuthenticationConfig;
+import org.wso2.carbon.identity.application.common.model.InboundAuthenticationRequestConfig;
+import org.wso2.carbon.identity.application.common.model.Property;
+import org.wso2.carbon.identity.application.common.model.ServiceProvider;
+import org.wso2.carbon.identity.application.mgt.ApplicationManagementService;
+import org.wso2.carbon.identity.base.IdentityException;
+import org.wso2.carbon.identity.oauth.OAuthAdminService;
+import org.wso2.carbon.identity.oauth.dto.OAuthConsumerAppDTO;
+import org.wso2.carbon.identity.oauth.extension.*;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
+import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
+
+import javax.ws.rs.core.Response;
+
+public class ClientRegistrationServiceImpl implements RegistrationService {
+
+ private static final Log log = LogFactory.getLog(ClientRegistrationServiceImpl.class);
+
+ @Override
+ public Response register(RegistrationProfile profile) {
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
+ MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ OAuthApplicationInfo info = this.registerApplication(profile);
+ return Response.status(Response.Status.ACCEPTED).entity(info.getJsonString()).build();
+ } catch (APIManagementException e) {
+ String msg = "Error occurred while registering client '" + profile.getClientName() + "'";
+ log.error(msg, e);
+ return Response.serverError().entity(msg).build();
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ }
+
+
+ private OAuthApplicationInfo registerApplication(RegistrationProfile profile) throws APIManagementException {
+ //OAuthApplications are created by calling to APIKeyMgtSubscriber Service
+ SubscriberKeyMgtClient keyMgtClient = APIUtil.getKeyManagementClient();
+ OAuthApplicationInfo oAuthApplicationInfo = new OAuthApplicationInfo();
+
+ //Subscriber's name should be passed as a parameter, since it's under the subscriber the OAuth App is created.
+ String userId = (String) oAuthApplicationInfo.getParameter(ApplicationConstants.OAUTH_CLIENT_USERNAME);
+ String applicationName = profile.getClientName();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Trying to create OAuth application :" + applicationName);
+ }
+
+ String callBackURL = "";
+ if (oAuthApplicationInfo.getParameter("callback_url") != null) {
+ JSONArray jsonArray = (JSONArray) oAuthApplicationInfo.getParameter("callback_url");
+ for (Object callbackUrlObject : jsonArray) {
+ callBackURL = (String) callbackUrlObject;
+ }
+ }
+
+ String tokenScope = (String) oAuthApplicationInfo.getParameter("tokenScope");
+ String tokenScopes[] = new String[1];
+ tokenScopes[0] = tokenScope;
+
+ oAuthApplicationInfo.addParameter("tokenScope", tokenScopes);
+ OAuthApplicationInfo info;
+ try {
+ info = this.createOAuthApplication(userId, applicationName, callBackURL);
+ } catch (Exception e) {
+ throw new APIManagementException("Can not create OAuth application : " + applicationName, e);
+ }
+
+ if (info == null || info.getJsonString() == null) {
+ throw new APIManagementException("OAuth app does not contain required data: '" + applicationName + "'");
+ }
+
+ oAuthApplicationInfo.setClientName(info.getClientName());
+ oAuthApplicationInfo.setClientId(info.getClientId());
+ oAuthApplicationInfo.setCallBackURL(info.getCallBackURL());
+ oAuthApplicationInfo.setClientSecret(info.getClientSecret());
+
+ try {
+ JSONObject jsonObject = new JSONObject(info.getJsonString());
+ if (jsonObject.has(ApplicationConstants.OAUTH_REDIRECT_URIS)) {
+ oAuthApplicationInfo.addParameter(ApplicationConstants.OAUTH_REDIRECT_URIS, jsonObject.get(ApplicationConstants.OAUTH_REDIRECT_URIS));
+ }
+
+ if (jsonObject.has(ApplicationConstants.OAUTH_CLIENT_NAME)) {
+ oAuthApplicationInfo.addParameter(ApplicationConstants.
+ OAUTH_CLIENT_NAME, jsonObject.get(ApplicationConstants.OAUTH_CLIENT_NAME));
+ }
+
+ if (jsonObject.has(ApplicationConstants.OAUTH_CLIENT_GRANT)) {
+ oAuthApplicationInfo.addParameter(ApplicationConstants.
+ OAUTH_CLIENT_GRANT, jsonObject.get(ApplicationConstants.OAUTH_CLIENT_GRANT));
+ }
+ } catch (JSONException e) {
+ throw new APIManagementException("Can not retrieve information of the created OAuth application", e);
+ }
+ return oAuthApplicationInfo;
+ }
+
+ public OAuthApplicationInfo createOAuthApplication(
+ String userId, String applicationName, String callbackUrl) throws APIManagementException, IdentityException {
+
+ if (userId == null || userId.isEmpty()) {
+ return null;
+ }
+
+ String tenantDomain = MultitenantUtils.getTenantDomain(userId);
+ String baseUser = CarbonContext.getThreadLocalCarbonContext().getUsername();
+ String userName = MultitenantUtils.getTenantAwareUsername(userId);
+
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain, true);
+
+ // Acting as the provided user. When creating Service Provider/OAuth App,
+ // username is fetched from CarbonContext
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(userName);
+
+ try {
+
+ // Append the username before Application name to make application name unique across two users.
+ applicationName = userName + "_" + applicationName;
+
+ // Create the Service Provider
+ ServiceProvider serviceProvider = new ServiceProvider();
+ serviceProvider.setApplicationName(applicationName);
+ serviceProvider.setDescription("Service Provider for application " + applicationName);
+
+ ApplicationManagementService appMgtService = ApplicationManagementService.getInstance();
+ appMgtService.createApplication(serviceProvider);
+
+ ServiceProvider createdServiceProvider = appMgtService.getApplication(applicationName);
+
+ if (createdServiceProvider == null) {
+ throw new APIManagementException("Couldn't create Service Provider Application " + applicationName);
+ }
+
+ // Then Create OAuthApp
+ OAuthAdminService oAuthAdminService = new OAuthAdminService();
+
+ OAuthConsumerAppDTO oAuthConsumerAppDTO = new OAuthConsumerAppDTO();
+
+ oAuthConsumerAppDTO.setApplicationName(applicationName);
+ oAuthConsumerAppDTO.setCallbackUrl(callbackUrl);
+ log.debug("Creating OAuth App " + applicationName);
+ oAuthAdminService.registerOAuthApplicationData(oAuthConsumerAppDTO);
+ log.debug("Created OAuth App " + applicationName);
+ OAuthConsumerAppDTO createdApp = oAuthAdminService.getOAuthApplicationDataByAppName(oAuthConsumerAppDTO
+ .getApplicationName());
+ log.debug("Retrieved Details for OAuth App " + createdApp.getApplicationName());
+
+ // Set the OAuthApp in InboundAuthenticationConfig
+ InboundAuthenticationConfig inboundAuthenticationConfig = new InboundAuthenticationConfig();
+ InboundAuthenticationRequestConfig[] inboundAuthenticationRequestConfigs = new
+ InboundAuthenticationRequestConfig[1];
+ InboundAuthenticationRequestConfig inboundAuthenticationRequestConfig = new
+ InboundAuthenticationRequestConfig();
+
+ inboundAuthenticationRequestConfig.setInboundAuthKey(createdApp.getOauthConsumerKey());
+ inboundAuthenticationRequestConfig.setInboundAuthType("oauth2");
+ if (createdApp.getOauthConsumerSecret() != null && !createdApp.
+ getOauthConsumerSecret().isEmpty()) {
+ Property property = new Property();
+ property.setName("oauthConsumerSecret");
+ property.setValue(createdApp.getOauthConsumerSecret());
+ Property[] properties = {property};
+ inboundAuthenticationRequestConfig.setProperties(properties);
+ }
+
+ inboundAuthenticationRequestConfigs[0] = inboundAuthenticationRequestConfig;
+ inboundAuthenticationConfig.setInboundAuthenticationRequestConfigs(inboundAuthenticationRequestConfigs);
+ createdServiceProvider.setInboundAuthenticationConfig(inboundAuthenticationConfig);
+
+ // Update the Service Provider app to add OAuthApp as an Inbound Authentication Config
+ appMgtService.updateApplication(createdServiceProvider);
+
+
+ OAuthApplicationInfo oAuthApplicationInfo = new OAuthApplicationInfo();
+ oAuthApplicationInfo.setClientId(createdApp.getOauthConsumerKey());
+ oAuthApplicationInfo.setCallBackURL(createdApp.getCallbackUrl());
+ oAuthApplicationInfo.setClientSecret(createdApp.getOauthConsumerSecret());
+
+ oAuthApplicationInfo.addParameter(ApplicationConstants.
+ OAUTH_REDIRECT_URIS, createdApp.getCallbackUrl());
+ oAuthApplicationInfo.addParameter(ApplicationConstants.
+ OAUTH_CLIENT_NAME, createdApp.getApplicationName());
+ oAuthApplicationInfo.addParameter(ApplicationConstants.
+ OAUTH_CLIENT_GRANT, createdApp.getGrantTypes());
+
+ return oAuthApplicationInfo;
+
+ } catch (IdentityApplicationManagementException e) {
+ APIUtil.handleException("Error occurred while creating ServiceProvider for app " + applicationName, e);
+ } catch (Exception e) {
+ APIUtil.handleException("Error occurred while creating OAuthApp " + applicationName, e);
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(baseUser);
+ }
+ return null;
+ }
+
+}
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/META-INF/webapp-classloading.xml b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/META-INF/webapp-classloading.xml
index 0371f7c294..38ac535842 100644
--- a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/META-INF/webapp-classloading.xml
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/META-INF/webapp-classloading.xml
@@ -31,5 +31,5 @@
Tomcat environment is the default and every webapps gets it even if they didn't specify it.
e.g. If a webapps requires CXF, they will get both Tomcat and CXF.
-->
- Carbon
+ CXF,Carbon
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/cxf-servlet.xml b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/cxf-servlet.xml
index dc68cd55e3..94aac35f68 100644
--- a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/cxf-servlet.xml
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/cxf-servlet.xml
@@ -19,130 +19,20 @@
+ http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/web.xml b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/web.xml
index 645e44dae5..a89397675a 100644
--- a/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/web.xml
+++ b/components/oauth-extensions/dynamic-client-manager/src/main/webapp/WEB-INF/web.xml
@@ -18,34 +18,20 @@
~ * under the License.
~ */
-->
-
- CDM-Windows-API
-
-
- contextConfigLocation
- /WEB-INF/cxf-servlet.xml
-
-
-
- org.wso2.carbon.mdm.mobileservices.windows.common.util.ConfigInitializerContextListener
-
-
-
+
+ Admin-Webapp
- JAX-WS/JAX-RS-windows Endpoint
- JAX-WS/JAX-RS-windows Servlet
- JAXServlet-windows
+ JAX-WS/JAX-RS Device Registration Agent Endpoint
+ JAX-WS/JAX-RS Servlet
+ CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1
- JAXServlet-windows
- /services/*
+ CXFServlet
+ /*
60
diff --git a/pom.xml b/pom.xml
index cf2b6fc79f..98d51d2cd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -592,6 +592,11 @@
+
+ org.wso2.carbon.apimgt
+ org.wso2.carbon.apimgt.keymgt.client
+ ${carbon.api.mgt.version}
+
org.wso2.carbon.apimgt
org.wso2.carbon.apimgt.impl
@@ -877,6 +882,7 @@
${cxf.version}
+
org.wso2.carbon.commons
@@ -890,6 +896,22 @@
${carbon.commons.version}
+
+
+ org.wso2.carbon.identity
+ org.wso2.carbon.identity.application.mgt
+ ${carbon.identity.version}
+
+
+ org.wso2.carbon.identity
+ org.wso2.carbon.identity.oauth
+ ${carbon.identity.version}
+
+
+ com.googlecode.json-simple.wso2
+ json-simple
+ ${json-simple.version}
+
@@ -1150,6 +1172,7 @@
2.6.1
2.5.11
+ 1.1.wso2v1