Ejemplo n.º 1
0
        public async Task <IActionResult> LoginAccount(DfpLoginAccountInputClaims input)
        {
            if (input == null || !input.Validate())
            {
                return(Conflict(new B2CErrorResponseContent("Cannot deserialize input claims")));
            }

            var correlationId = dfpService.NewCorrelationId;
            var loginId       = dfpService.NewCorrelationId;

            var response = await dfpService.LoginAccount(input, correlationId, loginId);

            if (!response.Status)
            {
                return(Conflict(new B2CErrorResponseContent(response.Message, $"Correlation Id : {correlationId}")));
            }

            var result = response.Data?.ResultDetails?.FirstOrDefault();

            if (result == null)
            {
                return(Conflict(new B2CErrorResponseContent(response.Message, $"Correlation Id : {correlationId}")));
            }

            var botScore  = result.Scores.FirstOrDefault(x => x.ScoreType == "Bot")?.ScoreValue ?? 0;
            var riskScore = result.Scores.FirstOrDefault(x => x.ScoreType == "Bot")?.ScoreValue ?? 0;

            return(Ok(new DfpLoginAccountOutputClaims()
            {
                CorrelationId = correlationId, LoginId = loginId, Decision = result.Decision, BotScore = botScore, RiskScore = riskScore
            }));
        }
Ejemplo n.º 2
0
        public async Task <(bool Status, string Message, DfpAccountActionResponse Data)> LoginAccount(DfpLoginAccountInputClaims input, string correlationId, string loginId)
        {
            var endpoint = $"/v1.0/action/account/login/{input.UserId}";

            var createAccountInput = new
            {
                Metadata = new
                {
                    TrackingId        = Guid.NewGuid().ToString(),
                    LoginId           = loginId,
                    CustomerLocalDate = DateTime.Now,
                    MerchantTimeStamp = DateTime.Now,
                    AssessmentType    = "Protect"
                },
                User = new
                {
                    Username = input.Email,
                    UserId   = input.UserId,
                    UserType = "Consumer",
                },
                Device = new
                {
                    IpAddress       = input.IpAddress,
                    DeviceContextId = input.DeviceContextId,
                    Provider        = "DFPFingerprinting"
                },

                Name    = "AP.AccountLogin",
                Version = "0.5"
            };

            return(await PostAsync <DfpAccountActionResponse>(endpoint, createAccountInput, correlationId));
        }