You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 line
1.4 KiB

  1. package auth
  2. import (
  3. "errors"
  4. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/auth/credentials"
  5. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/auth/signers"
  6. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
  7. "golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/responses"
  8. "net/http"
  9. )
  10. type Signer interface {
  11. GetName() string
  12. GetAccessKeyId() (string, error)
  13. GetAccessKeyFrom() (string, error)
  14. Sign(stringToSign, secretSuffix string) string
  15. }
  16. func NewSignerWithCredential(credential Credential, commonApi func(request *requests.CommonRequest, signer interface{}) (response *responses.CommonResponse, err error)) (signer Signer, err error) {
  17. switch instance := credential.(type) {
  18. case *credentials.AccessKeyCredential:
  19. signer = signers.NewAccessKeySigner(instance)
  20. case *credentials.BaseCredential:
  21. signer = signers.NewAccessKeySigner(instance.ToAccessKeyCredential())
  22. case *credentials.StdTokenCredential:
  23. signer = signers.NewStsTokenSigner(instance)
  24. default:
  25. err = errors.New("UnsupportedCredentialErrorCode = SDK.UnsupportedCredential")
  26. }
  27. return
  28. }
  29. func Sign(request requests.AcsRequest, signer Signer) (err error) {
  30. //TODO 根据rpc和roa两种风格签名,自行选择
  31. err = signRpcRequest(request, signer)
  32. return
  33. }
  34. func UnSign(request *http.Request, signer Signer) (err error) {
  35. //TODO 根据rpc和roa两种风格签名,自行选择
  36. err = unsignRpcRequest(request, signer)
  37. return
  38. }