public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior)
 {
     return RunAsyncTask(AddCommandAndRunAsync(
         CommandType.AquireTokenAsyncRCReP,
         new CommandArguments { Resource = resource, ClientId = clientId, RedirectUri = redirectUri, PromptBehavior = promptBehavior }));
 }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy)
        {
            PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.Always) ? PromptBehavior.Always : PromptBehavior.Auto;

            return GetAuthenticationResultProxy(this.context.AcquireTokenAsync(resource, clientId, redirectUri, promptBehavior).AsTask().Result);
        }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters)
        {
            PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.Always) ? PromptBehavior.Always : PromptBehavior.Auto;

            return GetAuthenticationResultProxy(this.context.AcquireTokenAsync(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters).AsTask().Result);
        }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId, string extraQueryParameters)
 {
     return RunTaskInteractive(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters);
 }
        private AuthenticationResultProxy RunTaskInteractive(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters, int retryCount = 0)
        {
            AuthenticationResultProxy resultProxy;

            try
            {
                AuthenticationResult result = null;
                using (Timer abortTest = new Timer(10 * 1000)) // 10 seconds for test execution
                {
                    using (Timer uiSupply = new Timer(250))
                    {
                        if (userName != null || password != null)
                        {
                            uiSupply.Elapsed += UiSupplyEventHandler;
                        }

                        abortTest.Elapsed += (sender, e) => UiAbortEventHandler(sender, e, uiSupply);

                        uiSupply.Start();
                        abortTest.Start();

                        if (promptBehaviorProxy == PromptBehaviorProxy.AccessCodeOnly)
                        {
                            string authorizationCode = AdalFriend.AcquireAccessCode(this.context, resource, clientId,
                                redirectUri, userId);
                            return new AuthenticationResultProxy() {AccessToken = authorizationCode};
                        }

                        PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.RefreshSession)
                            ? PromptBehavior.RefreshSession
                            : (promptBehaviorProxy == PromptBehaviorProxy.Always)
                                ? PromptBehavior.Always
                                : (promptBehaviorProxy == PromptBehaviorProxy.Never)
                                    ? PromptBehavior.Never
                                    : PromptBehavior.Auto;

                        if (userId != null && !ReferenceEquals(userId, UserIdentifier.AnyUser) && userId.Id == NotSpecified)
                        {
                            if (promptBehaviorProxy == PromptBehaviorProxy.NotSpecified)
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri);
                            }
                            else 
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior);
                            }
                        }
                        else
                        {
                            if (extraQueryParameters == NotSpecified)
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior, userId);
                            }
                            else
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters);
                            }
                        }

                        abortTest.Stop();
                        uiSupply.Stop();
                    }
                }

                resultProxy = GetAuthenticationResultProxy(result);
            }
            catch (Exception ex)
            {
                resultProxy = GetAuthenticationResultProxy(ex);
                if (resultProxy.ExceptionStatusCode == 503 && retryCount < 5)
                {
                    Thread.Sleep(3000);
                    Log.Comment(string.Format("Retry #{0}...", retryCount + 1));
                    return RunTaskInteractive(resource, clientId, redirectUri, promptBehaviorProxy, userId, extraQueryParameters, retryCount + 1);
                }
            }

            return resultProxy;
        }
Example #6
0
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId, string extraQueryParameters)
 {
     return(RunTaskInteractive(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters));
 }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters)
        {
            PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.Always) ? PromptBehavior.Always : PromptBehavior.Auto;

            return(GetAuthenticationResultProxy(this.context.AcquireTokenAsync(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters).AsTask().Result));
        }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy)
 {
     return this.AcquireToken(resource, clientId, redirectUri);
 }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId)
        {
            AuthenticationResult result = this.context.AcquireTokenSilentAsync(resource, clientId, userId).AsTask().Result;
            if (result.Status != AuthenticationStatus.Success)
            {
                this.context.AcquireTokenAndContinue(resource, clientId, redirectUri, userId, this.AuthenticationContextDelegate);
                result = this.ContinueAcquireTokenAsync().Result;
            }

            return GetAuthenticationResultProxy(result);
        }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior)
 {
     return(RunAsyncTask(AddCommandAndRunAsync(
                             CommandType.AquireTokenAsyncRCReP,
                             new CommandArguments {
         Resource = resource, ClientId = clientId, RedirectUri = redirectUri, PromptBehavior = promptBehavior
     })));
 }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId, string extraQueryParameters)
 {
     return(RunAsyncTask(AddCommandAndRunAsync(
                             CommandType.AquireTokenAsyncRCRePU,
                             new CommandArguments
     {
         Resource = resource,
         ClientId = clientId,
         RedirectUri = redirectUri,
         PromptBehavior = promptBehavior,
         UserName = !ReferenceEquals(userId, UserIdentifier.AnyUser) ? userId.Id : null,
         Extra = extraQueryParameters
     })));
 }
Example #12
0
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters)
        {
            AuthenticationResult result = this.context.AcquireTokenSilentAsync(resource, clientId, userId).AsTask().Result;

            if (result.Status != AuthenticationStatus.Success)
            {
                try
                {
                    this.context.AcquireTokenAndContinue(resource, clientId, redirectUri, userId, extraQueryParameters, this.AuthenticationContextDelegate);
                }
                catch (AdalException ex)
                {
                    return(new AuthenticationResultProxy
                    {
                        Error = ex.ErrorCode,
                        ErrorDescription = ex.Message,
                        Status = AuthenticationStatusProxy.ClientError,
                    });
                }

                result = this.ContinueAcquireTokenAsync().Result;
            }

            return(GetAuthenticationResultProxy(result));
        }
