Beispiel #1
0
 public ExternalDomainGeneralProperty(IPropertyDataManager manager, IdentityProviderDto providerDto)
 {
     _providerDto = providerDto;
     _dataManager = manager;
     InitializeComponent();
     PropertyPageInit();
 }
Beispiel #2
0
        private void AddExternalDomain_Load(object sender, EventArgs e)
        {
            advancedSettings = new AdvancedExternalDomain();
            _createNew       = IdentityProviderDto == null;
            if (_createNew)
            {
                _current = Steps.One;
                rdoADWindowsAuth.Checked = false;
                rdoADLdap.Checked        = true;
                rdoAnyDomain.Checked     = true;
                IdentityProviderDto      = new IdentityProviderDto();
                this.Text = NEW_EXTERNAL_DOMAIN_TITLE;
            }
            else
            {
                DtoToView();
                _current  = rdoADWindowsAuth.Checked ? Steps.Four : Steps.Two;
                this.Text = rdoADWindowsAuth.Checked ? AD_WIN_AUTH_TITLE :
                            rdoADLdap.Checked?AD_AS_LDAP_TITLE:
                            OPEN_LDAP_TITLE;
            }

            button11.Enabled = false;
            button1.Enabled  = false;
            button2.Enabled  = false;

            StepShow();
        }
Beispiel #3
0
 public ExternalDomainSchemaObjectMapProperty(IPropertyDataManager mgr, IdentityProviderDto dto)
 {
     _dataMgr     = mgr;
     _providerDto = dto;
     InitializeComponent();
     PropertyPageInit();
 }
Beispiel #4
0
 public ExternalDomainPropertyManager(string tenantName, ServiceGateway service, ServerDto server, IdentityProviderDto provider)
 {
     _tenantName = tenantName;
     _service    = service;
     _server     = server;
     _provider   = provider;
 }
Beispiel #5
0
        private IdentityProviderDto ViewToDto()
        {
            var isAd = IsAdWinSelected();
            var useMachineAccount = (isAd && RdoSpn.SelectedRow != 1);
            //var useSpn = (isAd && RdoSpn.SelectedRow == 1);
            var providerDto = new IdentityProviderDto
            {
                DomainType                   = DomainType.EXTERNAL_DOMAIN.ToString(),
                Type                         = GetIdentitySourceType(RdoIdentitySource.SelectedTag),
                Name                         = isAd ? _domainName : TxtDomainName.StringValue,
                Alias                        = isAd ? null : TxtDomainAlias.StringValue,
                FriendlyName                 = isAd ? null : TxtFriendlyName.StringValue,
                UserBaseDN                   = isAd ? null :  TxtBaseDnUser.StringValue,
                GroupBaseDN                  = isAd ? null :  TxtBaseDnGroups.StringValue,
                ConnectionStrings            = isAd ? null : GetConnectionStrings(),
                SiteAffinityEnabled          = RdoDomainController.SelectedTag == 1 && ChkProtect.StringValue == "1",
                Certificates                 = _certificates,
                UserMachineAccount           = useMachineAccount,
                Username                     = useMachineAccount ? null : TxtUpn.StringValue,
                Password                     = useMachineAccount ? null : TxtPassword.StringValue,
                ServicePrincipalName         = useMachineAccount ? null : TxtSpn.StringValue,
                AuthenticationType           = isAd ? "USE_KERBEROS" : "PASSWORD",
                BaseDnForNestedGroupsEnabled = IdentityProviderDto.BaseDnForNestedGroupsEnabled,
                DirectGroupsSearchEnabled    = IdentityProviderDto.DirectGroupsSearchEnabled,
                MatchingRuleInChainEnabled   = IdentityProviderDto.MatchingRuleInChainEnabled,
                AttributesMap                = IdentityProviderDto.AttributesMap != null && IdentityProviderDto.AttributesMap.Count > 0 ? IdentityProviderDto.AttributesMap : null,
                Schema                       = IdentityProviderDto.Schema // != null && IdentityProviderDto.Schema.Count > 0 ? GetSchema(IdentityProviderDto.Schema) : null
            };

            return(providerDto);
        }
