public void CredentialsConstructorThrowsForInvalidValues()
        {
            TokenCache cache    = new TestTokenCache();
            var        settings = ActiveDirectoryServiceSettings.Azure;

            Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => UserTokenProvider.LoginSilentAsync(null,
                                                                                                      "microsoft.onmicrosoft.com", this._username, this._password, cache));
            Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(
                                                                 "microsoft.onmicrosoft.com", ActiveDirectoryClientSettings.UsePromptOnly(string.Empty, new Uri("urn:ietf:wg:oauth:2.0:oob")),
                                                                 settings, cache));
            Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(null,
                                                                                                          ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")),
                                                                                                          settings, cache));
            Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(string.Empty,
                                                                                                          ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")),
                                                                                                          settings, cache));
            Assert.ThrowsAsync <AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2",
                                                                                                  "microsoft.onmicrosoft.com", null, this._password, cache));
            Assert.Throws <AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2",
                                                                                             "microsoft.onmicrosoft.com", string.Empty, this._password, cache).ConfigureAwait(false).GetAwaiter().GetResult());
            Assert.ThrowsAsync <AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2",
                                                                                                  "microsoft.onmicrosoft.com", this._username, null, cache));
            Assert.ThrowsAsync <AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2",
                                                                                                  "microsoft.onmicrosoft.com", this._username, string.Empty, cache));
        }
        public void CertificateTokenProviderRefreshWorks()
        {
            var thumbprint = "F064B7C7EACC942D10662A5115E047E94FA18498";

            System.Security.Cryptography.X509Certificates.X509Certificate2Collection certificates;
            Assert.True(TryFindCertificatesInStore(thumbprint, System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, out certificates));

            var cache = new TestTokenCache();

            byte[] certificate = certificates[0].Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pkcs12, _certificatePassword);
            var    credentials = ApplicationTokenProvider.LoginSilentAsync(
                "1449d5b7-8a83-47db-ae4c-9b03e888bad0",
                "20c58db7-4501-44e8-8e76-6febdb400c6b",
                certificate,
                _certificatePassword)
                                 .GetAwaiter().GetResult();

            cache.ForceTokenExpiry();
            var client  = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get,
                                                 new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));

            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public void UserCredentialsPopsDialog()
        {
            var cache = new TestTokenCache();
            var settings = ActiveDirectoryServiceSettings.Azure;
            var credentials = UserTokenProvider.LoginWithPromptAsync(this._domain, 
                ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")), 
                settings, this._username, cache).GetAwaiter().GetResult();
            var client = new HttpClient();

            var request = new HttpRequestMessage(HttpMethod.Get,
                new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            // Repeat with PromptBehavior.Never
             credentials = UserTokenProvider.LoginWithPromptAsync(this._domain, 
                 ActiveDirectoryClientSettings.UseCacheOrCookiesOnly("1950a258-227b-4e31-a9cf-717495945fc2",new Uri("urn:ietf:wg:oauth:2.0:oob")), 
                 settings, this._username, cache).GetAwaiter().GetResult();
            request = new HttpRequestMessage(HttpMethod.Get,
                new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            // Repeat with getting tokens strictly from cache
            credentials = UserTokenProvider.CreateCredentialsFromCache("1950a258-227b-4e31-a9cf-717495945fc2", this._domain, this._username, cache).GetAwaiter().GetResult();
            request = new HttpRequestMessage(HttpMethod.Get,
                new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
      }
        public void ValidApplicationCredentialsAuthenticateCorrectly()
        {
            var cache       = new TestTokenCache();
            var credentials = ApplicationTokenProvider.LoginSilentAsync(this._domain, this._applicationId, this._secret, cache).GetAwaiter().GetResult();
            var client      = new HttpClient();
            var request     = new HttpRequestMessage(HttpMethod.Get,
                                                     new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));

            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
示例#5
0
        public void ApplicationCredentialsCanBeRenewed()
        {
            var cache       = new TestTokenCache();
            var credentials = ApplicationTokenProvider.LoginSilentAsync(this._domain, this._applicationId, new MemoryApplicationCredentialProvider(new ClientCredential(this._applicationId, this._secret)),
                                                                        ActiveDirectoryServiceSettings.Azure, cache, DateTimeOffset.UtcNow - TimeSpan.FromMinutes(5)).GetAwaiter().GetResult();
            var client  = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get,
                                                 new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));

            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public void UserTokenProviderRefreshWorks()
        {
            var cache       = new TestTokenCache();
            var credentials = UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", this._domain,
                                                                 this._username, this._password, cache).GetAwaiter().GetResult();

            cache.ForceTokenExpiry();
            var client  = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get,
                                                 new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));

            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public void CertificateTokenProviderRefreshWorks()
        {
            var thumbprint = "F064B7C7EACC942D10662A5115E047E94FA18498";
            System.Security.Cryptography.X509Certificates.X509Certificate2Collection certificates;
            Assert.True(TryFindCertificatesInStore(thumbprint, System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, out certificates));

            var cache = new TestTokenCache();
            byte[] certificate = certificates[0].Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pkcs12, _certificatePassword);
            var credentials = ApplicationTokenProvider.LoginSilentAsync(
                                "1449d5b7-8a83-47db-ae4c-9b03e888bad0", 
                                "20c58db7-4501-44e8-8e76-6febdb400c6b",
                                certificate,
                                _certificatePassword)
                            .GetAwaiter().GetResult();
            cache.ForceTokenExpiry();
            var client = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get,
                new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public void UserCredentialsPopsDialog()
        {
            var cache       = new TestTokenCache();
            var settings    = ActiveDirectoryServiceSettings.Azure;
            var credentials = UserTokenProvider.LoginWithPromptAsync(this._domain,
                                                                     ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")),
                                                                     settings, this._username, cache).GetAwaiter().GetResult();
            var client = new HttpClient();

            var request = new HttpRequestMessage(HttpMethod.Get,
                                                 new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));

            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            // Repeat with PromptBehavior.Never
            credentials = UserTokenProvider.LoginWithPromptAsync(this._domain,
                                                                 ActiveDirectoryClientSettings.UseCacheOrCookiesOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")),
                                                                 settings, this._username, cache).GetAwaiter().GetResult();
            request = new HttpRequestMessage(HttpMethod.Get,
                                             new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            // Repeat with getting tokens strictly from cache
            credentials = UserTokenProvider.CreateCredentialsFromCache("1950a258-227b-4e31-a9cf-717495945fc2", this._domain, this._username, cache).GetAwaiter().GetResult();
            request     = new HttpRequestMessage(HttpMethod.Get,
                                                 new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
            credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
            Assert.NotNull(request.Headers.Authorization);
            response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
 public void ApplicationCredentialsCanBeRenewed()
 {
     var cache = new TestTokenCache();
     var credentials = ApplicationTokenProvider.LoginSilentAsync(this._domain, this._applicationId, new MemoryApplicationCredentialProvider(new ClientCredential(this._applicationId, this._secret)),
          ActiveDirectoryServiceSettings.Azure, cache, DateTimeOffset.UtcNow - TimeSpan.FromMinutes(5)).GetAwaiter().GetResult();
     var client = new HttpClient();
     var request = new HttpRequestMessage(HttpMethod.Get,
         new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
     credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
     Assert.NotNull(request.Headers.Authorization);
     var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
     Assert.Equal(HttpStatusCode.OK, response.StatusCode);
 }
 public void ValidApplicationCredentialsAuthenticateCorrectly()
 {
     var cache = new TestTokenCache();
     var credentials = ApplicationTokenProvider.LoginSilentAsync(this._domain, this._applicationId, this._secret, cache).GetAwaiter().GetResult();
     var client = new HttpClient();
     var request = new HttpRequestMessage(HttpMethod.Get,
         new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
     credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
     Assert.NotNull(request.Headers.Authorization);
     var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
     Assert.Equal(HttpStatusCode.OK, response.StatusCode);
 }
 public void UserTokenProviderRefreshWorks()
 {
     var cache = new TestTokenCache();
     var credentials = UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", this._domain,
         this._username, this._password, cache).GetAwaiter().GetResult();
     cache.ForceTokenExpiry();
     var client = new HttpClient();
     var request = new HttpRequestMessage(HttpMethod.Get,
         new Uri("https://management.azure.com/subscriptions?api-version=2014-04-01-preview"));
     credentials.ProcessHttpRequestAsync(request, CancellationToken.None).Wait();
     Assert.NotNull(request.Headers.Authorization);
     var response = client.SendAsync(request).ConfigureAwait(false).GetAwaiter().GetResult();
     Assert.Equal(HttpStatusCode.OK, response.StatusCode);
 }
 public void CredentialsConstructorThrowsForInvalidValues()
 {
     TokenCache cache = new TestTokenCache();
     var settings = ActiveDirectoryServiceSettings.Azure;
     Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => UserTokenProvider.LoginSilentAsync(null,
         "microsoft.onmicrosoft.com", this._username, this._password, cache));
     Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(
          "microsoft.onmicrosoft.com", ActiveDirectoryClientSettings.UsePromptOnly(string.Empty, new Uri("urn:ietf:wg:oauth:2.0:oob")), 
          settings, cache));
     Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(null, 
         ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")), 
         settings, cache));
     Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => UserTokenProvider.LoginWithPromptAsync(string.Empty, 
         ActiveDirectoryClientSettings.UsePromptOnly("1950a258-227b-4e31-a9cf-717495945fc2", new Uri("urn:ietf:wg:oauth:2.0:oob")), 
         settings, cache));
     Assert.ThrowsAsync<AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", 
         "microsoft.onmicrosoft.com", null, this._password, cache));
     Assert.Throws<AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", 
         "microsoft.onmicrosoft.com", string.Empty, this._password, cache).ConfigureAwait(false).GetAwaiter().GetResult());
     Assert.ThrowsAsync<AuthenticationException>(() =>UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", 
         "microsoft.onmicrosoft.com", this._username, null, cache));
     Assert.ThrowsAsync<AuthenticationException>(() => UserTokenProvider.LoginSilentAsync("1950a258-227b-4e31-a9cf-717495945fc2", 
         "microsoft.onmicrosoft.com", this._username, string.Empty, cache));
 }