From 97201bf356108fdf874fa0ae96667e83ada29cbd Mon Sep 17 00:00:00 2001 From: shaozhuguang Date: Tue, 17 Sep 2019 19:07:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=92=E8=89=B2=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jd/blockchain/ump/model/PartiNode.java | 4 +++- .../blockchain/ump/model/PeerSharedConfigs.java | 6 ++++-- .../com/jd/blockchain/ump/model/UmpConstant.java | 6 ++++++ .../ump/model/config/LedgerInitConfig.java | 13 +++++++++++-- .../blockchain/ump/service/SecurityService.java | 2 ++ .../ump/service/SecurityServiceHandler.java | 15 +++++++++++++++ .../blockchain/ump/service/UmpServiceHandler.java | 6 +++++- .../src/main/resources/security.config | 6 +++++- 8 files changed, 51 insertions(+), 7 deletions(-) diff --git a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java index 9281d408..f5e6b988 100644 --- a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java +++ b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PartiNode.java @@ -17,7 +17,7 @@ public class PartiNode { private boolean isSecure; - public List toConfigChars() { + public List toConfigChars(List partiRoleConfigs) { List configCharList = new ArrayList<>(); @@ -25,6 +25,8 @@ public class PartiNode { configCharList.add(formatConfig(UmpConstant.PARTINODE_PUBKEY_FORMAT, pubKey)); + configCharList.addAll(partiRoleConfigs); + configCharList.add(formatConfig(UmpConstant.PARTINODE_INIT_HOST_FORMAT, initHost)); configCharList.add(formatConfig(UmpConstant.PARTINODE_INIT_PORT_FORMAT, initPort)); diff --git a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PeerSharedConfigs.java b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PeerSharedConfigs.java index 63251967..75675709 100644 --- a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PeerSharedConfigs.java +++ b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/PeerSharedConfigs.java @@ -139,13 +139,15 @@ public class PeerSharedConfigs { } } - public synchronized LedgerInitConfig ledgerInitConfig(String seed, String createTime) { + public synchronized LedgerInitConfig ledgerInitConfig(String seed, String createTime, + List securityConfigs, List partiRoleConfigs) { if (ledgerInitConfig != null) { return ledgerInitConfig; } // 处理该ledgerInitConfig - ledgerInitConfig = new LedgerInitConfig(seed, ledgerName, createTime, consensusProvider, waitNodeSize); + ledgerInitConfig = new LedgerInitConfig(seed, ledgerName, createTime, consensusProvider, waitNodeSize, + securityConfigs, partiRoleConfigs); // 添加参与方 for (int i = 0; i < sharedConfigs.size(); i++) { diff --git a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/UmpConstant.java b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/UmpConstant.java index 51316a47..807c72b8 100644 --- a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/UmpConstant.java +++ b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/UmpConstant.java @@ -60,6 +60,12 @@ public class UmpConstant { public static final String SECURITY_ROLES_PRIVILEGES_TX_FORMAT = SECURITY_ROLES + ".%s.tx-privileges"; + public static final String SECURITY_PARTI_PREFIX = "participant.default"; + + public static final String SECURITY_PARTI_ROLES = SECURITY_PARTI_PREFIX + ".roles"; + + public static final String SECURITY_PARTI_ROLES_POLICY = SECURITY_PARTI_PREFIX + ".roles-policy"; + public static final String CRYPTO_PREFIX = "crypto"; public static final String CRYPTO_HASH_VERIFY = CRYPTO_PREFIX + ".verify-hash"; diff --git a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java index f31d84fe..02298315 100644 --- a/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java +++ b/source/manager/ump-model/src/main/java/com/jd/blockchain/ump/model/config/LedgerInitConfig.java @@ -22,18 +22,25 @@ public class LedgerInitConfig { "com.jd.blockchain.crypto.service.classic.ClassicCryptoService, " + "com.jd.blockchain.crypto.service.sm.SMCryptoService"; + List securityConfigs = null; + + List partiRolesConfigs = null; + private List partiNodes = new ArrayList<>(); public LedgerInitConfig() { } - public LedgerInitConfig(String seed, String name, String createTime, String consensusProvider, int nodeSize) { + public LedgerInitConfig(String seed, String name, String createTime, String consensusProvider, int nodeSize, + List securityConfigs, List partiRolesConfigs) { this.seed = seed; this.name = name; this.createTime = createTime; this.consensusProvider = consensusProvider; this.nodeSize = nodeSize; + this.securityConfigs = securityConfigs; + this.partiRolesConfigs = partiRolesConfigs; } public List toConfigChars(String consensusConf) { @@ -54,8 +61,10 @@ public class LedgerInitConfig { configChars.add(toConfigChars(UmpConstant.PARTINODE_COUNT, partiNodes.size())); + configChars.addAll(securityConfigs); + for (PartiNode partiNode : partiNodes) { - configChars.addAll(partiNode.toConfigChars()); + configChars.addAll(partiNode.toConfigChars(this.partiRolesConfigs)); } return configChars; diff --git a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityService.java b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityService.java index 0561c740..af560deb 100644 --- a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityService.java +++ b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityService.java @@ -6,5 +6,7 @@ public interface SecurityService { List securityConfigs(); + List participantRoleConfigs(); + void init(); } diff --git a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java index 267d154e..a662a073 100644 --- a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java +++ b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/SecurityServiceHandler.java @@ -16,6 +16,8 @@ public class SecurityServiceHandler implements SecurityService { private List securityConfigs = new ArrayList<>(); + private List participantRoleConfigs = new ArrayList<>(); + public SecurityServiceHandler() { init(); } @@ -25,6 +27,11 @@ public class SecurityServiceHandler implements SecurityService { return securityConfigs; } + @Override + public List participantRoleConfigs() { + return participantRoleConfigs; + } + @Override public void init() { try { @@ -62,6 +69,14 @@ public class SecurityServiceHandler implements SecurityService { String roleTxValue = currentProps.getProperty(roleTxKey, ""); securityConfigs.add(propBuild(roleTxKey, roleTxValue)); } + + // 将参与方信息写入 + String partiRolesValue = currentProps.getProperty(UmpConstant.SECURITY_PARTI_ROLES, ""); + String partiRolesPolicyValue = currentProps.getProperty(UmpConstant.SECURITY_PARTI_ROLES_POLICY, ""); + + participantRoleConfigs.add(propBuild(UmpConstant.SECURITY_PARTI_ROLES, partiRolesValue)); + participantRoleConfigs.add(propBuild(UmpConstant.SECURITY_PARTI_ROLES_POLICY, partiRolesPolicyValue)); + } else { throw new IllegalStateException("Can not find Properties from security.config"); } diff --git a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/UmpServiceHandler.java b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/UmpServiceHandler.java index c17cc309..54ed8a9e 100644 --- a/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/UmpServiceHandler.java +++ b/source/manager/ump-service/src/main/java/com/jd/blockchain/ump/service/UmpServiceHandler.java @@ -60,6 +60,9 @@ public class UmpServiceHandler implements UmpService { @Autowired private UmpStateService umpStateService; + @Autowired + private SecurityService securityService; + @Override public synchronized PeerSharedConfigs loadPeerSharedConfigs(PeerLocalConfig sharedConfig) { @@ -117,7 +120,8 @@ public class UmpServiceHandler implements UmpService { // 所有数据到达之后生成返回的应答 LedgerInitConfig initConfig = sharedConfigs.ledgerInitConfig( - ledgerService.randomSeed(), ledgerService.currentCreateTime()); + ledgerService.randomSeed(), ledgerService.currentCreateTime(), + securityService.securityConfigs(), securityService.participantRoleConfigs()); // 生成共识文件 String consensusConfig = consensusService.initConsensusConf( diff --git a/source/manager/ump-service/src/main/resources/security.config b/source/manager/ump-service/src/main/resources/security.config index 02345894..4796e551 100644 --- a/source/manager/ump-service/src/main/resources/security.config +++ b/source/manager/ump-service/src/main/resources/security.config @@ -14,4 +14,8 @@ security.role.MANAGER.tx-privileges=DIRECT_OPERATION, CONTRACT_OPERATION security.role.GUEST.ledger-privileges= -security.role.GUEST.tx-privileges=CONTRACT_OPERATION \ No newline at end of file +security.role.GUEST.tx-privileges=CONTRACT_OPERATION + +participant.default.roles=ADMIN, MANAGER + +participant.default.roles-policy=UNION \ No newline at end of file