/// <summary> /// Get credential details /// </summary> /// <param name="gatewayId">Gateway Id of corresponding dataset</param> /// <param name="credentialType">Type of credential selected by user</param> /// <param name="credentialType">Type of credential selected by user</param> /// <param name="credentialsArray">Credentials entered by the user</param> /// <param name="privacyLevel">Privacy level selected by the user</param> /// <returns>Credentials details updating the datasource</returns> public CredentialDetails GetCredentialDetails(Guid gatewayId, string credentialType, string[] credentialsArray, string privacyLevel) { // Capture credentials based on credential type selected by the user var credentials = GetCredentials(credentialType, credentialsArray); // Get the Getway var gateway = GetGateway(gatewayId); // Initialize credentialsEncryptor and encryptedConnection for Cloud gateway var credentialsEncryptor = (AsymmetricKeyEncryptor)null; var encryptedConnection = EncryptedConnection.NotEncrypted; // Name is present in case of on-premises gateway if (!string.IsNullOrWhiteSpace(gateway.Name)) { // Update for On-premises gateway encryptedConnection = EncryptedConnection.Encrypted; credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.PublicKey); } // Capture Credential Details var credentialDetails = new CredentialDetails( credentials, privacyLevel: privacyLevel, encryptedConnection, credentialsEncryptor); return(credentialDetails); }
public static void AddDatasourceToGateway() { var pbiClient = TokenManager.GetPowerBiAppOnlyClient(); var gateway = pbiClient.Gateways.GetGateways().Value.First(); Console.WriteLine(gateway.Name); var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.PublicKey); var credentialDetails = new CredentialDetails( new WindowsCredentials(@"DIONYSYS\TedP", "cu@4007Corona"), PrivacyLevel.Organizational, EncryptedConnection.Encrypted, credentialsEncryptor); var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"dionysus\",\"database\":\"WingtipSalesDB\"}", credentialDetails: credentialDetails, dataSourceName: "Teds SQL Box"); pbiClient.Gateways.CreateDatasource(gateway.Id, request); }
private void EncodeCredentialsTestImpl(string credentialData, string exponent, string modulus) { var asymmetricKeyEncryptor = new AsymmetricKeyEncryptor(new GatewayPublicKey(exponent, modulus)); var encodedCredentials = asymmetricKeyEncryptor.EncodeCredentials(credentialData); Assert.IsFalse(string.IsNullOrEmpty(encodedCredentials), "Encrypted credentials should not be null or empty"); }
public void EncodeCredentialsTest() { const string credentialData = "{\"credentialData\":[{\"name\":\"username\",\"value\":\"TestUser\"},{\"name\":\"password\",\"value\":\"TestPassword\"}]}"; var asymmetricKeyEncryptor = new AsymmetricKeyEncryptor(new GatewayPublicKey(Exponent, Modulus)); var encodedCredentials = asymmetricKeyEncryptor.EncodeCredentials(credentialData); Assert.IsFalse(string.IsNullOrEmpty(encodedCredentials), "Encrypted credentials should not be null or empty"); }
public void OnPrem_AnonymousCredentialsTest() { CredentialsBase credentials = new AnonymousCredentials(); var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey); var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Public, EncryptedConnection.NotEncrypted, credentialsEncryptor); Assert.IsNotNull(credentialDetails); Assert.IsNotNull(credentialDetails.Credentials); Assert.AreEqual(CredentialType.Anonymous, credentialDetails.CredentialType); Assert.AreEqual(EncryptedConnection.NotEncrypted, credentialDetails.EncryptedConnection); Assert.AreEqual(EncryptionAlgorithm.RSAOAEP, credentialDetails.EncryptionAlgorithm); Assert.AreEqual(PrivacyLevel.Public, credentialDetails.PrivacyLevel); Assert.AreEqual(false, credentialDetails.UseCallerAADIdentity); }
public void OnPrem_OAuth2CredentialsTest() { CredentialsBase credentials = new OAuth2Credentials("TestToken"); var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey); var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor); Assert.IsNotNull(credentialDetails); Assert.IsNotNull(credentialDetails.Credentials); Assert.AreEqual(CredentialType.OAuth2, credentialDetails.CredentialType); Assert.AreEqual(EncryptedConnection.Encrypted, credentialDetails.EncryptedConnection); Assert.AreEqual(EncryptionAlgorithm.RSAOAEP, credentialDetails.EncryptionAlgorithm); Assert.AreEqual(PrivacyLevel.Private, credentialDetails.PrivacyLevel); Assert.AreEqual(false, credentialDetails.UseCallerAADIdentity); }
public void OnPrem_WindowsCredentialsTest() { CredentialsBase credentials = new WindowsCredentials("user", "pass"); var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey); var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Organizational, EncryptedConnection.Encrypted, credentialsEncryptor); Assert.IsNotNull(credentialDetails); Assert.IsNotNull(credentialDetails.Credentials); Assert.AreEqual(CredentialType.Windows, credentialDetails.CredentialType); Assert.AreEqual(EncryptedConnection.Encrypted, credentialDetails.EncryptedConnection); Assert.AreEqual(EncryptionAlgorithm.RSAOAEP, credentialDetails.EncryptionAlgorithm); Assert.AreEqual(PrivacyLevel.Organizational, credentialDetails.PrivacyLevel); Assert.AreEqual(false, credentialDetails.UseCallerAADIdentity); }
private void ValidateEncodeCredentialsException <T>(string credentialData, string exponent, string modulus) where T : Exception { try { var asymmetricKeyEncryptor = new AsymmetricKeyEncryptor(new GatewayPublicKey(exponent, modulus)); asymmetricKeyEncryptor.EncodeCredentials(credentialData); } catch (Exception ex) { Assert.IsNotNull(ex as T, "expected exception to be of Type {0}, instead got {1}", typeof(T).Name, ex.GetType().Name); return; } Assert.Fail("exception of Type {0} should be thrown", typeof(T).Name); }
/// <summary> /// Get credential details /// </summary> /// <param name="gatewayId">Gateway Id of corresponding dataset</param> /// <param name="credentialType">Type of credential selected by user</param> /// <param name="credentialType">Type of credential selected by user</param> /// <param name="credentialsArray">Credentials entered by the user</param> /// <param name="privacyLevel">Privacy level selected by the user</param> /// <returns>Credentials details updating the datasource</returns> public CredentialDetails GetCredentialDetails(Guid gatewayId, string credentialType, string[] credentialsArray, string privacyLevel) { // Capture credentials based on credential type selected by the user var credentials = GetCredentials(credentialType, credentialsArray); // Get Public Key var publicKey = GetGatewayPublicKey(gatewayId); // Create Asymmetric key Encryptor var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey); // Capture Credential Details var credentialDetails = new CredentialDetails( credentials, privacyLevel: privacyLevel, EncryptedConnection.Encrypted, credentialsEncryptor ); return(credentialDetails); }