Explorar o código

Merge pull request #56 from aliyun/pre-release

fix bug:modify error message when roleArn is wrong
conan425 %!s(int64=7) %!d(string=hai) anos
pai
achega
1242da7be0

+ 9 - 2
sdk/auth/roa_signature_composer.go

@@ -22,12 +22,19 @@ import (
 	"strings"
 )
 
-func signRoaRequest(request requests.AcsRequest, signer Signer, regionId string) {
+func signRoaRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) {
 	completeROASignParams(request, signer, regionId)
 	stringToSign := buildRoaStringToSign(request)
 	request.SetStringToSign(stringToSign)
 	signature := signer.Sign(stringToSign, "")
-	request.GetHeaders()["Authorization"] = "acs " + signer.GetAccessKeyId() + ":" + signature
+	accessKeyId, err := signer.GetAccessKeyId()
+	if err != nil {
+		return nil
+	}
+
+	request.GetHeaders()["Authorization"] = "acs " + accessKeyId + ":" + signature
+
+	return
 }
 
 func completeROASignParams(request requests.AcsRequest, signer Signer, regionId string) {

+ 15 - 4
sdk/auth/rpc_signature_composer.go

@@ -22,8 +22,11 @@ import (
 	"strings"
 )
 
-func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) {
-	completeRpcSignParams(request, signer, regionId)
+func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) (err error) {
+	err = completeRpcSignParams(request, signer, regionId)
+	if err != nil {
+		return
+	}
 	// remove while retry
 	if _, containsSign := request.GetQueryParams()["Signature"]; containsSign {
 		delete(request.GetQueryParams(), "Signature")
@@ -32,9 +35,11 @@ func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string)
 	request.SetStringToSign(stringToSign)
 	signature := signer.Sign(stringToSign, "&")
 	request.GetQueryParams()["Signature"] = signature
+
+	return
 }
 
