/// <summary>
        /// Performs ACS authentication for 3DS v1
        /// </summary>
        /// <param name="secureEcom"></param>
        /// <param name="paRes"></param>
        /// <param name="authenticationResultCode"></param>
        /// <returns></returns>
        public string Authenticate_v1(ThreeDSecure secureEcom, out string paRes,
                                      AuthenticationResultCode authenticationResultCode = 0)
        {
            // Step 1
            var formData = new List <KeyValuePair <string, string> >();

            formData.Add(
                new KeyValuePair <string, string>(secureEcom.MessageType, secureEcom.PayerAuthenticationRequest));
            formData.Add(new KeyValuePair <string, string>(secureEcom.SessionDataFieldName,
                                                           secureEcom.ServerTransactionId));
            formData.Add(new KeyValuePair <string, string>("TermUrl", secureEcom.ChallengeReturnUrl));
            formData.Add(new KeyValuePair <string, string>("AuthenticationResultCode",
                                                           authenticationResultCode.ToString("D")));
            string rawResponse = SubmitFormData(secureEcom.IssuerAcsUrl, formData);

            paRes = GetInputValue(rawResponse, "PaRes");

            // Step 2
            formData = new List <KeyValuePair <string, string> >();
            formData.Add(new KeyValuePair <string, string>("MD", GetInputValue(rawResponse, "MD")));
            formData.Add(new KeyValuePair <string, string>("PaRes", paRes));
            rawResponse = SubmitFormData(GetFormAction(rawResponse, "PAResForm"), formData);

            return(rawResponse);
        }
        public async Task <AuthenticationResultCode> Authenticate(string tenant, string resource, string clientId, string returnUrl)
        {
            try
            {
                string authority         = String.Format("https://login.microsoftonline.com/{0}", tenant);
                AuthenticationContext ac = new AuthenticationContext(authority);
                authResult = await ac.AcquireTokenAsync(resource, clientId, new Uri(returnUrl), platformParameters);

                resultCode = AuthenticationResultCode.Succesful;
            }
            catch (AdalException adalEx)
            {
                switch (adalEx.ErrorCode)
                {
                case "authentication_canceled":
                    resultCode = AuthenticationResultCode.Cancelled;
                    break;

                case "access_denied":
                    resultCode = AuthenticationResultCode.Denied;
                    break;

                default:
                    resultCode = AuthenticationResultCode.Unknown;
                    break;
                }
            }
            catch (Exception ex)
            {
                resultCode = AuthenticationResultCode.Unknown;
                error      = ex.Message + " " + ex.StackTrace;
            }

            return(resultCode);
        }
        public void CardHolderEnrolled_ChallengeRequired_AuthenticationFailed_v1(
            AuthenticationResultCode authenticationResultCode, string status)
        {
            card.Number = GpApi3DSTestCards.CARDHOLDER_ENROLLED_V1;

            // Check enrollment
            var secureEcom = Secure3dService.CheckEnrollment(card)
                             .WithCurrency(Currency)
                             .WithAmount(Amount)
                             .Execute();

            Assert.IsNotNull(secureEcom);
            Assert.AreEqual(ENROLLED, secureEcom.Enrolled, "Card not enrolled");
            Assert.AreEqual(Secure3dVersion.One, secureEcom.Version);
            Assert.AreEqual(CHALLENGE_REQUIRED, secureEcom.Status);
            Assert.IsTrue(secureEcom.ChallengeMandated);
            Assert.IsNotNull(secureEcom.IssuerAcsUrl);
            Assert.IsNotNull(secureEcom.PayerAuthenticationRequest);
            Assert.IsNotNull(secureEcom.ChallengeReturnUrl);
            Assert.IsNotNull(secureEcom.MessageType);
            Assert.IsNotNull(secureEcom.SessionDataFieldName);

            // Perform ACS authentication
            GpApi3DSecureAcsClient acsClient = new GpApi3DSecureAcsClient(secureEcom.IssuerAcsUrl);
            string payerAuthenticationResponse;
            string authResponse =
                acsClient.Authenticate_v1(secureEcom, out payerAuthenticationResponse, authenticationResultCode);

            Assert.AreEqual("{\"success\":true}", authResponse);

            // Get authentication data
            secureEcom = Secure3dService.GetAuthenticationData()
                         .WithServerTransactionId(secureEcom.ServerTransactionId)
                         .WithPayerAuthenticationResponse(payerAuthenticationResponse)
                         .Execute();

            Assert.IsNotNull(secureEcom);
            Assert.AreEqual(status, secureEcom.Status);
            string liabilityShift = status == "SUCCESS_ATTEMPT_MADE" ? "YES" : "NO";

            Assert.AreEqual(liabilityShift, secureEcom.LiabilityShift);
        }
