Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: chrome/browser/io_thread.cc

Issue 1414313002: Allow dynamic updating of authentication policies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mcs_probe.cc Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/io_thread.h" 5 #include "chrome/browser/io_thread.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 : net_log_(net_log), 451 : net_log_(net_log),
452 #if defined(ENABLE_EXTENSIONS) 452 #if defined(ENABLE_EXTENSIONS)
453 extension_event_router_forwarder_(extension_event_router_forwarder), 453 extension_event_router_forwarder_(extension_event_router_forwarder),
454 #endif 454 #endif
455 globals_(NULL), 455 globals_(NULL),
456 is_spdy_disabled_by_policy_(false), 456 is_spdy_disabled_by_policy_(false),
457 is_quic_allowed_by_policy_(true), 457 is_quic_allowed_by_policy_(true),
458 creation_time_(base::TimeTicks::Now()), 458 creation_time_(base::TimeTicks::Now()),
459 weak_factory_(this) { 459 weak_factory_(this) {
460 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes); 460 auth_schemes_ = local_state->GetString(prefs::kAuthSchemes);
461 negotiate_disable_cname_lookup_ = local_state->GetBoolean( 461 negotiate_disable_cname_lookup_.Init(
462 prefs::kDisableAuthNegotiateCnameLookup); 462 prefs::kDisableAuthNegotiateCnameLookup, local_state,
463 negotiate_enable_port_ = local_state->GetBoolean( 463 base::Bind(&IOThread::UpdateNegotiateDisableCnameLookup,
464 prefs::kEnableAuthNegotiatePort); 464 weak_factory_.GetWeakPtr()));
465 auth_server_whitelist_ = local_state->GetString(prefs::kAuthServerWhitelist); 465 scoped_refptr<base::SingleThreadTaskRunner> io_thread_proxy =
466 auth_delegate_whitelist_ = local_state->GetString( 466 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
467 prefs::kAuthNegotiateDelegateWhitelist); 467 negotiate_disable_cname_lookup_.MoveToThread(io_thread_proxy);
468 negotiate_enable_port_.Init(prefs::kEnableAuthNegotiatePort, local_state,
469 base::Bind(&IOThread::UpdateNegotiateEnablePort,
470 weak_factory_.GetWeakPtr()));
471 negotiate_enable_port_.MoveToThread(io_thread_proxy);
472 auth_server_whitelist_.Init(
473 prefs::kAuthServerWhitelist, local_state,
474 base::Bind(&IOThread::UpdateSecurityManager, weak_factory_.GetWeakPtr()));
475 auth_server_whitelist_.MoveToThread(io_thread_proxy);
476 auth_delegate_whitelist_.Init(
477 prefs::kAuthNegotiateDelegateWhitelist, local_state,
478 base::Bind(&IOThread::UpdateSecurityManager, weak_factory_.GetWeakPtr()));
479 auth_delegate_whitelist_.MoveToThread(io_thread_proxy);
468 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName); 480 gssapi_library_name_ = local_state->GetString(prefs::kGSSAPILibraryName);
469 auth_android_negotiate_account_type_ = 481 auth_android_negotiate_account_type_.Init(
470 local_state->GetString(prefs::kAuthAndroidNegotiateAccountType); 482 prefs::kAuthAndroidNegotiateAccountType, local_state,
483 base::Bind(&IOThread::UpdateAndroidAuthNegotiateAccount,
484 weak_factory_.GetWeakPtr()));
485 auth_android_negotiate_account_type_.MoveToThread(io_thread_proxy);
471 pref_proxy_config_tracker_.reset( 486 pref_proxy_config_tracker_.reset(
472 ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState( 487 ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState(
473 local_state)); 488 local_state));
474 ChromeNetworkDelegate::InitializePrefsOnUIThread( 489 ChromeNetworkDelegate::InitializePrefsOnUIThread(
475 &system_enable_referrers_, 490 &system_enable_referrers_,
476 NULL, 491 NULL,
477 NULL, 492 NULL,
478 NULL, 493 NULL,
479 local_state); 494 local_state);
480 ssl_config_service_manager_.reset( 495 ssl_config_service_manager_.reset(
481 SSLConfigServiceManager::CreateDefaultManager(local_state)); 496 SSLConfigServiceManager::CreateDefaultManager(local_state));
482 497
483 base::Value* dns_client_enabled_default = new base::FundamentalValue( 498 base::Value* dns_client_enabled_default = new base::FundamentalValue(
484 chrome_browser_net::ConfigureAsyncDnsFieldTrial()); 499 chrome_browser_net::ConfigureAsyncDnsFieldTrial());
485 local_state->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled, 500 local_state->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
486 dns_client_enabled_default); 501 dns_client_enabled_default);
487 chrome_browser_net::LogAsyncDnsPrefSource( 502 chrome_browser_net::LogAsyncDnsPrefSource(
488 local_state->FindPreference(prefs::kBuiltInDnsClientEnabled)); 503 local_state->FindPreference(prefs::kBuiltInDnsClientEnabled));
489 504
490 dns_client_enabled_.Init(prefs::kBuiltInDnsClientEnabled, 505 dns_client_enabled_.Init(prefs::kBuiltInDnsClientEnabled,
491 local_state, 506 local_state,
492 base::Bind(&IOThread::UpdateDnsClientEnabled, 507 base::Bind(&IOThread::UpdateDnsClientEnabled,
493 base::Unretained(this))); 508 base::Unretained(this)));
494 dns_client_enabled_.MoveToThread( 509 dns_client_enabled_.MoveToThread(io_thread_proxy);
495 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
496 510
497 quick_check_enabled_.Init(prefs::kQuickCheckEnabled, 511 quick_check_enabled_.Init(prefs::kQuickCheckEnabled,
498 local_state); 512 local_state);
499 quick_check_enabled_.MoveToThread( 513 quick_check_enabled_.MoveToThread(io_thread_proxy);
500 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
501 514
502 #if defined(ENABLE_CONFIGURATION_POLICY) 515 #if defined(ENABLE_CONFIGURATION_POLICY)
503 is_spdy_disabled_by_policy_ = policy_service->GetPolicies( 516 is_spdy_disabled_by_policy_ = policy_service->GetPolicies(
504 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string())).Get( 517 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string())).Get(
505 policy::key::kDisableSpdy) != NULL; 518 policy::key::kDisableSpdy) != NULL;
506 519
507 const base::Value* value = policy_service->GetPolicies( 520 const base::Value* value = policy_service->GetPolicies(
508 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, 521 policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME,
509 std::string())).GetValue(policy::key::kQuicAllowed); 522 std::string())).GetValue(policy::key::kQuicAllowed);
510 if (value) 523 if (value)
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 724 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
712 // is fixed. 725 // is fixed.
713 tracked_objects::ScopedTracker tracking_profile10( 726 tracked_objects::ScopedTracker tracking_profile10(
714 FROM_HERE_WITH_EXPLICIT_FUNCTION( 727 FROM_HERE_WITH_EXPLICIT_FUNCTION(
715 "466432 IOThread::InitAsync::CertPolicyEnforcer")); 728 "466432 IOThread::InitAsync::CertPolicyEnforcer"));
716 net::CertPolicyEnforcer* policy_enforcer = new net::CertPolicyEnforcer; 729 net::CertPolicyEnforcer* policy_enforcer = new net::CertPolicyEnforcer;
717 globals_->cert_policy_enforcer.reset(policy_enforcer); 730 globals_->cert_policy_enforcer.reset(policy_enforcer);
718 731
719 globals_->ssl_config_service = GetSSLConfigService(); 732 globals_->ssl_config_service = GetSSLConfigService();
720 733
721 globals_->http_auth_handler_factory.reset(CreateDefaultAuthHandlerFactory( 734 CreateDefaultAuthHandlerFactory();
722 globals_->host_resolver.get()));
723 globals_->http_server_properties.reset(new net::HttpServerPropertiesImpl()); 735 globals_->http_server_properties.reset(new net::HttpServerPropertiesImpl());
724 // For the ProxyScriptFetcher, we use a direct ProxyService. 736 // For the ProxyScriptFetcher, we use a direct ProxyService.
725 globals_->proxy_script_fetcher_proxy_service = 737 globals_->proxy_script_fetcher_proxy_service =
726 net::ProxyService::CreateDirectWithNetLog(net_log_); 738 net::ProxyService::CreateDirectWithNetLog(net_log_);
727 // In-memory cookie store. 739 // In-memory cookie store.
728 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 740 // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432
729 // is fixed. 741 // is fixed.
730 tracked_objects::ScopedTracker tracking_profile11( 742 tracked_objects::ScopedTracker tracking_profile11(
731 FROM_HERE_WITH_EXPLICIT_FUNCTION( 743 FROM_HERE_WITH_EXPLICIT_FUNCTION(
732 "466432 IOThread::InitAsync::CreateCookieStore::Start")); 744 "466432 IOThread::InitAsync::CreateCookieStore::Start"));
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType, 986 registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType,
975 std::string()); 987 std::string());
976 registry->RegisterStringPref( 988 registry->RegisterStringPref(
977 data_reduction_proxy::prefs::kDataReductionProxy, std::string()); 989 data_reduction_proxy::prefs::kDataReductionProxy, std::string());
978 registry->RegisterBooleanPref(prefs::kEnableReferrers, true); 990 registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
979 data_reduction_proxy::RegisterPrefs(registry); 991 data_reduction_proxy::RegisterPrefs(registry);
980 registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true); 992 registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
981 registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true); 993 registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true);
982 } 994 }
983 995
984 net::HttpAuthHandlerFactory* IOThread::CreateDefaultAuthHandlerFactory( 996 void IOThread::UpdateSecurityManager() {
985 net::HostResolver* resolver) {
986 net::HttpAuthFilterWhitelist* auth_filter_default_credentials = NULL; 997 net::HttpAuthFilterWhitelist* auth_filter_default_credentials = NULL;
987 if (!auth_server_whitelist_.empty()) { 998 std::string server_whitelist = auth_server_whitelist_.GetValue();
999 if (!server_whitelist.empty()) {
988 auth_filter_default_credentials = 1000 auth_filter_default_credentials =
989 new net::HttpAuthFilterWhitelist(auth_server_whitelist_); 1001 new net::HttpAuthFilterWhitelist(server_whitelist);
990 } 1002 }
991 net::HttpAuthFilterWhitelist* auth_filter_delegate = NULL; 1003 net::HttpAuthFilterWhitelist* auth_filter_delegate = NULL;
992 if (!auth_delegate_whitelist_.empty()) { 1004 std::string delegate_whitelist = auth_delegate_whitelist_.GetValue();
993 auth_filter_delegate = 1005 if (!delegate_whitelist.empty())
994 new net::HttpAuthFilterWhitelist(auth_delegate_whitelist_); 1006 auth_filter_delegate = new net::HttpAuthFilterWhitelist(delegate_whitelist);
995 }
996 globals_->url_security_manager.reset( 1007 globals_->url_security_manager.reset(
asanka 2015/10/26 15:11:54 This isn't safe anymore since that UpdateSecurityM
aberent 2015/10/27 19:34:13 Fixed by keeping the security manager and updating
997 net::URLSecurityManager::Create(auth_filter_default_credentials, 1008 net::URLSecurityManager::Create(auth_filter_default_credentials,
998 auth_filter_delegate)); 1009 auth_filter_delegate));
1010 globals_->http_auth_handler_factory->SetSecurityManager(
1011 globals_->url_security_manager.get());
1012 }
1013
1014 void IOThread::UpdateAndroidAuthNegotiateAccount() {
1015 globals_->http_auth_handler_factory->SetAndroidAuthNegotiateAccountType(
1016 make_scoped_ptr(
1017 new std::string(auth_android_negotiate_account_type_.GetValue())));
1018 }
1019
1020 void IOThread::UpdateNegotiateDisableCnameLookup() {
1021 globals_->http_auth_handler_factory->SetNegotiateDisableCnameLookup(
1022 negotiate_disable_cname_lookup_.GetValue());
1023 }
1024
1025 void IOThread::UpdateNegotiateEnablePort() {
1026 globals_->http_auth_handler_factory->SetNegotiateEnablePort(
1027 negotiate_enable_port_.GetValue());
1028 }
1029
1030 void IOThread::CreateDefaultAuthHandlerFactory() {
999 std::vector<std::string> supported_schemes = base::SplitString( 1031 std::vector<std::string> supported_schemes = base::SplitString(
1000 auth_schemes_, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 1032 auth_schemes_, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
1001 1033 globals_->http_auth_handler_factory.reset(
1002 scoped_ptr<net::HttpAuthHandlerRegistryFactory> registry_factory( 1034 net::HttpAuthHandlerRegistryFactory::Create(supported_schemes,
1003 net::HttpAuthHandlerRegistryFactory::Create( 1035 globals_->host_resolver.get(),
1004 supported_schemes, globals_->url_security_manager.get(), resolver, 1036 gssapi_library_name_));
1005 gssapi_library_name_, auth_android_negotiate_account_type_, 1037 UpdateSecurityManager();
1006 negotiate_disable_cname_lookup_, negotiate_enable_port_)); 1038 UpdateAndroidAuthNegotiateAccount();
1007 return registry_factory.release(); 1039 UpdateNegotiateDisableCnameLookup();
1040 UpdateNegotiateEnablePort();
1008 } 1041 }
1009 1042
1010 void IOThread::ClearHostCache() { 1043 void IOThread::ClearHostCache() {
1011 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1044 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1012 1045
1013 net::HostCache* host_cache = globals_->host_resolver->GetHostCache(); 1046 net::HostCache* host_cache = globals_->host_resolver->GetHostCache();
1014 if (host_cache) 1047 if (host_cache)
1015 host_cache->clear(); 1048 host_cache->clear();
1016 } 1049 }
1017 1050
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 globals->proxy_script_fetcher_url_request_job_factory = job_factory.Pass(); 1664 globals->proxy_script_fetcher_url_request_job_factory = job_factory.Pass();
1632 1665
1633 context->set_job_factory( 1666 context->set_job_factory(
1634 globals->proxy_script_fetcher_url_request_job_factory.get()); 1667 globals->proxy_script_fetcher_url_request_job_factory.get());
1635 1668
1636 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the 1669 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the
1637 // system URLRequestContext too. There's no reason this should be tied to a 1670 // system URLRequestContext too. There's no reason this should be tied to a
1638 // profile. 1671 // profile.
1639 return context; 1672 return context;
1640 } 1673 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698