-func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId string) {
+func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId string) (err error) {
 	queryParams := request.GetQueryParams()
 	queryParams["Version"] = request.GetVersion()
 	queryParams["Action"] = request.GetActionName()
@@ -44,7 +49,11 @@ func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId
 	queryParams["SignatureType"] = signer.GetType()
 	queryParams["SignatureVersion"] = signer.GetVersion()
 	queryParams["SignatureNonce"] = utils.GetUUIDV4()
-	queryParams["AccessKeyId"] = signer.GetAccessKeyId()
+	queryParams["AccessKeyId"], err = signer.GetAccessKeyId()
+
+	if err != nil {
+		return
+	}
 
 	if _, contains := queryParams["RegionId"]; !contains {
 		queryParams["RegionId"] = regionId
@@ -58,6 +67,8 @@ func completeRpcSignParams(request requests.AcsRequest, signer Signer, regionId
 	request.GetHeaders()["Content-Type"] = requests.Form
 	formString := utils.GetUrlFormedMap(request.GetFormParams())
 	request.SetContent([]byte(formString))
+
+	return
 }
 
 func buildRpcStringToSign(request requests.AcsRequest) (stringToSign string) {

+ 2 - 2
sdk/auth/signer.go

@@ -28,7 +28,7 @@ type Signer interface {
 	GetName() string
 	GetType() string
 	GetVersion() string
-	GetAccessKeyId() string
+	GetAccessKeyId() (string, error)
 	GetExtraParam() map[string]string
 	Sign(stringToSign, secretSuffix string) string
 	Shutdown()
@@ -84,7 +84,7 @@ func Sign(request requests.AcsRequest, signer Signer, regionId string) (err erro
 		}
 	case requests.RPC:
 		{
-			signRpcRequest(request, signer, regionId)
+			err = signRpcRequest(request, signer, regionId)
 		}
 	default:
 		message := fmt.Sprintf(errors.UnknownRequestTypeErrorMessage, reflect.TypeOf(request))

+ 2 - 2
sdk/auth/signers/signer_access_key.go

@@ -44,8 +44,8 @@ func (*AccessKeySigner) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *AccessKeySigner) GetAccessKeyId() string {
-	return signer.credential.AccessKeyId
+func (signer *AccessKeySigner) GetAccessKeyId() (accessKeyId string, err error) {
+	return signer.credential.AccessKeyId, nil
 }
 
 func (signer *AccessKeySigner) Sign(stringToSign, secretSuffix string) string {

+ 5 - 5
sdk/auth/signers/signer_ecs_ram_role.go

@@ -61,14 +61,14 @@ func (*EcsRamRoleSigner) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *EcsRamRoleSigner) GetAccessKeyId() string {
+func (signer *EcsRamRoleSigner) GetAccessKeyId() (accessKeyId string, err error) {
 	if signer.sessionCredential == nil || signer.needUpdateCredential() {
-		signer.updateCredential()
+		err = signer.updateCredential()
 	}
-	if len(signer.sessionCredential.accessKeyId) <= 0 {
-		return ""
+	if err != nil && (signer.sessionCredential == nil || len(signer.sessionCredential.accessKeyId) <= 0) {
+		return "", err
 	}
-	return signer.sessionCredential.accessKeyId
+	return signer.sessionCredential.accessKeyId, nil
 }
 
 func (signer *EcsRamRoleSigner) GetExtraParam() map[string]string {

+ 5 - 5
sdk/auth/signers/signer_key_pair.go

@@ -75,14 +75,14 @@ func (*SignerKeyPair) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *SignerKeyPair) GetAccessKeyId() string {
+func (signer *SignerKeyPair) GetAccessKeyId() (accessKeyId string, err error) {
 	if signer.sessionCredential == nil || signer.needUpdateCredential() {
-		signer.updateCredential()
+		err = signer.updateCredential()
 	}
-	if signer.sessionCredential == nil || len(signer.sessionCredential.accessKeyId) <= 0 {
-		return ""
+	if err != nil && (signer.sessionCredential == nil || len(signer.sessionCredential.accessKeyId) <= 0) {
+		return "", err
 	}
-	return signer.sessionCredential.accessKeyId
+	return signer.sessionCredential.accessKeyId, err
 }
 
 func (signer *SignerKeyPair) GetExtraParam() map[string]string {

+ 5 - 5
sdk/auth/signers/signer_ram_role_arn.go

@@ -87,14 +87,14 @@ func (*RamRoleArnSigner) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *RamRoleArnSigner) GetAccessKeyId() string {
+func (signer *RamRoleArnSigner) GetAccessKeyId() (accessKeyId string, err error) {
 	if signer.sessionCredential == nil || signer.needUpdateCredential() {
-		signer.updateCredential()
+		err = signer.updateCredential()
 	}
-	if signer.sessionCredential == nil || len(signer.sessionCredential.accessKeyId) <= 0 {
-		return ""
+	if err != nil && (signer.sessionCredential == nil || len(signer.sessionCredential.accessKeyId) <= 0) {
+		return "", err
 	}
-	return signer.sessionCredential.accessKeyId
+	return signer.sessionCredential.accessKeyId, nil
 }
 
 func (signer *RamRoleArnSigner) GetExtraParam() map[string]string {

+ 2 - 2
sdk/auth/signers/signer_sts_token.go

@@ -40,8 +40,8 @@ func (*StsTokenSigner) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *StsTokenSigner) GetAccessKeyId() string {
-	return signer.credential.AccessKeyId
+func (signer *StsTokenSigner) GetAccessKeyId() (accessKeyId string, err error) {
+	return signer.credential.AccessKeyId, nil
 }
 
 func (signer *StsTokenSigner) GetExtraParam() map[string]string {

+ 2 - 2
sdk/auth/signers/signer_v2.go

@@ -44,8 +44,8 @@ func (*SignerV2) GetVersion() string {
 	return "1.0"
 }
 
-func (signer *SignerV2) GetAccessKeyId() string {
-	return signer.credential.PublicKeyId
+func (signer *SignerV2) GetAccessKeyId() (accessKeyId string, err error) {
+	return signer.credential.PublicKeyId, err
 }
 
 func (signer *SignerV2) Sign(stringToSign, secretSuffix string) string {