/// <summary> /// Retrieves all ArcGISRuntime credentials stored in the Credential Locker. /// </summary> public static IEnumerable <Credential> RetrieveAll() { var passwordVault = new PasswordVault(); var credentials = new List <Credential>(); foreach (PasswordCredential passwordCredential in passwordVault.RetrieveAll().Where(pc => pc.Resource.StartsWith(ResourcePrefix))) { Credential credential = null; passwordCredential.RetrievePassword(); string userName = passwordCredential.UserName; string passwordValue = passwordCredential.Password; // value stored as password string serviceUrl = passwordCredential.Resource.Substring(ResourcePrefix.Length); // Create the credential depending on the type if (passwordValue.StartsWith(PasswordPrefix)) { string password = passwordValue.Substring(PasswordPrefix.Length); credential = new ArcGISTokenCredential { ServiceUri = serviceUrl, UserName = userName, Password = password, Token = "dummy" }; // dummy to remove once the token will be refreshed pro actively } else if (passwordValue.StartsWith(OAuthRefreshTokenPrefix)) { string refreshToken = passwordValue.Substring(OAuthRefreshTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, OAuthRefreshToken = refreshToken, Token = "dummy" }; } else if (passwordValue.StartsWith(OAuthAccessTokenPrefix)) { string token = passwordValue.Substring(OAuthAccessTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, Token = token, }; } else if (passwordValue.StartsWith(NetworkCredentialPasswordPrefix)) { string password = passwordValue.Substring(NetworkCredentialPasswordPrefix.Length); credential = new ArcGISNetworkCredential { ServiceUri = serviceUrl, Credentials = new NetworkCredential(userName, password) }; } if (credential != null) { credentials.Add(credential); } } return(credentials); }
/// <summary> /// Retrieves all ArcGISRuntime credentials stored in the isolated storage. /// </summary> public static IEnumerable<Credential> RetrieveAll() { var credentials = new List<Credential>(); foreach(var cachedCredential in GetCachedCredentials()) { Credential credential = null; string userName = cachedCredential.UserName; string passwordValue = cachedCredential.Password; // value stored as password string serviceUrl = cachedCredential.Url; // Create the credential depending on the type if (passwordValue.StartsWith(PasswordPrefix)) { string password = passwordValue.Substring(PasswordPrefix.Length); credential = new ArcGISTokenCredential { ServiceUri = serviceUrl, UserName = userName, Password = password, Token = "dummy" }; // dummy to remove once the token will be refreshed pro actively } else if (passwordValue.StartsWith(OAuthRefreshTokenPrefix)) { string refreshToken = passwordValue.Substring(OAuthRefreshTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, OAuthRefreshToken = refreshToken, Token = "dummy" }; } else if (passwordValue.StartsWith(OAuthAccessTokenPrefix)) { string token = passwordValue.Substring(OAuthAccessTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, Token = token, }; } else if (passwordValue.StartsWith(NetworkCredentialPasswordPrefix)) { string password = passwordValue.Substring(NetworkCredentialPasswordPrefix.Length); credential = new ArcGISNetworkCredential { ServiceUri = serviceUrl, Credentials = new NetworkCredential(userName, password) }; } else if (passwordValue.StartsWith(CertificateCredentialPrefix)) { string serial = passwordValue.Substring(CertificateCredentialPrefix.Length); var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); X509Certificate2Collection certificates; try { store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); // Find certificate by serial number certificates = store.Certificates.Find(X509FindType.FindBySerialNumber, serial, true); } catch (Exception) { certificates = null; } finally { store.Close(); } if (certificates != null && certificates.Count > 0) credential = new CertificateCredential(certificates[0]) { ServiceUri = serviceUrl }; } if (credential != null) { credentials.Add(credential); } } return credentials; }
/// <summary> /// Retrieves all ArcGISRuntime credentials stored in the isolated storage. /// </summary> public static IEnumerable <Credential> RetrieveAll() { var credentials = new List <Credential>(); foreach (var cachedCredential in GetCachedCredentials()) { Credential credential = null; string userName = cachedCredential.UserName; string passwordValue = cachedCredential.Password; // value stored as password string serviceUrl = cachedCredential.Url; // Create the credential depending on the type if (passwordValue.StartsWith(PasswordPrefix)) { string password = passwordValue.Substring(PasswordPrefix.Length); credential = new ArcGISTokenCredential { ServiceUri = serviceUrl, UserName = userName, Password = password, Token = "dummy" }; // dummy to remove once the token will be refreshed pro actively } else if (passwordValue.StartsWith(OAuthRefreshTokenPrefix)) { string refreshToken = passwordValue.Substring(OAuthRefreshTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, OAuthRefreshToken = refreshToken, Token = "dummy" }; } else if (passwordValue.StartsWith(OAuthAccessTokenPrefix)) { string token = passwordValue.Substring(OAuthAccessTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, Token = token, }; } else if (passwordValue.StartsWith(NetworkCredentialPasswordPrefix)) { string password = passwordValue.Substring(NetworkCredentialPasswordPrefix.Length); credential = new ArcGISNetworkCredential { ServiceUri = serviceUrl, Credentials = new NetworkCredential(userName, password) }; } else if (passwordValue.StartsWith(CertificateCredentialPrefix)) { string serial = passwordValue.Substring(CertificateCredentialPrefix.Length); var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); X509Certificate2Collection certificates; try { store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); // Find certificate by serial number certificates = store.Certificates.Find(X509FindType.FindBySerialNumber, serial, true); } catch (Exception) { certificates = null; } finally { store.Close(); } if (certificates != null && certificates.Count > 0) { credential = new CertificateCredential(certificates[0]) { ServiceUri = serviceUrl } } ; } if (credential != null) { credentials.Add(credential); } } return(credentials); }
private void UpdateIdentityManager(TokenCredential token) { var arcGisTokenCredential = new ArcGISTokenCredential {Token = token.Token, ServiceUri = DEFAULT_SERVER_URL}; IdentityManager.Current.AddCredential(arcGisTokenCredential); }
/// <summary> /// Retrieves all ArcGISRuntime credentials stored in the Credential Locker. /// </summary> public static IEnumerable<Credential> RetrieveAll() { var passwordVault = new PasswordVault(); var credentials = new List<Credential>(); foreach (PasswordCredential passwordCredential in passwordVault.RetrieveAll().Where(pc => pc.Resource.StartsWith(ResourcePrefix))) { Credential credential = null; passwordCredential.RetrievePassword(); string userName = passwordCredential.UserName; string passwordValue = passwordCredential.Password; // value stored as password string serviceUrl = passwordCredential.Resource.Substring(ResourcePrefix.Length); // Create the credential depending on the type if (passwordValue.StartsWith(PasswordPrefix)) { string password = passwordValue.Substring(PasswordPrefix.Length); credential = new ArcGISTokenCredential { ServiceUri = serviceUrl, UserName = userName, Password = password, Token = "dummy"}; // dummy to remove once the token will be refreshed pro actively } else if (passwordValue.StartsWith(OAuthRefreshTokenPrefix)) { string refreshToken = passwordValue.Substring(OAuthRefreshTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, OAuthRefreshToken = refreshToken, Token = "dummy" }; } else if (passwordValue.StartsWith(OAuthAccessTokenPrefix)) { string token = passwordValue.Substring(OAuthAccessTokenPrefix.Length); credential = new OAuthTokenCredential { ServiceUri = serviceUrl, UserName = userName, Token = token, }; } else if (passwordValue.StartsWith(NetworkCredentialPasswordPrefix)) { string password = passwordValue.Substring(NetworkCredentialPasswordPrefix.Length); credential = new ArcGISNetworkCredential {ServiceUri = serviceUrl, Credentials = new NetworkCredential(userName, password)}; } if (credential != null) { credentials.Add(credential); } } return credentials; }