Exemple #4
0
        public async void PerformLogon(string tenant)
        {
            // Application ID from Intune samples (https://github.com/microsoftgraph/powershell-intune-samples)
            string applicationId = "d1ddf0e4-d672-4dae-b554-9d5bdfd93547";
            string authority     = "https://graph.microsoft.com";
            string redirectUri   = "urn:ietf:wg:oauth:2.0:oob";
            string authTenant    = "common";

            if (!String.IsNullOrEmpty(tenant))
            {
                authTenant = tenant;
            }

            DependencyService.Register <IntuneDataStore>();

            IADALAuthenticator       auth = DependencyService.Get <IADALAuthenticator>();
            AuthenticationResultCode code = await auth.Authenticate(authTenant, authority, applicationId, redirectUri);

            switch (code)
            {
            case AuthenticationResultCode.Succesful:
                Results = "Signed on as  " + ADALAuthentication.Instance.AuthResult.UserInfo.DisplayableId;
                break;

            case AuthenticationResultCode.Cancelled:
                Results = "Logon cancelled";
                break;

            case AuthenticationResultCode.Denied:
                Results = "Access denied";
                break;

            default:
                Results = "Unexpected error: " + ADALAuthentication.Instance.Error;
                break;
            }

            App.Current.MainPage = new Views.MainPage();
        }
Exemple #5
0
 public AuthenticationResult(AuthenticationResultCode code, string msg = "")
 {
     Code = code;
     AdditionalErrorMessage = msg;
 }
        public string GetAuthenticationResultMessage(AuthenticationResultCode authResult, string langCode)
        {
            langCode = langCode.ToLower();
            switch (authResult)
            {
            case AuthenticationResultCode.AuthenticationFailure:
                if (langCode == "fa-ir")
                {
                    return("نام کاربری یا کلمهٔ عبور اشتباه است.");
                }
                else
                {
                    return("Username and password combination did not work!");
                }

            case AuthenticationResultCode.AuthenticationSuccess:
                if (langCode == "fa-ir")
                {
                    return("ورود موفقیت آمیز بود.");
                }
                else
                {
                    return("Authentication succeeded.");
                }

            case AuthenticationResultCode.DbConnectionError:
                if (langCode == "fa-ir")
                {
                    return("خطای اتصال سرویس به پایگاه داده‌ها. لطفا بررسی کنید که رشته اتصال ConnectionStrings.SysConnection در appsettings.json رشته صحیحی برگرداند.");
                }
                else
                {
                    return("Database connection error. Please make sure ConnectionStrings.SysConnection in appsettings.json points to a valid and online database server.");
                }

            case AuthenticationResultCode.InvalidInputParams:
                if (langCode == "fa-ir")
                {
                    return("خطای برنامه‌نویسی: پارامترهای ورودی متد ناصحیح است.");
                }
                else
                {
                    return("Invalid input parameters for api.");
                }

            case AuthenticationResultCode.InvalidServiceAccessType:
                if (langCode == "fa-ir")
                {
                    return("کاربر مورد نظر به سرویس درخواست شده دسترسی ندارد.");
                }
                else
                {
                    return("User has not required access.");
                }

            case AuthenticationResultCode.UnknownServerError:
                if (langCode == "fa-ir")
                {
                    return("خطای پردازش نشده.");
                }
                else
                {
                    return("Uknown error");
                }
            }
            return("Invalid result code.");
        }
 public AuthenticationResult(AuthenticationResultCode authenticationResultCode)
 {
     ResultCode = authenticationResultCode;
     IsValid = false;
 }
		public AuthenticationException(AuthenticationResultCode resultCode)
		{
			ResultCode = resultCode;
		}
 private AuthenticationResult(AuthenticationResultCode code, User user)
 {
     Code = code;
     User = user;
 }
 public static AuthenticationResult Fail(AuthenticationResultCode code)
 {
     return(new AuthenticationResult(code, null));
 }