public async Task UpdateSettingsAsync(OpenIdClientSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var container = await _siteService.GetSiteSettingsAsync();

            container.Properties[nameof(OpenIdClientSettings)] = JObject.FromObject(settings);
            await _siteService.UpdateSiteSettingsAsync(container);
        }
        public Task <ImmutableArray <ValidationResult> > ValidateSettingsAsync(OpenIdClientSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var results = ImmutableArray.CreateBuilder <ValidationResult>();

            if (settings.Authority == null)
            {
                results.Add(new ValidationResult(T["The authority cannot be null or empty."], new[]
                {
                    nameof(settings.Authority)
                }));
            }
            else if (!settings.Authority.IsAbsoluteUri || !settings.Authority.IsWellFormedOriginalString())
            {
                results.Add(new ValidationResult(T["The authority must be a valid absolute URL."], new[]
                {
                    nameof(settings.Authority)
                }));
            }
            else if (!string.IsNullOrEmpty(settings.Authority.Query) || !string.IsNullOrEmpty(settings.Authority.Fragment))
            {
                results.Add(new ValidationResult(T["The authority cannot contain a query string or a fragment."], new[]
                {
                    nameof(settings.Authority)
                }));
            }

            if (string.IsNullOrEmpty(settings.ResponseType))
            {
                results.Add(new ValidationResult(T["The response type cannot be null or empty."], new[]
                {
                    nameof(settings.ResponseType)
                }));
            }
            else if (settings.ResponseType != OpenIdConnectResponseType.Code && settings.ResponseType != OpenIdConnectResponseType.CodeIdToken &&
                     settings.ResponseType != OpenIdConnectResponseType.CodeIdTokenToken && settings.ResponseType != OpenIdConnectResponseType.CodeToken &&
                     settings.ResponseType != OpenIdConnectResponseType.IdToken && settings.ResponseType != OpenIdConnectResponseType.IdTokenToken)
            {
                results.Add(new ValidationResult(T["Unknown response type ."], new[]
                {
                    nameof(settings.ResponseType)
                }));
            }

            if (string.IsNullOrEmpty(settings.ResponseMode))
            {
                results.Add(new ValidationResult(T["The response mode cannot be null or empty."], new[]
                {
                    nameof(settings.ResponseMode)
                }));
            }
            else if (settings.ResponseMode != OpenIdConnectResponseMode.FormPost && settings.ResponseMode != OpenIdConnectResponseMode.Fragment &&
                     settings.ResponseMode != OpenIdConnectResponseMode.Query)
            {
                results.Add(new ValidationResult(T["Unknown response mode."], new[]
                {
                    nameof(settings.ResponseMode)
                }));
            }



            return(Task.FromResult(results.ToImmutable()));
        }