Skip to content

Commit

Permalink
Support to decrypt password from linkis datasource
Browse files Browse the repository at this point in the history
  • Loading branch information
jefftlin committed Nov 14, 2024
1 parent cf926a2 commit df7ccd2
Showing 1 changed file with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.google.common.base.Strings;
import com.webank.wedatasphere.exchangis.common.config.GlobalConfiguration;
import com.webank.wedatasphere.exchangis.common.pager.PageResult;
import com.webank.wedatasphere.exchangis.common.util.AESUtils;
import com.webank.wedatasphere.exchangis.dao.domain.ExchangisJobDsBind;
import com.webank.wedatasphere.exchangis.dao.domain.ExchangisJobParamConfig;
import com.webank.wedatasphere.exchangis.dao.mapper.ExchangisJobDsBindMapper;
Expand Down Expand Up @@ -49,6 +50,7 @@
import com.webank.wedatasphere.exchangis.project.entity.vo.ProjectDsQueryVo;
import com.webank.wedatasphere.exchangis.project.provider.service.ProjectOpenService;
import org.apache.commons.lang3.StringUtils;
import org.apache.linkis.common.conf.CommonVars;
import org.apache.linkis.common.exception.ErrorException;
import org.apache.linkis.datasource.client.AbstractRemoteClient;
import org.apache.linkis.datasource.client.impl.LinkisDataSourceRemoteClient;
Expand Down Expand Up @@ -79,6 +81,9 @@ public class DefaultDataSourceService extends AbstractDataSourceService

private static final Logger LOG = LoggerFactory.getLogger(DefaultDataSourceService.class);

public static final CommonVars<String> LINKIS_DATASOURCE_AES_KEY =
CommonVars.apply("wds.linkis.datasource.aes.secret-key", "");

/**
* Engine settings
*/
Expand Down Expand Up @@ -851,7 +856,14 @@ public Map<String, Object> getDataSourceConnectParamsById(String operator, Long
.setUser(operator).setDataSourceId(id).build(),
LinkisDataSourceRemoteClient::getConnectParams, CLIENT_DATASOURCE_PARAMS_GET_ERROR.getCode(),
"");
return result.getConnectParams();

Map<String, Object> connectParams = result.getConnectParams();
if (Objects.nonNull(connectParams) && StringUtils.equals(String.valueOf(connectParams.get("isEncrypt")), "1")) {
String decrypt = AESUtils.decrypt(connectParams.get("password").toString(),
LINKIS_DATASOURCE_AES_KEY.getValue());
connectParams.replace("password", decrypt);
}
return connectParams;
}

/**
Expand Down

0 comments on commit df7ccd2

Please sign in to comment.