Beispiel #6
0
        public async Task GivenAValidIdPDefinition_WhenICallTheCreateDelegate_ThenTheProviderShouldBePersisted()
        {
            // Setup: Create a database with an Account and two existing Subscriptions.
            await using var db = ClientsDbTestProvider.CreateInMemoryClientDb();
            var account = DtoProvider.CreateValidAccountDefinition();

            var createAccountDelegate = new CreateAccountDelegate(db, Mapper);

            account = await createAccountDelegate.CreateAccountAsync(account);

            var identityProvider = new IdentityProviderDto {
                Name = "Health Dialog Secondary IdP"
            };

            // System under test: CreateIdentityProviderDelegate
            var createIdentityProvider = new CreateIdentityProviderDelegate(db, Mapper);

            // Exercise: invoke Create Identity Provider
            identityProvider = await createIdentityProvider.CreateIdentityProvider(account.AccountId, identityProvider);

            // Assert: the number of Accounts in the InMemory database is still 1
            // Assert: the number of Subscriptions in the InMemory database is still 2
            // Assert: the number of Subscriptions in the InMemory database is now 2
            db.Accounts.Count().Should().Be(1, $"The number of {nameof(db.Accounts)} in the ClientsDb is not 1");
            db.Subscriptions.Count().Should().Be(2, $"The number of {nameof(db.Subscriptions)} in the ClientsDb is not 2");
            db.IdentityProviders.Count().Should().Be(2, $"The number of {nameof(db.IdentityProviders)} in the ClientsDb is not 2");

            identityProvider.IdentityProviderId.Should().NotBe(default);
Beispiel #7
0
        private IdentityProviderDto ViewToDto()
        {
            var isAd        = (cbIdentitySourceType.SelectedValue.ToString() == "IDENTITY_STORE_TYPE_ACTIVE_DIRECTORY");
            var attributes  = GetAttributes();
            var attrmap     = GetAttributeMap();
            var providerDto = new IdentityProviderDto
            {
                DomainType             = DomainType.EXTERNAL_DOMAIN.ToString(),
                Name                   = txtDomainName.Text,
                Alias                  = isAd ? null : txtDomainAlias.Text,
                Type                   = cbIdentitySourceType.SelectedValue.ToString(),
                AuthenticationType     = cboAuthenticationType.Text.ToUpper(),
                FriendlyName           = isAd ? null : txtFriendlyName.Text,
                SearchTimeOutInSeconds = isAd ? 0 : (long)txtSearchTimeoutSeconds.Value,
                Username               = isAd ? (rdoSpn.Checked ? txtADUsername.Text : null) : txtUserName.Text,
                Password               = isAd ? (rdoSpn.Checked ? txtADPassword.Text : null) : txtPassword.Text,
                UserMachineAccount     = isAd ? rdoMachineAccount.Checked : false,
                ServicePrincipalName   = isAd ? txtADSpn.Text : null,
                UserBaseDN             = isAd ? null : txtUserBaseDN.Text,
                GroupBaseDN            = isAd ? null : txtGroupBaseDN.Text,
                ConnectionStrings      = isAd ? null : new List <string> {
                    txtPrimaryURL.Text
                },
                SiteAffinityEnabled          = cbSiteAffinity.Checked,
                BaseDnForNestedGroupsEnabled = cbDNForNestedGroups.Checked,
                DirectGroupsSearchEnabled    = cbGroupSearch.Checked,
                MatchingRuleInChainEnabled   = cbMatchRuleInChain.Checked,
                Schema        = new Dictionary <string, SchemaObjectMappingDto>(attributes),
                AttributesMap = new Dictionary <string, string>(attrmap)
            };

            return(providerDto);
        }
 public ExternalDomainAuthProperty(IPropertyDataManager dataManager, IdentityProviderDto dto)
 {
     _providerDto = dto;
     _dataManager = dataManager;
     InitializeComponent();
     PropertyPageInit();
 }
        //[AuthorizeRbac("accounts:write")]
        public async Task <IActionResult> AddIdentityProvider(int accountId, IdentityProviderDto identityProviderDto)
        {
            identityProviderDto = await _createIdentityProvider.CreateIdentityProvider(accountId, identityProviderDto);

            var baseUrl = $"{Request.Scheme}://{Request.Host}{Request.PathBase}{Request.Path}/{identityProviderDto.IdentityProviderId}";

            return(Created(baseUrl, identityProviderDto));
        }
 public ExternalIdentityProviderNode(string tenantName, IdentityProviderDto provider)
     : base(false)
 {
     _tenantName               = tenantName;
     _provider                 = provider;
     this.DisplayName          = _provider.Name;
     this.EnabledStandardVerbs = StandardVerbs.Properties | StandardVerbs.Delete;
     ImageIndex                = SelectedImageIndex = (int)TreeImageIndex.ExternalDomain;
 }
 public UsersAndGroupsNode(ServerDto dto, string tenantName, IdentityProviderDto provider, bool systemDomain)
 {
     _tenantName   = tenantName;
     _domainName   = provider.Name;
     _systemDomain = systemDomain;
     _serverDto    = dto;
     DisplayName   = "Users and Groups";
     Refresh(this, EventArgs.Empty);
 }
Beispiel #12
0
        public IdentityProviderDto Probe(ServerDto server, string tenant, IdentityProviderDto provider, Token token)
        {
            var schemaSerialized    = SerializeSchema(provider.Schema);
            var attributeSerailized = SerializeAttributes(provider.AttributesMap, "attributesMap");

            provider.Schema        = null;
            provider.AttributesMap = null;

            tenant = Uri.EscapeDataString(tenant);
            var url = string.Format(ServiceConfigManager.IdentityProvidersEndPoint, server.Protocol, server.ServerName, server.Port, tenant);

            url += "?probe=true";
            var dto  = typeof(IdentityProviderDto).Assembly;
            var json = JsonConvert.Serialize(provider, "root", dto.GetTypes(), true);

            json = SerializationJsonHelper.Cleanup(json);

            json = json.Substring(0, json.Length - 1);

            var attributeString = "\"attributesMap\":null,";

            if (json.Contains(attributeString))
            {
                json = json.Replace(attributeString, attributeSerailized + (string.IsNullOrEmpty(attributeSerailized)? string.Empty : ","));
            }
            else
            {
                json += attributeSerailized;
            }

            var schemaString = "\"schema\":null,";

            if (json.Contains(schemaString))
            {
                json = json.Replace(schemaString, schemaSerialized + (string.IsNullOrEmpty(schemaSerialized)? string.Empty : ","));
            }
            else
            {
                json += schemaSerialized;
            }
            json += "}";

            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            var requestConfig = new RequestSettings
            {
                Method = HttpMethod.Post
            };
            var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);

            json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower() + "&" + json;
            var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);

            response = SerializationJsonHelper.JsonToDictionary("attributesMap", response);
            response = CleanupSchemaJson(response);
            return(JsonConvert.Deserialize <IdentityProviderDto>(response, "root", dto.GetTypes(), true));
        }