Example #13
0
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId)
        {
            AuthenticationResult result = this.context.AcquireTokenSilentAsync(resource, clientId, userId).AsTask().Result;

            if (result.Status != AuthenticationStatus.Success)
            {
                this.context.AcquireTokenAndContinue(resource, clientId, redirectUri, userId, this.AuthenticationContextDelegate);
                result = this.ContinueAcquireTokenAsync().Result;
            }

            return(GetAuthenticationResultProxy(result));
        }
Example #14
0
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy)
 {
     return(this.AcquireToken(resource, clientId, redirectUri));
 }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId, string extraQueryParameters)
 {
     return RunAsyncTask(AddCommandAndRunAsync(
         CommandType.AquireTokenAsyncRCRePU,
         new CommandArguments
         {
             Resource = resource,
             ClientId = clientId,
             RedirectUri = redirectUri,
             PromptBehavior = promptBehavior,
             UserName = !ReferenceEquals(userId, UserIdentifier.AnyUser) ? userId.Id : null,
             Extra = extraQueryParameters
         }));
 }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters)
        {
            AuthenticationResult result = this.context.AcquireTokenSilentAsync(resource, clientId, userId).AsTask().Result;
            if (result.Status != AuthenticationStatus.Success)
            {
                try
                {
                    this.context.AcquireTokenAndContinue(resource, clientId, redirectUri, userId, extraQueryParameters, this.AuthenticationContextDelegate);
                }
                catch (AdalException ex)
                {
                    return new AuthenticationResultProxy
                    {
                        Error = ex.ErrorCode,
                        ErrorDescription = ex.Message,
                        Status = AuthenticationStatusProxy.ClientError,
                    };                    
                }

                result = this.ContinueAcquireTokenAsync().Result;
            }

            return GetAuthenticationResultProxy(result);
        }
Example #17
0
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId)
 {
     return(RunTaskInteractive(resource, clientId, redirectUri, promptBehavior, userId, NotSpecified));
 }
 public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehavior, UserIdentifier userId)
 {
     return RunTaskInteractive(resource, clientId, redirectUri, promptBehavior, userId, NotSpecified);
 }
Example #19
0
        private AuthenticationResultProxy RunTaskInteractive(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy, UserIdentifier userId, string extraQueryParameters, int retryCount = 0)
        {
            AuthenticationResultProxy resultProxy;

            try
            {
                AuthenticationResult result = null;
                using (Timer abortTest = new Timer(10 * 1000)) // 10 seconds for test execution
                {
                    using (Timer uiSupply = new Timer(250))
                    {
                        if (userName != null || password != null)
                        {
                            uiSupply.Elapsed += UiSupplyEventHandler;
                        }

                        abortTest.Elapsed += (sender, e) => UiAbortEventHandler(sender, e, uiSupply);

                        uiSupply.Start();
                        abortTest.Start();

                        if (promptBehaviorProxy == PromptBehaviorProxy.AccessCodeOnly)
                        {
                            string authorizationCode = AdalFriend.AcquireAccessCode(this.context, resource, clientId,
                                                                                    redirectUri, userId);
                            return(new AuthenticationResultProxy()
                            {
                                AccessToken = authorizationCode
                            });
                        }

                        PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.RefreshSession)
                            ? PromptBehavior.RefreshSession
                            : (promptBehaviorProxy == PromptBehaviorProxy.Always)
                                ? PromptBehavior.Always
                                : (promptBehaviorProxy == PromptBehaviorProxy.Never)
                                    ? PromptBehavior.Never
                                    : PromptBehavior.Auto;

                        if (userId != null && !ReferenceEquals(userId, UserIdentifier.AnyUser) && userId.Id == NotSpecified)
                        {
                            if (promptBehaviorProxy == PromptBehaviorProxy.NotSpecified)
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri);
                            }
                            else
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior);
                            }
                        }
                        else
                        {
                            if (extraQueryParameters == NotSpecified)
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior, userId);
                            }
                            else
                            {
                                result = context.AcquireToken(resource, clientId, redirectUri, promptBehavior, userId, extraQueryParameters);
                            }
                        }

                        abortTest.Stop();
                        uiSupply.Stop();
                    }
                }

                resultProxy = GetAuthenticationResultProxy(result);
            }
            catch (Exception ex)
            {
                resultProxy = GetAuthenticationResultProxy(ex);
                if (resultProxy.ExceptionStatusCode == 503 && retryCount < 5)
                {
                    Thread.Sleep(3000);
                    Log.Comment(string.Format("Retry #{0}...", retryCount + 1));
                    return(RunTaskInteractive(resource, clientId, redirectUri, promptBehaviorProxy, userId, extraQueryParameters, retryCount + 1));
                }
            }

            return(resultProxy);
        }
        public AuthenticationResultProxy AcquireToken(string resource, string clientId, Uri redirectUri, PromptBehaviorProxy promptBehaviorProxy)
        {
            PromptBehavior promptBehavior = (promptBehaviorProxy == PromptBehaviorProxy.Always) ? PromptBehavior.Always : PromptBehavior.Auto;

            return(GetAuthenticationResultProxy(this.context.AcquireTokenAsync(resource, clientId, redirectUri, promptBehavior).AsTask().Result));
        }