Beispiel #1
0
        /// <summary>
        /// Creates the authentication header.
        /// </summary>
        /// <param name="client">The client.</param>
        /// <param name="date">The date.</param>
        /// <param name="querystring">The querystring.</param>
        /// <param name="routingUrl">The routing URL.</param>
        /// <example>
        /// <code>
        /// 2015-10-27 20:21:47.5215 RESTAPIWrapperClinet DEBUG  Client side token mxPc48qN5MVe2ZVOU4DdlaQklAt39Ac6rRbtJRr/16s=
        /// 2015-10-27 20:21:47.5675 RESTAPIWrapperClinet DEBUG  请求 GET URL:http://localhost:3956//api/Employee/?BirthDate=0001%2f1%2f1+0%3a00%3a00&ContactID=0&CurrentFlag=False&HireDate=0001%2f1%2f1+0%3a00%3a00&ModifiedDate=0001%2f1%2f1+0%3a00%3a00&pageIndex=1&pageSize=5&rowguid=00000000-0000-0000-0000-000000000000&SalariedFlag=False&SickLeaveHours=0&VacationHours=0  结果:True
        /// </code>
        /// </example>
        private void CreateAuthenticationHeader(HttpClient client, string date, string querystring, string routingUrl, HttpMethod httpMethod)
        {
            string message = string.Join("\n", httpMethod.Method, date, routingUrl.ToLower(), querystring);

            Hashtable remoteDataSource =
                (Hashtable)WebConfigurationManager.GetSection(this.Section);
            string password = (string)remoteDataSource["password"];

            string token = HashManager.ComputeHash(password, message);

            //log.DebugFormat("Client side token {0}", token);
            client.DefaultRequestHeaders.Remove("Authentication");
            client.DefaultRequestHeaders.Remove("Timestamp");
            client.DefaultRequestHeaders.Add("Authentication", string.Format("{0}:{1}", password, token));
            client.DefaultRequestHeaders.Add("Timestamp", date);
        }
Beispiel #2
0
        /// <summary>
        /// The is authenticated.
        /// </summary>
        /// <param name="hashedPassword">
        /// The hashed password.
        /// </param>
        /// <param name="message">
        /// The message.
        /// </param>
        /// <param name="signature">
        /// The signature.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private static bool IsAuthenticated(string hashedPassword, string message, string signature)
        {
            if (string.IsNullOrEmpty(hashedPassword))
            {
                return(false);
            }
            log.DebugFormat("Server Side Message:{0}", message);
            // Compute the hash with HMAC
            var verifiedHash = HashManager.ComputeHash(hashedPassword, message);

            log.DebugFormat("Server Side verifiedHash:{0}", verifiedHash);
            if (signature != null && signature.Equals(verifiedHash))
            {
                return(true);
            }

            return(false);
        }