Beispiel #13
0
        public async Task <ActionResult <IdentityProviderDto> > AddNewIdentityProviderAsync(
            [FromBody] IdentityProviderDto identityProviderDto)
        {
            var identityProvider = _mapper.Map <OspIdentityProvider>(identityProviderDto);

            await HandleWriteExceptionAsync(async() => await _identityProviderStore.StoreAsync(identityProvider));
            await ClearCacheAsync();

            return(_mapper.Map <IdentityProviderDto>(identityProvider));
        }
Beispiel #14
0
 public UsersAndGroupsNode(ServerDto dto, string tenantName, IdentityProviderDto provider, bool systemDomain)
     : base(false)
 {
     ImageIndex    = SelectedImageIndex = (int)TreeImageIndex.Group;
     _tenantName   = tenantName;
     _domainName   = provider.Name;
     _systemDomain = systemDomain;
     _serverDto    = dto;
     DisplayName   = "Users and Groups";
 }
Beispiel #15
0
        public IdentitySourceNode(IdentityProviderDto provider, string tenantName, bool systemDomain, string displayName, TenantConfigurationDto tenantConfigDto)
        {
            _provider        = provider;
            _tenantName      = tenantName;
            _systemDomain    = systemDomain;
            _tenantConfigDto = tenantConfigDto;
            var isDefault = _tenantConfigDto.ProviderPolicy != null && _tenantConfigDto.ProviderPolicy.DefaultProvider == provider.Name;

            DisplayName     = isDefault ? displayName + " (Default)" : displayName;
            IsDefaultDomain = isDefault;
        }
