Exemple #1
0
        public async Task UsernamePasswordProvider_ShouldGetAccessTokenForRequestIAccount()
        {
            UserAssertion      assertion          = new UserAssertion("access_token");
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://example.org/foo");

            httpRequestMessage.Properties.Add(typeof(GraphRequestContext).ToString(), new GraphRequestContext
            {
                MiddlewareOptions = new Dictionary <string, IMiddlewareOption>
                {
                    {
                        typeof(AuthenticationHandlerOption).ToString(),
                        new AuthenticationHandlerOption
                        {
                            AuthenticationProviderOption = new MsalAuthenticationProviderOption
                            {
                                UserAssertion = assertion,
                                UserAccount   = _graphUserAccount
                            }
                        }
                    }
                }
            });

            AuthenticationResult newAuthResult = MockAuthResult.GetAuthenticationResult();

            _mockClientApplicationBase.Setup((pca) => pca.AcquireTokenByUsernamePasswordAsync(_scopes, string.Empty, It.IsAny <SecureString>()))
            .ReturnsAsync(newAuthResult);

            UsernamePasswordProvider authProvider = new UsernamePasswordProvider(_mockClientApplicationBase.Object, _scopes);
            await authProvider.AuthenticateRequestAsync(httpRequestMessage);

            Assert.IsInstanceOfType(authProvider.ClientApplication, typeof(IPublicClientApplication), "Unexpected client application set.");
            Assert.IsNotNull(httpRequestMessage.Headers.Authorization, "Unexpected auhtorization header set.");
            Assert.AreEqual(_silentAuthResult.AccessToken, httpRequestMessage.Headers.Authorization.Parameter, "Unexpected access token set.");
        }
Exemple #2
0
        public async Task OnBehalfOfProvider_ShouldGetNewAccessTokenWithNoUserAssertion()
        {
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://example.org/foo");

            httpRequestMessage.Properties.Add(typeof(GraphRequestContext).ToString(), new GraphRequestContext
            {
                MiddlewareOptions = new Dictionary <string, IMiddlewareOption>
                {
                    {
                        typeof(AuthenticationHandlerOption).ToString(),
                        new AuthenticationHandlerOption
                        {
                            AuthenticationProviderOption = new MsalAuthenticationProviderOption
                            {
                                UserAssertion = null
                            }
                        }
                    }
                }
            });

            AuthenticationResult expectedAuthResult = MockAuthResult.GetAuthenticationResult(new GraphAccount(_graphUserAccount));

            _mockClientApplicationBase.Setup((cca) => cca.AcquireTokenOnBehalfOfAsync(_scopes, It.IsAny <UserAssertion>(), "common"))
            .ReturnsAsync(expectedAuthResult);

            OnBehalfOfProvider authProvider = new OnBehalfOfProvider(_mockClientApplicationBase.Object, _scopes);
            await authProvider.AuthenticateRequestAsync(httpRequestMessage);

            Assert.IsInstanceOfType(authProvider.ClientApplication, typeof(IConfidentialClientApplication), "Unexpected client application set.");
            Assert.IsNotNull(httpRequestMessage.Headers.Authorization, "Unexpected auhtorization header set.");
            Assert.AreEqual(expectedAuthResult.AccessToken, httpRequestMessage.Headers.Authorization.Parameter, "Unexpected access token set.");
        }
Exemple #3
0
        public async Task InteractiveAuthProvider_ShouldGetNewAccessTokenWithNoIAccount()
        {
            UserAssertion      assertion          = new UserAssertion("access_token");
            HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://example.org/foo");

            httpRequestMessage.Properties.Add(typeof(GraphRequestContext).ToString(), new GraphRequestContext
            {
                MiddlewareOptions = new Dictionary <string, IMiddlewareOption>
                {
                    {
                        typeof(AuthenticationHandlerOption).ToString(),
                        new AuthenticationHandlerOption
                        {
                            AuthenticationProviderOption = new MsalAuthenticationProviderOption
                            {
                                UserAssertion = assertion
                            }
                        }
                    }
                }
            });

            AuthenticationResult newAuthResult = MockAuthResult.GetAuthenticationResult();

            _mockClientApplicationBase.Setup((pca) => pca.AcquireTokenAsync(_scopes, It.IsAny <IAccount>(), UIBehavior.SelectAccount, null, null, _commonAuthority, null))
            .ReturnsAsync(newAuthResult);

            InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(_mockClientApplicationBase.Object, _scopes);
            await authProvider.AuthenticateRequestAsync(httpRequestMessage);

            Assert.IsInstanceOfType(authProvider.ClientApplication, typeof(IPublicClientApplication), "Unexpected client application set.");
            Assert.IsNotNull(httpRequestMessage.Headers.Authorization, "Unexpected auhtorization header set.");
            Assert.AreEqual(newAuthResult.AccessToken, httpRequestMessage.Headers.Authorization.Parameter, "Unexpected access token set.");
        }
Exemple #4
0
 public void Setup()
 {
     _graphUserAccount = new GraphUserAccount
     {
         Email       = "*****@*****.**",
         Environment = "login.microsoftonline.com",
         ObjectId    = Guid.NewGuid().ToString(),
         TenantId    = Guid.NewGuid().ToString()
     };
     _silentAuthResult          = MockAuthResult.GetAuthenticationResult(new GraphAccount(_graphUserAccount), _scopes);
     _mockClientApplicationBase = new MockPublicClientApplication(_scopes, _organizationsAuthority, false, _clientId, _silentAuthResult);
 }
 public void Setup()
 {
     _clientCredential = new ClientCredential("app_secret");
     _graphUserAccount = new GraphUserAccount
     {
         Email       = "*****@*****.**",
         Environment = "login.microsoftonline.com",
         ObjectId    = Guid.NewGuid().ToString(),
         TenantId    = Guid.NewGuid().ToString()
     };
     _mockAuthResult            = MockAuthResult.GetAuthenticationResult(new GraphAccount(_graphUserAccount), _scopes);
     _mockClientApplicationBase = new MockConfidentialClientApplication(_scopes, "common", false, _clientId, _mockAuthResult);
 }
        public async Task AuthorizationCodeProvider_ShouldGetTokenFromAuthorizationCode()
        {
            var newAuthResult = MockAuthResult.GetAuthenticationResult(null, _scopes);

            string authCode = "Auth_Code";

            _mockClientApplicationBase.Setup(cca => cca.AcquireTokenByAuthorizationCodeAsync(authCode, _scopes))
            .ReturnsAsync(newAuthResult);
            AuthorizationCodeProvider authCodeFlowProvider = new AuthorizationCodeProvider(_mockClientApplicationBase.Object, _scopes);

            var authResult = await authCodeFlowProvider.GetTokenByAuthorizationCodeAsync(authCode);

            Assert.IsInstanceOfType(authCodeFlowProvider.ClientApplication, typeof(IConfidentialClientApplication), "Unexpected client application set.");
            Assert.AreSame(newAuthResult.Scopes, authResult.Scopes, "Unexpected scopes set.");
        }
Exemple #7
0
 public void Setup()
 {
     _clientCredential          = new ClientCredential("appSecret");
     _mockAuthResult            = MockAuthResult.GetAuthenticationResult(null);
     _mockClientApplicationBase = new MockConfidentialClientApplication(null, _commonAuthority, false, _clientId, _mockAuthResult);
 }