Ejemplo n.º 1
0
        /// <summary>
        /// Méthode qui permet de générer l'authorisation à une ressource.
        /// </summary>
        /// <param name="accessKey">accessKey</param>
        /// <param name="accessSecretKey">secretkey</param>
        /// <param name="request">Request</param>
        /// <param name="domain">domain</param>
        /// <returns></returns>
        public string GetAuthorisation(string accessKey, string accessSecretKey, WebRequest request, string domain = "")
        {
            AmzSecurityData amzSecurityData = new AmzSecurityData(request, domain);
            string          valuetosign     = this.PrepareValueToSign(amzSecurityData);
            string          signature       = this.GetSignature(accessSecretKey, valuetosign);
            string          authorization   = "AWS" + " " + accessKey + ":" + signature;

            return(authorization);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Méthode qui permet de vérifier l'autorisation.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="domain"></param>
        /// <returns></returns>
        public bool VerifySignature(HttpRequestMessage request, string domain = "")
        {
            try
            {
                AmzSecurityData amzSecurityData = new AmzSecurityData(request, domain);
                string          valuetosign     = this.PrepareValueToSign(amzSecurityData);
                string          authorisation   = request.Headers.GetValues("Authorization").FirstOrDefault();
                if (!authorisation.Contains("AWS "))
                {
                    return(false);
                }
                else
                {
                    string   accessKeysignature    = authorisation.Substring(4);
                    string[] accesskeySignatureTab = accessKeysignature.Split(':');

                    if (accesskeySignatureTab.Length != 2)
                    {
                        return(false);
                    }

                    string accessKey         = accesskeySignatureTab[0];
                    string signaturetoverify = accesskeySignatureTab[1];
                    string accessSecretKey   = this.GetAccessSecretKey(accessKey);

                    if (string.IsNullOrEmpty(accessSecretKey))
                    {
                        return(false);
                    }

                    string signature = this.GetSignature(accessSecretKey, valuetosign);

                    if (signature != signaturetoverify)
                    {
                        return(false);
                    }

                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(false);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Méthode qui permet de préparer la chaine.
 /// </summary>
 /// <param name="amzSecurityData"><seealso cref="AmzSecurityData"/></param>
 /// <returns></returns>
 private string PrepareValueToSign(AmzSecurityData amzSecurityData)
 {
     return(string.Format("{0}\n{1}\n{2}\n{3}\n{4}{5}", amzSecurityData.Method, amzSecurityData.MD5_ContentType,
                          amzSecurityData.ContentType, amzSecurityData.Date, amzSecurityData.CanonicalizedHeaders, amzSecurityData.CanonicalizedRessources));
 }