Beispiel #16
0
        public ExternalDomainNode(string tenantName, IdentityProviderDto provider)
            : base(false)
        {
            _tenantName               = tenantName;
            _provider                 = provider;
            this.DisplayName          = _provider.Name;
            this.EnabledStandardVerbs = StandardVerbs.Delete;
            var action1 = new Action("Properties", "Properties", 1, ExternalDomainNodeAction.ActionProperties);

            ActionsPaneItems.Add(action1);
            ImageIndex = SelectedImageIndex = (int)TreeImageIndex.ExternalDomain;
        }
Beispiel #17
0
        public async Task CreateIdentityProvider(IdentityProviderDto identityProvider)
        {
            ArgumentValidation.Validate(nameof(identityProvider), identityProvider);

            var request = new RestRequest("identityProviders", Method.POST);

            request.AddJsonBody(identityProvider);

            IRestResponse response = await Client.ExecuteAsync(request);

            ValidateResponse(response);
        }
Beispiel #18
0
        public async Task UpdateIdentityProvider(string id, IdentityProviderDto identityProvider)
        {
            ArgumentValidation.ValidateString(nameof(id), id);
            ArgumentValidation.Validate(nameof(identityProvider), identityProvider);

            var request = new RestRequest("identityProviders/{id}", Method.PUT);

            request.AddUrlSegment("id", id);
            request.AddJsonBody(identityProvider);

            IRestResponse response = await Client.ExecuteAsync(request);

            ValidateResponse(response);
        }
 private void NewExternalDomain_Load(object sender, EventArgs e)
 {
     if (IdentityProviderDto == null)
     {
         IdentityProviderDto = new IdentityProviderDto();
     }
     else
     {
         DtoToView();
     }
     cbDNForNestedGroups.Visible = !IsAD;
     cbGroupSearch.Visible       = !IsAD;
     cbMatchRuleInChain.Visible  = !IsAD;
     lblSettings.Visible         = !IsAD;
 }
Beispiel #20
0
        public async Task <ActionResult <IdentityProviderDto> > ReplaceProviderAsync([FromRoute][Required] string id,
                                                                                     [FromBody][Required] IdentityProviderDto identityProviderDto)
        {
            if (identityProviderDto == null)
            {
                throw new ArgumentNullException(nameof(identityProviderDto));
            }

            var identityProvider = _mapper.Map <OspIdentityProvider>(identityProviderDto);

            identityProvider.Id = id;

            await HandleWriteExceptionAsync(async() => await _identityProviderStore.StoreAsync(identityProvider));
            await ClearCacheAsync();

            return(Ok(identityProviderDto));
        }
