public Operation.GenerateToken Encrypt(Operation.GenerateToken tokenRequest, byte[] exponent, byte[] modulus) { Guard.AgainstNullArgument("tokenRequest", tokenRequest); Guard.AgainstNullArgument("exponent", exponent); Guard.AgainstNullArgument("modulus", modulus); using (var rsa = new System.Security.Cryptography.RSACryptoServiceProvider(512)) { var rsaParms = new System.Security.Cryptography.RSAParameters { Exponent = exponent, Modulus = modulus }; rsa.ImportParameters(rsaParms); var encryptedUsername = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Username), false).BytesToHex(); var encryptedPassword = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Password), false).BytesToHex(); var encryptedClient = string.IsNullOrWhiteSpace(tokenRequest.Client) ? "" : rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Client), false).BytesToHex(); var encryptedExpiration = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.ExpirationInMinutes.ToString()), false).BytesToHex(); var encryptedReferer = string.IsNullOrWhiteSpace(tokenRequest.Referer) ? "" : rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Referer), false).BytesToHex(); tokenRequest.Encrypt(encryptedUsername, encryptedPassword, encryptedExpiration, encryptedClient, encryptedReferer); return(tokenRequest); } }
public Operation.GenerateToken Encrypt(Operation.GenerateToken tokenRequest, byte[] exponent, byte[] modulus) { if (exponent == null || modulus == null) { throw new InvalidOperationException("Exponent and modulus must be set"); } using (var rsa = new System.Security.Cryptography.RSACryptoServiceProvider(512)) { var rsaParms = new System.Security.Cryptography.RSAParameters { Exponent = exponent, Modulus = modulus }; rsa.ImportParameters(rsaParms); var encryptedUsername = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Username), false).BytesToHex(); var encryptedPassword = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Password), false).BytesToHex(); var encryptedClient = String.IsNullOrWhiteSpace(tokenRequest.Client) ? "" : rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Client), false).BytesToHex(); var encryptedExpiration = rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.ExpirationInMinutes.ToString()), false).BytesToHex(); var encryptedReferer = String.IsNullOrWhiteSpace(tokenRequest.Referer) ? "" : rsa.Encrypt(Encoding.UTF8.GetBytes(tokenRequest.Referer), false).BytesToHex(); tokenRequest.Encrypt(encryptedUsername, encryptedPassword, encryptedExpiration, encryptedClient, encryptedReferer); return(tokenRequest); } }
/// <summary> /// Create a token provider to authenticate against ArcGIS Server /// </summary> /// <param name="rootUrl">Made up of scheme://host:port/site</param> /// <param name="username">ArcGIS Server user name</param> /// <param name="password">ArcGIS Server user password</param> /// <param name="serializer">Used to (de)serialize requests and responses</param> public TokenProvider(String rootUrl, String username, String password, ISerializer serializer) { if (String.IsNullOrWhiteSpace(username) || String.IsNullOrWhiteSpace(password)) { System.Diagnostics.Debug.WriteLine("TokenProvider for '" + RootUrl + "' not initialized as username/password not supplied."); return; } if (serializer == null) throw new ArgumentNullException("serializer", "Serializer has not been set."); RootUrl = rootUrl.AsRootUrl(); Serializer = serializer; TokenRequest = new GenerateToken(username, password); _httpClientHandler = new HttpClientHandler(); if (_httpClientHandler.SupportsAutomaticDecompression) _httpClientHandler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; if (_httpClientHandler.SupportsUseProxy()) _httpClientHandler.UseProxy = true; if (_httpClientHandler.SupportsAllowAutoRedirect()) _httpClientHandler.AllowAutoRedirect = true; if (_httpClientHandler.SupportsPreAuthenticate()) _httpClientHandler.PreAuthenticate = true; _httpClient = new HttpClient(_httpClientHandler); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); System.Diagnostics.Debug.WriteLine("Created TokenProvider for " + RootUrl); }
/// <summary> /// Create a token provider to authenticate against ArcGIS Server /// </summary> /// <param name="rootUrl">Made up of scheme://host:port/site</param> /// <param name="username">ArcGIS Server user name</param> /// <param name="password">ArcGIS Server user password</param> /// <param name="serializer">Used to (de)serialize requests and responses</param> public TokenProvider(String rootUrl, String username, String password, ISerializer serializer) { RootUrl = rootUrl.AsRootUrl(); Serializer = serializer; if (Serializer == null) throw new ArgumentNullException("serializer", "Serializer has not been set."); TokenRequest = new GenerateToken(username, password); _httpClientHandler = new HttpClientHandler(); if (_httpClientHandler.SupportsAutomaticDecompression) _httpClientHandler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; if (_httpClientHandler.SupportsUseProxy()) _httpClientHandler.UseProxy = true; if (_httpClientHandler.SupportsAllowAutoRedirect()) _httpClientHandler.AllowAutoRedirect = true; if (_httpClientHandler.SupportsPreAuthenticate()) _httpClientHandler.PreAuthenticate = true; _httpClient = new HttpClient(_httpClientHandler); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); }
public Operation.GenerateToken Encrypt(Operation.GenerateToken tokenRequest, byte[] exponent, byte[] modulus) { if (exponent == null || modulus == null) { throw new InvalidOperationException("Exponent and modulus must be set"); } byte[] bufferContent; using (var stream = new MemoryStream()) { var writer = new BinaryWriter(stream); writer.Write((byte)0x30); // SEQUENCE using (var innerStream = new MemoryStream()) { var innerWriter = new BinaryWriter(innerStream); EncodeIntegerBigEndian(innerWriter, modulus); EncodeIntegerBigEndian(innerWriter, exponent); var length = (int)innerStream.Length; EncodeLength(writer, length); writer.Write(innerStream.ToArray(), 0, length); } bufferContent = stream.ToArray(); } var encryptedUsername = Encrypt(bufferContent, tokenRequest.Username).BytesToHex(); var encryptedPassword = Encrypt(bufferContent, tokenRequest.Password).BytesToHex(); var encryptedClient = string.IsNullOrWhiteSpace(tokenRequest.Client) ? "" : Encrypt(bufferContent, tokenRequest.Client).BytesToHex(); var encryptedExpiration = Encrypt(bufferContent, tokenRequest.ExpirationInMinutes.ToString()).BytesToHex(); var encryptedReferer = string.IsNullOrWhiteSpace(tokenRequest.Referer) ? "" : Encrypt(bufferContent, tokenRequest.Referer).BytesToHex(); tokenRequest.Encrypt(encryptedUsername, encryptedPassword, encryptedExpiration, encryptedClient, encryptedReferer); return(tokenRequest); }