mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add otp token
This commit is contained in:
parent
2dd804f1a8
commit
6299d0fd83
@ -139,7 +139,12 @@ public interface DeviceManagementConfigService {
|
|||||||
value = "The properties list using for query a device",
|
value = "The properties list using for query a device",
|
||||||
required = true)
|
required = true)
|
||||||
@QueryParam("properties")
|
@QueryParam("properties")
|
||||||
String properties);
|
String properties,
|
||||||
|
@ApiParam(
|
||||||
|
name = "withAccessToken",
|
||||||
|
value = "Whether to use access token or otp token for device configuration")
|
||||||
|
@QueryParam("withAccessToken")
|
||||||
|
boolean withAccessToken);
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/device/transfer")
|
@Path("/device/transfer")
|
||||||
|
|||||||
@ -48,6 +48,30 @@ import org.apache.commons.logging.Log;
|
|||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.base.MultitenantConstants;
|
import org.wso2.carbon.base.MultitenantConstants;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.common.AppRegistrationCredentials;
|
||||||
|
import org.wso2.carbon.device.mgt.common.ApplicationRegistrationException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceTransferRequest;
|
||||||
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.AmbiguousConfigurationException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration;
|
||||||
|
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.exceptions.DeviceNotFoundException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.exceptions.OTPManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.general.TenantDetail;
|
||||||
|
import org.wso2.carbon.device.mgt.common.otp.mgt.OTPEmailTypes;
|
||||||
|
import org.wso2.carbon.device.mgt.common.otp.mgt.dto.OneTimePinDTO;
|
||||||
|
import org.wso2.carbon.device.mgt.common.permission.mgt.PermissionManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.spi.OTPManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.keymanager.KeyManagerConfigurations;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.ui.UIConfiguration;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.ui.UIConfigurationManager;
|
||||||
|
import org.wso2.carbon.device.mgt.core.permission.mgt.PermissionUtils;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException;
|
||||||
import org.wso2.carbon.user.api.Tenant;
|
import org.wso2.carbon.user.api.Tenant;
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
@ -70,7 +94,8 @@ public class DeviceManagementConfigServiceImpl implements DeviceManagementConfig
|
|||||||
@Path("/configurations")
|
@Path("/configurations")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Response getConfiguration(@HeaderParam("token") String token,
|
public Response getConfiguration(@HeaderParam("token") String token,
|
||||||
@QueryParam("properties") String properties) {
|
@QueryParam("properties") String properties,
|
||||||
|
@QueryParam("withAccessToken") boolean withAccessToken) {
|
||||||
DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
try {
|
try {
|
||||||
if (token == null || token.isEmpty()) {
|
if (token == null || token.isEmpty()) {
|
||||||
@ -95,7 +120,8 @@ public class DeviceManagementConfigServiceImpl implements DeviceManagementConfig
|
|||||||
deviceProps.put("token", token);
|
deviceProps.put("token", token);
|
||||||
DeviceConfiguration devicesConfiguration =
|
DeviceConfiguration devicesConfiguration =
|
||||||
dms.getDeviceConfiguration(deviceProps);
|
dms.getDeviceConfiguration(deviceProps);
|
||||||
setAccessTokenToDeviceConfigurations(devicesConfiguration);
|
if (withAccessToken) setAccessTokenToDeviceConfigurations(devicesConfiguration);
|
||||||
|
else setOTPTokenToDeviceConfigurations(devicesConfiguration);
|
||||||
return Response.status(Response.Status.OK).entity(devicesConfiguration).build();
|
return Response.status(Response.Status.OK).entity(devicesConfiguration).build();
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String msg = "Error occurred while retrieving configurations";
|
String msg = "Error occurred while retrieving configurations";
|
||||||
@ -207,6 +233,33 @@ public class DeviceManagementConfigServiceImpl implements DeviceManagementConfig
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setOTPTokenToDeviceConfigurations(DeviceConfiguration deviceConfiguration)
|
||||||
|
throws DeviceManagementException {
|
||||||
|
OneTimePinDTO oneTimePinData = new OneTimePinDTO();
|
||||||
|
oneTimePinData.setEmail(OTPEmailTypes.DEVICE_ENROLLMENT.toString());
|
||||||
|
oneTimePinData.setEmailType(OTPEmailTypes.DEVICE_ENROLLMENT.toString());
|
||||||
|
oneTimePinData.setUsername(deviceConfiguration.getDeviceOwner());
|
||||||
|
PrivilegedCarbonContext.startTenantFlow();
|
||||||
|
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
|
||||||
|
deviceConfiguration.getTenantDomain(), true);
|
||||||
|
oneTimePinData.setTenantId(PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||||
|
PrivilegedCarbonContext.endTenantFlow();
|
||||||
|
OTPManagementService otpManagementService = DeviceMgtAPIUtils.getOtpManagementService();
|
||||||
|
try {
|
||||||
|
OneTimePinDTO oneTimePinDTO = otpManagementService.generateOneTimePin(oneTimePinData, true);
|
||||||
|
if (oneTimePinDTO == null) {
|
||||||
|
String msg = "Null value returned when generating OTP token for " + oneTimePinData.getOtpToken();
|
||||||
|
log.error(msg);
|
||||||
|
throw new DeviceManagementException(msg);
|
||||||
|
}
|
||||||
|
deviceConfiguration.setAccessToken(oneTimePinDTO.getOtpToken());
|
||||||
|
} catch (OTPManagementException ex) {
|
||||||
|
String msg = "Error occurred while generating one time pin: " + ex.getMessage();
|
||||||
|
log.error(msg, ex);
|
||||||
|
throw new DeviceManagementException(msg, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Path("/tenants")
|
@Path("/tenants")
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -22,6 +22,8 @@ import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProvide
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.common.spi.OTPManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,6 +36,8 @@ public class DeviceMgtAPIUtils {
|
|||||||
private static DeviceManagementProviderService deviceManagementProviderService = null;
|
private static DeviceManagementProviderService deviceManagementProviderService = null;
|
||||||
private static RealmService realmService = null;
|
private static RealmService realmService = null;
|
||||||
|
|
||||||
|
private static OTPManagementService otpManagementService = null;
|
||||||
|
|
||||||
public static DeviceManagementProviderService getDeviceManagementService() {
|
public static DeviceManagementProviderService getDeviceManagementService() {
|
||||||
if (deviceManagementProviderService == null) {
|
if (deviceManagementProviderService == null) {
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
@ -48,6 +52,19 @@ public class DeviceMgtAPIUtils {
|
|||||||
return deviceManagementProviderService;
|
return deviceManagementProviderService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static OTPManagementService getOtpManagementService() {
|
||||||
|
if (otpManagementService == null) {
|
||||||
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
|
otpManagementService = (OTPManagementService) ctx.getOSGiService(OTPManagementService.class, null);
|
||||||
|
if (otpManagementService == null) {
|
||||||
|
String msg = "OTP Management Service has not initialized.";
|
||||||
|
log.error(msg);
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return otpManagementService;
|
||||||
|
}
|
||||||
|
|
||||||
public static RealmService getRealmService() {
|
public static RealmService getRealmService() {
|
||||||
if (realmService == null) {
|
if (realmService == null) {
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user