Beispiel #21
0
        public IdentityProviderNode(IdentityProviderDto provider, string tenantName, bool systemDomain, string displayName, TenantConfigurationDto tenantConfigDto)
            : base(false)
        {
            _provider        = provider;
            _tenantName      = tenantName;
            _systemDomain    = systemDomain;
            _tenantConfigDto = tenantConfigDto;
            var isDefault = _tenantConfigDto.ProviderPolicy != null && _tenantConfigDto.ProviderPolicy.DefaultProvider == provider.Name;

            if (!isDefault)
            {
                var action = new Action("Set as default domain", "Set as default domain", -1, IdentityProviderNodeAction.ActionSetDefault);
                ActionsPaneItems.Add(action);
            }
            DisplayName = isDefault ? displayName + " (Default)" : displayName;
            ImageIndex  = SelectedImageIndex = systemDomain ? (int)TreeImageIndex.SystemDomain : (int)TreeImageIndex.LocalOs;
        }
        private void AddExternalDomain_Load(object sender, EventArgs e)
        {
            advancedSettings = new AdvancedExternalDomain();
            _createNew       = IdentityProviderDto == null;
            if (_createNew)
            {
                rdoADWindowsAuth.Checked = false;
                rdoADLdap.Checked        = true;
                rdoAnyDomain.Checked     = true;
                IdentityProviderDto      = new IdentityProviderDto();
            }
            else
            {
                DtoToView();
            }

            button11.Enabled = false;
            button1.Enabled  = false;
            button2.Enabled  = false;
            _current         = Steps.One;
            StepShow();
        }
        private IdentityProviderDto ViewToDto()
        {
            var isAd        = rdoADWindowsAuth.Checked;
            var providerDto = new IdentityProviderDto
            {
                DomainType           = DomainType.EXTERNAL_DOMAIN.ToString(),
                Name                 = isAd ? radioButton1.Checked ? _domainName : txtSPN.Text.Substring(txtSPN.Text.LastIndexOf("/") + 1) : txtDomainName.Text,
                Alias                = isAd ? null : txtDomainAlias.Text,
                FriendlyName         = isAd ? null : txtFriendlyName.Text,
                Type                 = GetSourceType(),
                AuthenticationType   = isAd ? "USE_KERBEROS" : "PASSWORD",
                Username             = isAd && radioButton1.Checked ? null : txtUsername.Text,
                Password             = isAd && radioButton1.Checked ? null : txtPassword.Text,
                UserMachineAccount   = isAd && radioButton1.Checked,
                ServicePrincipalName = isAd && radioButton1.Checked ? null : txtSPN.Text,
                UserBaseDN           = isAd ? null : txtUserDN.Text,
                GroupBaseDN          = isAd ? null : txtGroupDN.Text,
                ConnectionStrings    = GetConnectionString(isAd),
                Certificates         = isAd ? null : GetCertificates()
            };

            if (advancedSettings.IdentityProviderDto != null)
            {
                if (advancedSettings.IdentityProviderDto.Schema != null)
                {
                    providerDto.Schema = new Dictionary <string, SchemaObjectMappingDto>(advancedSettings.IdentityProviderDto.Schema);
                }
                if (advancedSettings.IdentityProviderDto.AttributesMap != null)
                {
                    providerDto.AttributesMap = new Dictionary <string, string>(advancedSettings.IdentityProviderDto.AttributesMap);
                }
                providerDto.SiteAffinityEnabled          = rdoADLdap.Checked && rdoAnyDomain.Checked;
                providerDto.BaseDnForNestedGroupsEnabled = advancedSettings.IdentityProviderDto.BaseDnForNestedGroupsEnabled;
                providerDto.DirectGroupsSearchEnabled    = advancedSettings.IdentityProviderDto.DirectGroupsSearchEnabled;
                providerDto.MatchingRuleInChainEnabled   = advancedSettings.IdentityProviderDto.MatchingRuleInChainEnabled;
            }

            return(providerDto);
        }
