Esempio n. 1
0
        public ActionResult <IssuerActionDetails> GetIssuanceDetails(string issuer)
        {
            AccountDescriptor   account             = _accountsService.GetByPublicKey(issuer.HexStringToByteArray());
            IssuerActionDetails registrationDetails = new IssuerActionDetails
            {
                Issuer      = account.PublicSpendKey.ToHexString(),
                IssuerAlias = account.AccountInfo,
                ActionUri   = $"{Request.Scheme}://{Request.Host.ToUriComponent()}/IdentityProvider/ProcessRootIdentityRequest?issuer={issuer}".EncodeToString64()
            };

            return(registrationDetails);
        }
Esempio n. 2
0
        public IActionResult GetActionInfo([FromQuery(Name = "t")] int actionType, [FromQuery(Name = "pk")] string publicKey, [FromQuery(Name = "sk")] string sessionKey, [FromQuery(Name = "rk")] string registrationKey)
        {
            AccountDescriptor spAccount = _accountsService.GetByPublicKey(publicKey.HexStringToByteArray());
            bool          isRegistered  = false;
            string        extraInfo     = null;
            List <string> validations   = new List <string>();

            string[] details = Array.Empty <string>();

            // Onboarding & Login
            if (actionType == 0)
            {
                ServiceProviderRegistration serviceProviderRegistration = _dataAccessService.GetServiceProviderRegistration(spAccount.AccountId, registrationKey.HexStringToByteArray());
                ;
                isRegistered = serviceProviderRegistration != null;
            }
            // Employee registration
            else if (actionType == 1)
            {
                List <SpEmployee> spEmployees = _dataAccessService.GetSpEmployees(spAccount.AccountId, registrationKey.DecodeFromString64());
                extraInfo = "";

                foreach (SpEmployee spEmployee in spEmployees)
                {
                    if (!string.IsNullOrEmpty(extraInfo))
                    {
                        extraInfo += "/";
                    }
                    extraInfo += $"{spAccount.AccountInfo}|{spEmployee?.SpEmployeeGroup?.GroupName}|{!string.IsNullOrEmpty(spEmployee.RegistrationCommitment)}";
                }

                isRegistered = spEmployees.Count > 0;
            }
            // Document sign
            else if (actionType == 2)
            {
                SignedDocumentEntity spDocument = _dataAccessService.GetSpDocument(spAccount.AccountId, registrationKey);
                if (spDocument != null)
                {
                    isRegistered = true;
                    extraInfo    = $"{spDocument.DocumentName}|{spDocument.Hash}|{spDocument.LastChangeRecordHeight}";

                    foreach (var allowedSigner in spDocument.AllowedSigners)
                    {
                        validations.Add($"{allowedSigner.GroupIssuer};{allowedSigner.GroupName}");
                    }
                }
            }
            bool isBiometryRequired = false;

            if (actionType == 0 || actionType == 1)
            {
                IEnumerable <SpIdenitityValidation> spIdenitityValidations = _dataAccessService.GetSpIdenitityValidations(spAccount.AccountId);

                if (spIdenitityValidations != null && spIdenitityValidations.Count() > 0)
                {
                    //IEnumerable<Tuple<AttributeType, string>> attributeDescriptions = _identityAttributesService.GetAssociatedAttributeTypes();
                    //IEnumerable<Tuple<ValidationType, string>> validationDescriptions = _identityAttributesService.GetAssociatedValidationTypes();

                    foreach (SpIdenitityValidation spIdenitityValidation in spIdenitityValidations)
                    {
                        if (!AttributesSchemes.ATTR_SCHEME_NAME_PASSPORTPHOTO.Equals(spIdenitityValidation.SchemeName))
                        {
                            validations.Add($"{spIdenitityValidation.SchemeName}:{spIdenitityValidation.ValidationType}");
                        }
                        else
                        {
                            isBiometryRequired = true;
                        }
                        //                  if (spIdenitityValidation.AttributeType != AttributeType.DateOfBirth)
                        //{
                        //                      validityInfo.Add(attributeDescriptions.FirstOrDefault(d => d.Item1 == spIdenitityValidation.AttributeType)?.Item2 ?? spIdenitityValidation.AttributeType.ToString());
                        //                  }
                        //                  else
                        //{
                        //	validityInfo.Add(validationDescriptions.FirstOrDefault(d => d.Item1 == spIdenitityValidation.ValidationType)?.Item2 ?? spIdenitityValidation.ValidationType.ToString());
                        //}
                    }
                }
            }

            ServiceProviderActionAndValidationsDto serviceProviderActionAndValidations = new ServiceProviderActionAndValidationsDto
            {
                SpInfo             = spAccount.AccountInfo,
                IsRegistered       = isRegistered,
                PublicKey          = publicKey,
                SessionKey         = sessionKey,
                ExtraInfo          = extraInfo,
                IsBiometryRequired = isBiometryRequired,
                Validations        = validations
            };

            return(Ok(serviceProviderActionAndValidations));
        }
