/// <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);
        }
示例#2
0
        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");
        }
示例#4
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        /// <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);
        }