Beispiel #24
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            _certificates = new List <CertificateDto> ();
            var title = string.Empty;

            if (IdentityProviderDto != null)
            {
                var tag = GetIdFromIdentitySourceType(IdentityProviderDto.Type);

                if (tag == 1)
                {
                    title        = VMIdentityConstants.AD_WIN_AUTH_TITLE;
                    _currentStep = WizardSteps.Four;
                }
                else
                {
                    if (tag == 2)
                    {
                        title = VMIdentityConstants.AD_AS_LDAP_TITLE;
                    }
                    else
                    {
                        title = VMIdentityConstants.OPEN_LDAP_TITLE;
                    }
                    _currentStep = WizardSteps.Two;
                }

                isUpdate = true;
            }
            else
            {
                title        = VMIdentityConstants.NEW_EXTERNAL_DOMAIN_TITLE;
                _currentStep = WizardSteps.One;
                isUpdate     = false;
            }
            this.Window.Title = (NSString)title;
            SetWizardStep();
            ReloadCertificates();

            //Events
            this.BtnTestConnection.Activated += TestConnection;
            this.BtnNext.Activated           += OnClickNextButton;
            this.BtnBack.Activated           += OnClickBackButton;
            this.BtnAddCertificate.Activated += (object sender, EventArgs e) => {
                var openPanel = new NSOpenPanel();
                openPanel.ReleasedWhenClosed = true;
                openPanel.Prompt             = "Select file";

                var result = openPanel.RunModal();
                if (result == 1)
                {
                    var filePath = openPanel.Url.AbsoluteString.Replace("file://", string.Empty);
                    var cert     = new X509Certificate2();
                    ActionHelper.Execute(delegate() {
                        cert.Import(filePath);
                        var certfificateDto = new CertificateDto {
                            Encoded = cert.ExportToPem(), Chain = cert.GetFormattedThumbPrint()
                        };
                        _certificates.Add(certfificateDto);
                        ReloadCertificates();
                    });
                }
            };

            this.RdoIdentitySource.Activated += (object sender, EventArgs e) =>
            {
                SetSpnControls();
            };
            this.RdoDomainController.Activated += (object sender, EventArgs e) =>
            {
                var anyDc = RdoDomainController.SelectedTag == 1;
                if (anyDc)
                {
                    SetConnectionString();
                }
                else
                {
                    TxtLdapConnection.StringValue = (NSString)string.Empty;
                }
                ChkProtect.Enabled = anyDc;
                EnableDisableConnectionString(!anyDc);
            };
            this.BtnRemoveCertificate.Activated += (object sender, EventArgs e) => {
                if (LstCertificates.SelectedRows.Count > 0)
                {
                    foreach (var row in LstCertificates.SelectedRows)
                    {
                        _certificates.RemoveAt((int)row);
                    }
                    ReloadCertificates();
                }
            };
            this.BtnPrimaryImport.Activated += (object sender, EventArgs e) => {
            };

            this.BtnSecondaryImport.Activated += (object sender, EventArgs e) => {
            };
            this.TxtDomainName.Changed        += (object sender, EventArgs e) => {
                SetConnectionString();
            };

            this.ChkProtect.Activated += (object sender, EventArgs e) => {
                SetConnectionString();
            };
            this.RdoSpn.Activated += (object sender, EventArgs e) => {
                SetSpnControls();
            };
            BtnPrimaryImport.Enabled      = false;
            BtnSecondaryImport.Enabled    = false;
            this.TxtPrimaryUrl.Activated += (object sender, EventArgs e) =>
            {
                BtnPrimaryImport.Enabled = this.TxtPrimaryUrl.StringValue != null && this.TxtPrimaryUrl.StringValue.StartsWith("ldaps://");
            };
            this.TxtSecondaryConnection.Activated += (object sender, EventArgs e) =>
            {
                BtnSecondaryImport.Enabled = this.TxtSecondaryConnection.StringValue != null && this.TxtSecondaryConnection.StringValue.StartsWith("ldaps://");
            };
            BtnPrimaryImport.Activated += (object sender, EventArgs e) =>
            {
                ImportCertificates(TxtPrimaryUrl.StringValue);
            };
            BtnSecondaryImport.Activated += (object sender, EventArgs e) =>
            {
                ImportCertificates(TxtSecondaryConnection.StringValue);
            };
            if (IdentityProviderDto != null)
            {
                DtoToView();
            }
            else
            {
                IdentityProviderDto = new IdentityProviderDto();
            }
            this.BtnAdvanced.Activated += (object sender, EventArgs e) =>
            {
                var form = new ExternalDomainAdvancedSettingsController()
                {
                    IdentityProviderDto = new IdentityProviderDto
                    {
                        Schema        = IdentityProviderDto.Schema == null ? new Dictionary <string, SchemaObjectMappingDto>() :new Dictionary <string, SchemaObjectMappingDto>(IdentityProviderDto.Schema),
                        AttributesMap = IdentityProviderDto.AttributesMap == null ?  new Dictionary <string, string>() : new Dictionary <string, string>(IdentityProviderDto.AttributesMap),
                        BaseDnForNestedGroupsEnabled = IdentityProviderDto.BaseDnForNestedGroupsEnabled,
                        MatchingRuleInChainEnabled   = IdentityProviderDto.MatchingRuleInChainEnabled,
                        DirectGroupsSearchEnabled    = IdentityProviderDto.DirectGroupsSearchEnabled
                    }
                };
                var result = NSApplication.SharedApplication.RunModalForWindow(form.Window);

                if (result == 1)
                {
                    IdentityProviderDto.Schema        = GetSchema(form.IdentityProviderDto.Schema);
                    IdentityProviderDto.AttributesMap = new Dictionary <string, string>(form.IdentityProviderDto.AttributesMap);
                    IdentityProviderDto.BaseDnForNestedGroupsEnabled = form.IdentityProviderDto.BaseDnForNestedGroupsEnabled;
                    IdentityProviderDto.MatchingRuleInChainEnabled   = form.IdentityProviderDto.MatchingRuleInChainEnabled;
                    IdentityProviderDto.DirectGroupsSearchEnabled    = form.IdentityProviderDto.DirectGroupsSearchEnabled;
                }
            };
            SetSpnControls();
        }