Esempio n. 3
0
        public async Task <ActionResult <AttributeDefinitionsResponse> > SetAttributeDefinitions(string issuer, [FromBody] AttributeDefinition[] attributeDefinitions)
        {
            IEnumerable <IdentitiesScheme> identitiesSchemes = _dataAccessService.GetAttributesSchemeByIssuer(issuer).Where(a => a.AttributeSchemeName != AttributesSchemes.ATTR_SCHEME_NAME_PASSWORD);

            List <AttributeDefinition> newAttributeDefinitions = attributeDefinitions.Where(a => !identitiesSchemes.Any(i => i.AttributeSchemeName == a.SchemeName)).ToList();

            newAttributeDefinitions.ForEach(a =>
            {
                a.SchemeId = _dataAccessService.AddAttributeToScheme(issuer, a.AttributeName, a.SchemeName, a.Alias, a.Description);
            });

            identitiesSchemes.Where(i => i.IsActive && attributeDefinitions.All(a => a.AttributeName != i.AttributeName)).ToList().ForEach(a =>
            {
                _dataAccessService.DeactivateAttribute(a.IdentitiesSchemeId);
            });

            identitiesSchemes.Where(i => !i.IsActive && attributeDefinitions.Any(a => a.AttributeName == i.AttributeName)).ToList().ForEach(a =>
            {
                _dataAccessService.ActivateAttribute(a.IdentitiesSchemeId);
            });

            AttributeDefinition rootAttributeDefinition = attributeDefinitions.FirstOrDefault(a => a.IsRoot);

            if (rootAttributeDefinition != null)
            {
                _dataAccessService.ToggleOnRootAttributeScheme(rootAttributeDefinition.SchemeId);
            }
            else
            {
                _dataAccessService.ToggleOffRootAttributeSchemes(issuer);
            }

            var accountDescriptor = _accountsService.GetByPublicKey(issuer.HexStringToByteArray());

            ActionStatus actionStatus       = null;
            string       integrationKey     = _dataAccessService.GetAccountKeyValue(accountDescriptor.AccountId, _integrationIdPRepository.IntegrationKeyName);
            var          integrationService = _integrationIdPRepository.GetInstance(integrationKey);

            if (integrationService != null)
            {
                var definitions = _dataAccessService.GetAttributesSchemeByIssuer(issuer, true)
                                  .Select(
                    a => new AttributeDefinition
                {
                    SchemeId      = a.IdentitiesSchemeId,
                    AttributeName = a.AttributeName,
                    SchemeName    = a.AttributeSchemeName,
                    Alias         = a.Alias,
                    Description   = a.Description,
                    IsActive      = a.IsActive,
                    IsRoot        = a.CanBeRoot
                }).ToArray();
                actionStatus = await integrationService.StoreScheme(accountDescriptor.AccountId, definitions).ConfigureAwait(false);
            }

            AttributeDefinitionsResponse response = new AttributeDefinitionsResponse
            {
                IntegrationActionStatus = actionStatus,
                AttributeDefinitions    = _dataAccessService.GetAttributesSchemeByIssuer(issuer, true)
                                          .Where(a => a.AttributeSchemeName != AttributesSchemes.ATTR_SCHEME_NAME_PASSWORD)
                                          .Select(a => new AttributeDefinition
                {
                    SchemeId      = a.IdentitiesSchemeId,
                    AttributeName = a.AttributeName,
                    SchemeName    = a.AttributeSchemeName,
                    Alias         = a.Alias,
                    Description   = a.Description,
                    IsActive      = a.IsActive,
                    IsRoot        = a.CanBeRoot
                }).ToArray()
            };

            return(response);
        }