From 4d157c68b7003948b8dd7ac2d38e8ceb1c469be0 Mon Sep 17 00:00:00 2001 From: Ooo0oO0o0oO <907709476@qq.com> Date: Tue, 24 Dec 2019 10:47:19 +0800 Subject: [PATCH] reorg project structure --- .../dubbo/common/utils/SignatureUtils.java | 8 +- dubbo-plugin/dubbo-auth/pom.xml | 46 +++++++++++ .../auth/AccessKeyAuthenticationHelper.java | 76 ++++++++++--------- .../java/org/apache/dubbo/auth/Constants.java | 46 +++++++++++ .../dubbo/auth/DefaultAccessKeyStorage.java | 38 ++++++++++ .../AccessKeyNotFoundException.java | 6 +- .../dubbo/auth/filter/ConsumerSignFilter.java | 11 +-- .../auth}/filter/ProviderAuthFilter.java | 8 +- .../dubbo/auth/model/AccessKeyPair.java | 6 +- .../dubbo/auth/spi}/AccessKeyStorage.java | 11 +-- .../dubbo/auth/spi}/AuthenticationHelper.java | 2 +- ...org.apache.dubbo.auth.spi.AccessKeyStorage | 1 + ...apache.dubbo.auth.spi.AuthenticationHelper | 1 + .../internal/org.apache.dubbo.rpc.Filter | 2 + dubbo-plugin/pom.xml | 1 + .../java/org/apache/dubbo/rpc/Constants.java | 22 ------ 16 files changed, 204 insertions(+), 81 deletions(-) create mode 100644 dubbo-plugin/dubbo-auth/pom.xml rename {dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo}/auth/AccessKeyAuthenticationHelper.java (73%) create mode 100644 dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/Constants.java create mode 100644 dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/DefaultAccessKeyStorage.java rename {dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/exception}/AccessKeyNotFoundException.java (86%) rename dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ConsumerAuthFilter.java => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ConsumerSignFilter.java (89%) rename {dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth}/filter/ProviderAuthFilter.java (93%) rename dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKey.java => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/model/AccessKeyPair.java (95%) rename {dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi}/AccessKeyStorage.java (78%) rename {dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth => dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi}/AuthenticationHelper.java (97%) create mode 100644 dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AccessKeyStorage create mode 100644 dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AuthenticationHelper create mode 100644 dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/SignatureUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/SignatureUtils.java index 06a73be9610..a283d4abdda 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/SignatureUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/SignatureUtils.java @@ -23,6 +23,7 @@ import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.Serializable; +import java.security.NoSuchAlgorithmException; import java.security.SignatureException; import java.util.Arrays; import java.util.Base64; @@ -44,7 +45,7 @@ public static String sign(Object[] parameters, String metadata, String key) { return sign(metadata, key); } boolean notSerializable = Arrays.stream(parameters).anyMatch(parameter -> !(parameter instanceof Serializable)); - if (notSerializable){ + if (notSerializable) { throw new IllegalArgumentException(""); } @@ -61,9 +62,9 @@ public static String sign(Object[] parameters, String metadata, String key) { public static String sign(byte[] data, String key) throws SignatureException { String result; try { + Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM); SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA256_ALGORITHM); - Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM); mac.init(signingKey); // compute the hmac on input data bytes byte[] rawHmac = mac.doFinal(data); @@ -84,8 +85,7 @@ static byte[] toByteArray(Object[] parameters) throws Exception { out = new ObjectOutputStream(bos); out.writeObject(parameters); out.flush(); - byte[] bytes = bos.toByteArray(); - return bytes; + return bos.toByteArray(); } finally { try { bos.close(); diff --git a/dubbo-plugin/dubbo-auth/pom.xml b/dubbo-plugin/dubbo-auth/pom.xml new file mode 100644 index 00000000000..5ae1d98ac07 --- /dev/null +++ b/dubbo-plugin/dubbo-auth/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-auth + jar + + + UTF-8 + false + + + + + org.apache.dubbo + dubbo-common + ${project.version} + + + org.apache.dubbo + dubbo-rpc-api + ${project.version} + + + \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyAuthenticationHelper.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/AccessKeyAuthenticationHelper.java similarity index 73% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyAuthenticationHelper.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/AccessKeyAuthenticationHelper.java index afb72e2b82d..c2c900bcb2a 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyAuthenticationHelper.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/AccessKeyAuthenticationHelper.java @@ -14,14 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter.auth; +package org.apache.dubbo.auth; +import org.apache.dubbo.auth.exception.AccessKeyNotFoundException; +import org.apache.dubbo.auth.model.AccessKeyPair; +import org.apache.dubbo.auth.spi.AccessKeyStorage; +import org.apache.dubbo.auth.spi.AuthenticationHelper; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.utils.SignatureUtils; import org.apache.dubbo.common.utils.StringUtils; -import org.apache.dubbo.rpc.Constants; import org.apache.dubbo.rpc.Invocation; public class AccessKeyAuthenticationHelper implements AuthenticationHelper { @@ -29,59 +32,62 @@ public class AccessKeyAuthenticationHelper implements AuthenticationHelper { public void signForRequest(Invocation invocation, URL url) { String currentTime = String.valueOf(System.currentTimeMillis()); String consumer = url.getParameter(CommonConstants.APPLICATION_KEY); - - AccessKeyStorage accessKeyStorage = ExtensionLoader.getExtensionLoader(AccessKeyStorage.class) - .getExtension(url.getParameter(Constants.ACCESS_KEY_STORAGE_KEY, Constants.DEFAULT_ACCESS_KEY_STORAGE)); - - AccessKey accessKey = accessKeyStorage.getAccessKey(url, invocation); - - invocation.setAttachment(Constants.SIGNATURE_STRING_FORMAT, getSignature(url, invocation, accessKey.getSecretKey(), currentTime)); + AccessKeyPair accessKeyPair = getAccessKeyPair(invocation, url); + invocation.setAttachment(Constants.SIGNATURE_STRING_FORMAT, getSignature(url, invocation, accessKeyPair.getSecretKey(), currentTime)); invocation.setAttachment(Constants.REQUEST_TIMESTAMP_KEY, currentTime); - invocation.setAttachment(Constants.AK_KEY, accessKey.getAccessKey()); + invocation.setAttachment(Constants.AK_KEY, accessKeyPair.getAccessKey()); invocation.setAttachment(CommonConstants.CONSUMER, consumer); } - String getSignature(URL url, Invocation invocation, String secrectKey, String time) { - boolean parameterEncrypt = url.getParameter(Constants.PARAMTER_ENCRYPT_ENABLE_KEY, false); - String signature; - String requestString = String.format(Constants.SIGNATURE_STRING_FORMAT, - url.getColonSeparatedKey(), invocation.getMethodName(), secrectKey, time); - if (parameterEncrypt) { - signature = SignatureUtils.sign(invocation.getArguments(), requestString, secrectKey); - } else { - signature = SignatureUtils.sign(requestString, secrectKey); - } - return signature; - } - @Override public boolean authenticateRequest(Invocation invocation, URL url) { - String ak = String.valueOf(invocation.getAttachment(Constants.AK_KEY)); + String accessKeyId = String.valueOf(invocation.getAttachment(Constants.AK_KEY)); String requestTimestamp = String.valueOf(invocation.getAttachment(Constants.REQUEST_TIMESTAMP_KEY)); String originSignature = String.valueOf(invocation.getAttachment(Constants.REQUEST_SIGNATURE_KEY)); String consumer = String.valueOf(invocation.getAttachment(CommonConstants.CONSUMER)); - if (StringUtils.isEmpty(ak) || StringUtils.isEmpty(consumer) + if (StringUtils.isEmpty(accessKeyId) || StringUtils.isEmpty(consumer) || StringUtils.isEmpty(requestTimestamp) || StringUtils.isEmpty(originSignature)) { throw new RuntimeException("Auth failed, maybe consumer not enable the auth"); } + AccessKeyPair accessKeyPair = getAccessKeyPair(invocation, url); + + String computeSignature = getSignature(url, invocation, accessKeyPair.getSecretKey(), requestTimestamp); + boolean success = computeSignature.equals(originSignature); + if (!success) { + throw new RuntimeException("Auth failed, signature is not correct"); + } + return success; + } + + + AccessKeyPair getAccessKeyPair(Invocation invocation, URL url) { AccessKeyStorage accessKeyStorage = ExtensionLoader.getExtensionLoader(AccessKeyStorage.class) .getExtension(url.getParameter(Constants.ACCESS_KEY_STORAGE_KEY, Constants.DEFAULT_ACCESS_KEY_STORAGE)); - AccessKey accessKey = null; + AccessKeyPair accessKeyPair = null; try { - accessKey = accessKeyStorage.getAccessKey(url, invocation); - if (accessKey == null) { - throw new AccessKeyNotFoundException("AccessKey:" + ak + "consumer:" + consumer + " not found"); + accessKeyPair = accessKeyStorage.getAccessKey(url, invocation); + if (accessKeyPair == null || StringUtils.isEmpty(accessKeyPair.getAccessKey()) || StringUtils.isEmpty(accessKeyPair.getSecretKey())) { + throw new AccessKeyNotFoundException("AccessKeyId or secretAccessKey not found"); } } catch (Exception e) { - throw new RuntimeException("Can't load the AccessKey from accessKeyStorage", e); + throw new RuntimeException("Can't load the AccessKeyPair from accessKeyStorage", e); } - String computeSignature = getSignature(url, invocation, accessKey.getSecretKey(), requestTimestamp); - boolean success = computeSignature.equals(originSignature); - if (!success) { - throw new RuntimeException("Auth failed, signature is not correct"); + return accessKeyPair; + } + + String getSignature(URL url, Invocation invocation, String secrectKey, String time) { + boolean parameterEncrypt = url.getParameter(Constants.PARAMTER_ENCRYPT_ENABLE_KEY, false); + String signature; + String requestString = String.format(Constants.SIGNATURE_STRING_FORMAT, + url.getColonSeparatedKey(), invocation.getMethodName(), secrectKey, time); + if (parameterEncrypt) { + signature = SignatureUtils.sign(invocation.getArguments(), requestString, secrectKey); + } else { + signature = SignatureUtils.sign(requestString, secrectKey); } - return success; + return signature; } + } diff --git a/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/Constants.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/Constants.java new file mode 100644 index 00000000000..b7a76cb876c --- /dev/null +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/Constants.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF 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.apache.dubbo.auth; + + +public interface Constants { + String REFERENCE_AUTH = "reference.auth"; + + String SERVICE_AUTH = "service.auth"; + + String AUTH_HELPER = "auth.helper"; + + String DEFAULT_AUTH_HELPER = "accesskey"; + + String DEFAULT_ACCESS_KEY_STORAGE = "urlstorage"; + + String ACCESS_KEY_STORAGE_KEY = "accessKey.storage"; + + String ACCESS_KEY_ID_KEY = "accessKeyId"; + + String SECRET_ACCESS_KEY_KEY = "secretAccessKey"; + + String REQUEST_TIMESTAMP_KEY = "timestamp"; + + String REQUEST_SIGNATURE_KEY = "signature"; + + String AK_KEY = "ak"; + + String SIGNATURE_STRING_FORMAT = "%s#%s#%s#%s"; + + String PARAMTER_ENCRYPT_ENABLE_KEY = "paramater.sign"; +} diff --git a/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/DefaultAccessKeyStorage.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/DefaultAccessKeyStorage.java new file mode 100644 index 00000000000..fd69af979a5 --- /dev/null +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/DefaultAccessKeyStorage.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF 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.apache.dubbo.auth; + + +import org.apache.dubbo.auth.model.AccessKeyPair; +import org.apache.dubbo.auth.spi.AccessKeyStorage; +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invocation; + +/** + * The default implemention of {@link AccessKeyStorage} + */ +public class DefaultAccessKeyStorage implements AccessKeyStorage { + @Override + public AccessKeyPair getAccessKey(URL url, Invocation invocation) { + AccessKeyPair accessKeyPair = new AccessKeyPair(); + String accessKeyId = url.getParameter(Constants.ACCESS_KEY_ID_KEY); + String secretAccessKey = url.getParameter(Constants.SECRET_ACCESS_KEY_KEY); + accessKeyPair.setAccessKey(accessKeyId); + accessKeyPair.setSecretKey(secretAccessKey); + return accessKeyPair; + } +} diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyNotFoundException.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/exception/AccessKeyNotFoundException.java similarity index 86% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyNotFoundException.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/exception/AccessKeyNotFoundException.java index 7faf52474ba..5b53db2d175 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyNotFoundException.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/exception/AccessKeyNotFoundException.java @@ -14,11 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter.auth; +package org.apache.dubbo.auth.exception; +import org.apache.dubbo.auth.model.AccessKeyPair; + /** - * Signals that an attempt to get the {@link AccessKey} has failed. + * Signals that an attempt to get the {@link AccessKeyPair} has failed. */ public class AccessKeyNotFoundException extends Exception { private static final long serialVersionUID = 7106108446396804404L; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ConsumerAuthFilter.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ConsumerSignFilter.java similarity index 89% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ConsumerAuthFilter.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ConsumerSignFilter.java index c2b78035d39..d796595ebb7 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ConsumerAuthFilter.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ConsumerSignFilter.java @@ -14,26 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter; +package org.apache.dubbo.auth.filter; +import org.apache.dubbo.auth.Constants; +import org.apache.dubbo.auth.spi.AuthenticationHelper; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.common.extension.ExtensionLoader; -import org.apache.dubbo.rpc.Constants; import org.apache.dubbo.rpc.Filter; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.RpcException; -import org.apache.dubbo.rpc.filter.auth.AuthenticationHelper; /** - * The ConsumerAuthFilter + * The ConsumerSignFilter + * * @see org.apache.dubbo.rpc.Filter */ @Activate(group = CommonConstants.CONSUMER, order = -10000) -public class ConsumerAuthFilter implements Filter { +public class ConsumerSignFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ProviderAuthFilter.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ProviderAuthFilter.java similarity index 93% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ProviderAuthFilter.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ProviderAuthFilter.java index db669437138..278fa57c4ab 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ProviderAuthFilter.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/filter/ProviderAuthFilter.java @@ -14,20 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter; +package org.apache.dubbo.auth.filter; +import org.apache.dubbo.auth.spi.AuthenticationHelper; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.rpc.AsyncRpcResult; -import org.apache.dubbo.rpc.Constants; +import org.apache.dubbo.auth.Constants; import org.apache.dubbo.rpc.Filter; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.RpcException; -import org.apache.dubbo.rpc.filter.auth.AuthenticationHelper; @Activate(group = CommonConstants.PROVIDER, order = -10000) public class ProviderAuthFilter implements Filter { @@ -43,7 +43,7 @@ public Result invoke(Invoker invoker, Invocation invocation) throws RpcExcept try { authResult = authenticationHelper.authenticateRequest(invocation, url); if (!authResult) { - SecurityException securityException = new SecurityException("Authenticate Request failed" ); + SecurityException securityException = new SecurityException("Authenticate Request failed"); return AsyncRpcResult.newDefaultAsyncResult(securityException, invocation); } } catch (Exception e) { diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKey.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/model/AccessKeyPair.java similarity index 95% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKey.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/model/AccessKeyPair.java index 524ed4bcc65..212f609c419 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKey.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/model/AccessKeyPair.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter.auth; +package org.apache.dubbo.auth.model; /** * The model of AK/SK pair */ -public class AccessKey { +public class AccessKeyPair { private String accessKey; private String secretKey; private String consumerSide; @@ -77,7 +77,7 @@ public void setOptions(String options) { @Override public String toString() { - return "AccessKey{" + + return "AccessKeyPair{" + "accessKey='" + accessKey + '\'' + ", secretKey='" + secretKey + '\'' + ", consumerSide='" + consumerSide + '\'' + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyStorage.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AccessKeyStorage.java similarity index 78% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyStorage.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AccessKeyStorage.java index e363bb2e5d3..b7d15eb796b 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AccessKeyStorage.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AccessKeyStorage.java @@ -14,26 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter.auth; +package org.apache.dubbo.auth.spi; +import org.apache.dubbo.auth.model.AccessKeyPair; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.extension.SPI; import org.apache.dubbo.rpc.Invocation; /** - * This SPI Extension support us to store our {@link AccessKey} or load {@link AccessKey} from other + * This SPI Extension support us to store our {@link AccessKeyPair} or load {@link AccessKeyPair} from other * storage, such as filesystem. - * */ @SPI public interface AccessKeyStorage { /** - * get AccessKey of this request + * get AccessKeyPair of this request + * * @param url * @param invocation * @return */ - AccessKey getAccessKey(URL url, Invocation invocation); + AccessKeyPair getAccessKey(URL url, Invocation invocation); } diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AuthenticationHelper.java b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AuthenticationHelper.java similarity index 97% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AuthenticationHelper.java rename to dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AuthenticationHelper.java index 977ebd56f1f..d86f3a68963 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/auth/AuthenticationHelper.java +++ b/dubbo-plugin/dubbo-auth/src/main/java/org/apache/dubbo/auth/spi/AuthenticationHelper.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.rpc.filter.auth; +package org.apache.dubbo.auth.spi; import org.apache.dubbo.common.URL; diff --git a/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AccessKeyStorage b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AccessKeyStorage new file mode 100644 index 00000000000..f264ed5e932 --- /dev/null +++ b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AccessKeyStorage @@ -0,0 +1 @@ +urlstorage=org.apache.dubbo.auth.DefaultAccessKeyStorage \ No newline at end of file diff --git a/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AuthenticationHelper b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AuthenticationHelper new file mode 100644 index 00000000000..7a7f3921321 --- /dev/null +++ b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.auth.spi.AuthenticationHelper @@ -0,0 +1 @@ +accesskey=org.apache.dubbo.auth.AccessKeyAuthenticationHelper \ No newline at end of file diff --git a/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 00000000000..2d15cd462ab --- /dev/null +++ b/dubbo-plugin/dubbo-auth/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1,2 @@ +consumersign=org.apache.dubbo.auth.filter.ConsumerSignFilter +providerauth=org.apache.dubbo.auth.filter.ProviderAuthFilter \ No newline at end of file diff --git a/dubbo-plugin/pom.xml b/dubbo-plugin/pom.xml index 5945b659e78..194525c5289 100644 --- a/dubbo-plugin/pom.xml +++ b/dubbo-plugin/pom.xml @@ -30,6 +30,7 @@ The registry module of dubbo project dubbo-qos + dubbo-auth false diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java index 092aa9f389f..b3eb025fb54 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java @@ -85,26 +85,4 @@ public interface Constants { String INPUT_KEY = "input"; String OUTPUT_KEY = "output"; - String REFERENCE_AUTH = "auth"; - - String SERVICE_AUTH = "service.auth"; - - String AUTH_HELPER = "auth.helper"; - - String DEFAULT_AUTH_HELPER = "accessKey"; - - String DEFAULT_ACCESS_KEY_STORAGE = ""; - - String ACCESS_KEY_STORAGE_KEY = "accessKey.storage"; - - String REQUEST_TIMESTAMP_KEY = "timestamp"; - - String REQUEST_SIGNATURE_KEY = "signature"; - - String AK_KEY = "ak"; - - String SIGNATURE_STRING_FORMAT = "%s#%s#%s#%s"; - - String PARAMTER_ENCRYPT_ENABLE_KEY = "paramater.sign"; - }