Beispiel #25
0
 public ExternalDomainNode(string tenantName, IdentityProviderDto provider)
 {
     _tenantName      = tenantName;
     _provider        = provider;
     this.DisplayName = _provider.Name;
 }
Beispiel #26
0
        public async Task <IdentityProviderDto> CreateIdentityProvider(int accountId, IdentityProviderDto identityProviderDto)
        {
            var errors = new List <ValidationResult>();

            Utils.ValidateDto(identityProviderDto, errors);
            Utils.ThrowAggregateExceptionOnValidationErrors(errors);

            try
            {
                var account = (from a in _db.Accounts where a.AccountId == accountId select a).FirstOrDefault();
                if (account == null)
                {
                    throw new AccountNotFoundException($"An account with {nameof(AccountDto.AccountId)} = {accountId} could not be found");
                }

                if (account.IdentityProviders.Any(p => string.Equals(p.Name, identityProviderDto.Name, StringComparison.OrdinalIgnoreCase)))
                {
                    throw new MalformedAccountException($"An identity provider with the same name [{identityProviderDto.Name}] already exists.");
                }

                var newIdentityProvider = new IdentityProvider
                {
                    Name      = identityProviderDto.Name,
                    Account   = account,
                    AccountId = accountId
                };

                account.IdentityProviders.Add(newIdentityProvider);
                await _db.SaveChangesAsync();

                return(_mapper.Map <IdentityProviderDto>(newIdentityProvider));
            }
            catch (DbException e)
            {
                throw new PersistenceException($"An error occurred while creating the IdentityProvider ({nameof(accountId)} = {accountId}, {nameof(identityProviderDto)} = {JsonConvert.SerializeObject(identityProviderDto)})", e);
            }
        }