[auth] Delete fuchsia::Modular::auth::TokenProvider instances.
This change:
* Deletes |token_provider.fidl| and all its corresponding instances are removed
from the modular and ledger codebases.
* Removes support to old deprecated GetAuthenticationContext interface.
* Replaces all V2 method names to the original names.
* P2P sync code is updated with support to only the fuchsia::auth::TokenManager
version.
TESTED = CQ, Manual login, Guest login,
fx run-test peridot_public_lib_unittests,
fx run-test peridot_lib_unittests,
fx shell /pkgfs/packages/modular_tests/0/test/run_modular_tests.sh
Change-Id: Ib1ff6215b5e35dcc0a13dcbebe4d4eac479a2275
diff --git a/bin/agents/clipboard/meta/clipboard_agent.cmx b/bin/agents/clipboard/meta/clipboard_agent.cmx
index 6930e41..ea5cd3a 100644
--- a/bin/agents/clipboard/meta/clipboard_agent.cmx
+++ b/bin/agents/clipboard/meta/clipboard_agent.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.modular.AgentContext",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
diff --git a/bin/basemgr/basemgr_impl.cc b/bin/basemgr/basemgr_impl.cc
index 6dc2ebc..2d122a1 100644
--- a/bin/basemgr/basemgr_impl.cc
+++ b/bin/basemgr/basemgr_impl.cc
@@ -48,7 +48,6 @@
on_shutdown_(std::move(on_shutdown)),
user_provider_impl_("UserProviderImpl"),
base_shell_context_binding_(this),
- account_provider_context_binding_(this),
authentication_context_provider_binding_(this) {
UpdateSessionShellConfig();
@@ -164,25 +163,6 @@
return did_stop;
}
-FuturePtr<> BasemgrImpl::StopAccountProvider() {
- if (!account_provider_) {
- FXL_DLOG(INFO) << "StopAccountProvider() called when already stopped";
-
- return Future<>::CreateCompleted("StopAccountProvider::Completed");
- }
-
- auto did_stop = Future<>::Create("StopAccountProvider");
-
- account_provider_->Teardown(kBasicTimeout, [did_stop, this] {
- FXL_DLOG(INFO) << "- fuchsia::modular::auth::AccountProvider down";
-
- account_provider_.release();
- did_stop->Complete();
- });
-
- return did_stop;
-}
-
FuturePtr<> BasemgrImpl::StopTokenManagerFactoryApp() {
if (!token_manager_factory_app_) {
FXL_DLOG(INFO)
@@ -221,35 +201,19 @@
}
// Start OAuth Token Manager App.
+ token_manager_factory_app_.release();
fuchsia::modular::AppConfig token_manager_config;
- if (settings_.enable_garnet_token_manager) {
- token_manager_config.url = "token_manager_factory";
- FXL_DLOG(INFO) << "Initialzing token_manager_factory_app()";
- token_manager_factory_app_ =
- std::make_unique<AppClient<fuchsia::modular::Lifecycle>>(
- launcher_, CloneStruct(token_manager_config));
- token_manager_factory_app_->services().ConnectToService(
- token_manager_factory_.NewRequest());
- } else {
- token_manager_config.url = settings_.account_provider.url;
- token_manager_factory_app_.release();
- }
-
- account_provider_ =
- std::make_unique<AppClient<fuchsia::modular::auth::AccountProvider>>(
- launcher_, std::move(token_manager_config),
- "/data/modular/ACCOUNT_MANAGER");
- account_provider_->SetAppErrorHandler(
- [] { FXL_CHECK(false) << "Token manager crashed. Stopping basemgr."; });
- account_provider_->primary_service()->Initialize(
- account_provider_context_binding_.NewBinding());
+ token_manager_config.url = settings_.account_provider.url;
+ token_manager_factory_app_ =
+ std::make_unique<AppClient<fuchsia::modular::Lifecycle>>(
+ launcher_, CloneStruct(token_manager_config));
+ token_manager_factory_app_->services().ConnectToService(
+ token_manager_factory_.NewRequest());
user_provider_impl_.reset(new UserProviderImpl(
launcher_, settings_.sessionmgr, session_shell_config_,
- settings_.story_shell, account_provider_->primary_service().get(),
- token_manager_factory_.get(),
- authentication_context_provider_binding_.NewBinding().Bind(),
- settings_.enable_garnet_token_manager, this));
+ settings_.story_shell, token_manager_factory_.get(),
+ authentication_context_provider_binding_.NewBinding().Bind(), this));
ShowSetupOrLogin();
@@ -287,8 +251,6 @@
// to.
user_provider_impl_.Teardown(kUserProviderTimeout, [this] {
FXL_DLOG(INFO) << "- fuchsia::modular::UserProvider down";
- StopAccountProvider()->Then([this] {
- FXL_DLOG(INFO) << "- fuchsia::modular::auth::AccountProvider down";
StopTokenManagerFactoryApp()->Then([this] {
FXL_DLOG(INFO) << "- fuchsia::auth::TokenManagerFactory down";
StopBaseShell()->Then([this] {
@@ -296,21 +258,9 @@
on_shutdown_();
});
});
- });
});
}
-void BasemgrImpl::GetAuthenticationContext(
- fidl::StringPtr account_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::AuthenticationContext>
- request) {
- // TODO(MI4-1107): Basemgr needs to implement AuthenticationContext
- // itself, and proxy calls for StartOverlay & StopOverlay to BaseShell,
- // starting it if it's not running yet.
- FXL_CHECK(base_shell_);
- base_shell_->GetAuthenticationContext(account_id, std::move(request));
-}
-
void BasemgrImpl::GetAuthenticationUIContext(
fidl::InterfaceRequest<fuchsia::auth::AuthenticationUIContext> request) {
// TODO(MI4-1107): Basemgr needs to implement AuthenticationUIContext
diff --git a/bin/basemgr/basemgr_impl.h b/bin/basemgr/basemgr_impl.h
index 64aa95b..6f4ad89 100644
--- a/bin/basemgr/basemgr_impl.h
+++ b/bin/basemgr/basemgr_impl.h
@@ -40,7 +40,6 @@
// 3) Manages the lifecycle of sessions, represented as |sessionmgr| processes.
class BasemgrImpl : fuchsia::modular::BaseShellContext,
fuchsia::auth::AuthenticationContextProvider,
- fuchsia::modular::auth::AccountProviderContext,
fuchsia::ui::policy::KeyboardCaptureListenerHACK,
modular::UserProviderImpl::Delegate {
public:
@@ -73,8 +72,6 @@
FuturePtr<> StopBaseShell();
- FuturePtr<> StopAccountProvider();
-
FuturePtr<> StopTokenManagerFactoryApp();
void Start();
@@ -86,12 +83,6 @@
// |fuchsia::modular::BaseShellContext|
void Shutdown() override;
- // |AccountProviderContext|
- void GetAuthenticationContext(
- fidl::StringPtr account_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::AuthenticationContext>
- request) override;
-
// |AuthenticationContextProvider|
void GetAuthenticationUIContext(
fidl::InterfaceRequest<fuchsia::auth::AuthenticationUIContext> request)
@@ -155,13 +146,9 @@
AsyncHolder<UserProviderImpl> user_provider_impl_;
fidl::Binding<fuchsia::modular::BaseShellContext> base_shell_context_binding_;
- fidl::Binding<fuchsia::modular::auth::AccountProviderContext>
- account_provider_context_binding_;
fidl::Binding<fuchsia::auth::AuthenticationContextProvider>
authentication_context_provider_binding_;
- std::unique_ptr<AppClient<fuchsia::modular::auth::AccountProvider>>
- account_provider_;
std::unique_ptr<AppClient<fuchsia::modular::Lifecycle>>
token_manager_factory_app_;
fuchsia::auth::TokenManagerFactoryPtr token_manager_factory_;
diff --git a/bin/basemgr/basemgr_settings.cc b/bin/basemgr/basemgr_settings.cc
index 9770a20..d358b9a 100644
--- a/bin/basemgr/basemgr_settings.cc
+++ b/bin/basemgr/basemgr_settings.cc
@@ -25,13 +25,12 @@
session_shell.url = command_line.GetOptionValueWithDefault(
"session_shell", "ermine_session_shell");
account_provider.url = command_line.GetOptionValueWithDefault(
- "account_provider", "oauth_token_manager");
+ "account_provider", "token_manager_factory");
disable_statistics = command_line.HasOption("disable_statistics");
no_minfs = command_line.HasOption("no_minfs");
test = command_line.HasOption("test");
enable_presenter = command_line.HasOption("enable_presenter");
- enable_garnet_token_manager = true;
ParseShellArgs(command_line.GetOptionValueWithDefault("base_shell_args", ""),
&base_shell.args);
@@ -70,7 +69,6 @@
--no_minfs
--test
--enable_presenter
- --enable_garnet_token_manager
DEVICE_NAME: Name which session shell uses to identify this device.
BASE_SHELL: URL of the base shell to run.
Defaults to "userpicker_base_shell".
diff --git a/bin/basemgr/basemgr_settings.h b/bin/basemgr/basemgr_settings.h
index b79249f..0cfe6cd 100644
--- a/bin/basemgr/basemgr_settings.h
+++ b/bin/basemgr/basemgr_settings.h
@@ -32,7 +32,6 @@
bool no_minfs;
bool test;
bool enable_presenter;
- bool enable_garnet_token_manager;
private:
void ParseShellArgs(const std::string& value,
diff --git a/bin/basemgr/dev_base_shell.cc b/bin/basemgr/dev_base_shell.cc
index fd34bde..f01490c 100644
--- a/bin/basemgr/dev_base_shell.cc
+++ b/bin/basemgr/dev_base_shell.cc
@@ -124,15 +124,6 @@
}
// |fuchsia::modular::BaseShell|
- void GetAuthenticationContext(
- fidl::StringPtr /*username*/,
- fidl::InterfaceRequest<
- fuchsia::modular::auth::AuthenticationContext> /*request*/) override {
- FXL_LOG(INFO) << "fuchsia::modular::BaseShell::GetAuthenticationContext()"
- " is unimplemented.";
- }
-
- // |fuchsia::modular::BaseShell|
void GetAuthenticationUIContext(
fidl::InterfaceRequest<
fuchsia::auth::AuthenticationUIContext> /*request*/) override {
diff --git a/bin/basemgr/user_controller_impl.cc b/bin/basemgr/user_controller_impl.cc
index ebe7fdf..1dc48d9 100644
--- a/bin/basemgr/user_controller_impl.cc
+++ b/bin/basemgr/user_controller_impl.cc
@@ -21,8 +21,6 @@
fuchsia::modular::AppConfig sessionmgr,
fuchsia::modular::AppConfig session_shell,
fuchsia::modular::AppConfig story_shell,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fuchsia::modular::auth::AccountPtr account,
@@ -61,9 +59,8 @@
sessionmgr_app_->services().ConnectToService(sessionmgr_.NewRequest());
sessionmgr_->Initialize(
std::move(account), std::move(session_shell), std::move(story_shell),
- std::move(token_provider_factory), std::move(ledger_token_manager),
- std::move(agent_token_manager), user_context_binding_.NewBinding(),
- std::move(view_owner_request));
+ std::move(ledger_token_manager), std::move(agent_token_manager),
+ user_context_binding_.NewBinding(), std::move(view_owner_request));
sessionmgr_app_->SetAppErrorHandler([this] {
FXL_LOG(ERROR) << "Sessionmgr seems to have crashed unexpectedly. "
diff --git a/bin/basemgr/user_controller_impl.h b/bin/basemgr/user_controller_impl.h
index 7bc3da9..1af0f6a 100644
--- a/bin/basemgr/user_controller_impl.h
+++ b/bin/basemgr/user_controller_impl.h
@@ -44,8 +44,6 @@
fuchsia::modular::AppConfig sessionmgr,
fuchsia::modular::AppConfig session_shell,
fuchsia::modular::AppConfig story_shell,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fuchsia::modular::auth::AccountPtr account,
diff --git a/bin/basemgr/user_controller_impl_unittest.cc b/bin/basemgr/user_controller_impl_unittest.cc
index bd5b0e2..ff99304 100644
--- a/bin/basemgr/user_controller_impl_unittest.cc
+++ b/bin/basemgr/user_controller_impl_unittest.cc
@@ -17,36 +17,6 @@
using ::component::testing::FakeLauncher;
using UserControllerImplTest = gtest::TestLoopFixture;
-TEST_F(UserControllerImplTest, StartSessionmgrWithTokenProviderFactory) {
- FakeLauncher launcher;
- std::string url = "test_url_string";
- fuchsia::modular::AppConfig app_config;
- app_config.url = url;
-
- bool callback_called = false;
- launcher.RegisterComponent(
- url, [&callback_called](
- fuchsia::sys::LaunchInfo launch_info,
- fidl::InterfaceRequest<fuchsia::sys::ComponentController> ctrl) {
- callback_called = true;
- });
-
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory;
- fuchsia::auth::TokenManagerPtr ledger_token_manager;
- fuchsia::auth::TokenManagerPtr agent_token_manager;
- fuchsia::modular::UserControllerPtr user_controller;
-
- UserControllerImpl impl(
- &launcher, CloneStruct(app_config), CloneStruct(app_config),
- CloneStruct(app_config), std::move(token_provider_factory),
- std::move(ledger_token_manager), std::move(agent_token_manager),
- nullptr /* account */, nullptr /* view_owner_request */,
- nullptr /* base_shell_services */, user_controller.NewRequest(),
- nullptr /* done_callback */);
-
- EXPECT_TRUE(callback_called);
-}
-
TEST_F(UserControllerImplTest, StartSessionmgrWithTokenManagers) {
FakeLauncher launcher;
std::string url = "test_url_string";
@@ -61,18 +31,16 @@
callback_called = true;
});
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory;
fuchsia::auth::TokenManagerPtr ledger_token_manager;
fuchsia::auth::TokenManagerPtr agent_token_manager;
fuchsia::modular::UserControllerPtr user_controller;
UserControllerImpl impl(
&launcher, CloneStruct(app_config), CloneStruct(app_config),
- CloneStruct(app_config), std::move(token_provider_factory),
- std::move(ledger_token_manager), std::move(agent_token_manager),
- nullptr /* account */, nullptr /* view_owner_request */,
- nullptr /* base_shell_services */, user_controller.NewRequest(),
- nullptr /* done_callback */);
+ CloneStruct(app_config), std::move(ledger_token_manager),
+ std::move(agent_token_manager), nullptr /* account */,
+ nullptr /* view_owner_request */, nullptr /* base_shell_services */,
+ user_controller.NewRequest(), nullptr /* done_callback */);
EXPECT_TRUE(callback_called);
}
@@ -92,7 +60,6 @@
return;
});
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory;
fuchsia::auth::TokenManagerPtr ledger_token_manager;
fuchsia::auth::TokenManagerPtr agent_token_manager;
fuchsia::modular::UserControllerPtr user_controller;
@@ -100,10 +67,10 @@
bool done_callback_called = false;
UserControllerImpl impl(
&launcher, CloneStruct(app_config), CloneStruct(app_config),
- CloneStruct(app_config), std::move(token_provider_factory),
- std::move(ledger_token_manager), std::move(agent_token_manager),
- nullptr /* account */, nullptr /* view_owner_request */,
- nullptr /* base_shell_services */, user_controller.NewRequest(),
+ CloneStruct(app_config), std::move(ledger_token_manager),
+ std::move(agent_token_manager), nullptr /* account */,
+ nullptr /* view_owner_request */, nullptr /* base_shell_services */,
+ user_controller.NewRequest(),
/* done_callback = */ [&done_callback_called](UserControllerImpl*) {
done_callback_called = true;
});
diff --git a/bin/basemgr/user_provider_impl.cc b/bin/basemgr/user_provider_impl.cc
index f8b9d60..7b9475a 100644
--- a/bin/basemgr/user_provider_impl.cc
+++ b/bin/basemgr/user_provider_impl.cc
@@ -113,18 +113,15 @@
const fuchsia::modular::AppConfig& sessionmgr,
const fuchsia::modular::AppConfig& session_shell,
const fuchsia::modular::AppConfig& story_shell,
- fuchsia::modular::auth::AccountProvider* account_provider,
fuchsia::auth::TokenManagerFactory* token_manager_factory,
fuchsia::auth::AuthenticationContextProviderPtr
authentication_context_provider,
- bool use_token_manager_factory, Delegate* const delegate)
+ Delegate* const delegate)
: launcher_(launcher),
sessionmgr_(sessionmgr),
session_shell_(session_shell),
story_shell_(story_shell),
- account_provider_(account_provider),
token_manager_factory_(token_manager_factory),
- use_token_manager_factory_(use_token_manager_factory),
authentication_context_provider_(
std::move(authentication_context_provider)),
delegate_(delegate),
@@ -230,63 +227,6 @@
void UserProviderImpl::AddUser(
fuchsia::modular::auth::IdentityProvider identity_provider,
AddUserCallback callback) {
- if (!use_token_manager_factory_) {
- AddUserV1(identity_provider, std::move(callback));
- } else {
- AddUserV2(identity_provider, std::move(callback));
- }
-}
-
-void UserProviderImpl::RemoveUser(fidl::StringPtr account_id,
- RemoveUserCallback callback) {
- fuchsia::modular::auth::AccountPtr account;
- if (users_storage_) {
- for (const auto* user : *users_storage_->users()) {
- if (user->id()->str() == account_id) {
- account = Convert(user);
- }
- }
- }
-
- if (!account) {
- callback("User not found.");
- return;
- }
-
- if (!use_token_manager_factory_) {
- RemoveUserV1(std::move(account), std::move(callback));
- } else {
- RemoveUserV2(std::move(account), std::move(callback));
- }
-}
-
-void UserProviderImpl::AddUserV1(
- const fuchsia::modular::auth::IdentityProvider identity_provider,
- AddUserCallback callback) {
- FXL_DCHECK(account_provider_);
-
- account_provider_->AddAccount(
- identity_provider, [this, identity_provider, callback](
- fuchsia::modular::auth::AccountPtr account,
- fidl::StringPtr error_code) {
- if (!account) {
- callback(nullptr, error_code);
- return;
- }
-
- std::string error;
- if (!AddUserToAccountsDB(account.get(), &error)) {
- callback(nullptr, error);
- return;
- }
-
- callback(std::move(account), error_code);
- });
-}
-
-void UserProviderImpl::AddUserV2(
- const fuchsia::modular::auth::IdentityProvider identity_provider,
- AddUserCallback callback) {
FXL_DCHECK(token_manager_factory_);
// Creating a new user, the initial bootstrapping will be done by
@@ -350,6 +290,25 @@
});
}
+void UserProviderImpl::RemoveUser(fidl::StringPtr account_id,
+ RemoveUserCallback callback) {
+ fuchsia::modular::auth::AccountPtr account;
+ if (users_storage_) {
+ for (const auto* user : *users_storage_->users()) {
+ if (user->id()->str() == account_id) {
+ account = Convert(user);
+ }
+ }
+ }
+
+ if (!account) {
+ callback("User not found.");
+ return;
+ }
+
+ RemoveUserInternal(std::move(account), std::move(callback));
+}
+
bool UserProviderImpl::AddUserToAccountsDB(
const fuchsia::modular::auth::Account* account, std::string* error) {
FXL_DCHECK(account);
@@ -401,36 +360,8 @@
return WriteUsersDb(new_serialized_users, error);
}
-void UserProviderImpl::RemoveUserV1(fuchsia::modular::auth::AccountPtr account,
- RemoveUserCallback callback) {
- FXL_DCHECK(account);
- FXL_DCHECK(account_provider_);
-
- FXL_DLOG(INFO) << "Removing user account :" << account->id;
-
- auto account_id = account->id;
- account_provider_->RemoveAccount(
- std::move(*account), false /* disable single logout*/,
- [this, account_id, callback](fuchsia::modular::auth::AuthErr auth_err) {
- if (auth_err.status != fuchsia::modular::auth::Status::OK) {
- FXL_LOG(ERROR) << "Error from RemoveAccount(): " << auth_err.message;
- callback(auth_err.message);
- return;
- }
-
- std::string error;
- if (!RemoveUserFromAccountsDB(account_id, &error)) {
- FXL_LOG(ERROR) << "Error in updating user database: " << error;
- callback(error);
- return;
- }
-
- callback(""); // success
- });
-}
-
-void UserProviderImpl::RemoveUserV2(fuchsia::modular::auth::AccountPtr account,
- RemoveUserCallback callback) {
+void UserProviderImpl::RemoveUserInternal(
+ fuchsia::modular::auth::AccountPtr account, RemoveUserCallback callback) {
FXL_DCHECK(account);
auto account_id = account->id;
@@ -561,21 +492,14 @@
auto account_id = account ? account->id.get() : GetRandomId();
FXL_DLOG(INFO) << "Login() User:" << account_id;
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory;
- fuchsia::auth::TokenManagerPtr ledger_token_manager;
- fuchsia::auth::TokenManagerPtr agent_token_manager;
- if (!use_token_manager_factory_) {
- // Get |fuchsia::modular::auth::TokenProviderFactory| for this user.
- account_provider_->GetTokenProviderFactory(
- account_id, token_provider_factory.NewRequest());
- } else {
// Instead of passing token_manager_factory all the way to agents and
// runners with all auth provider configurations, send two
// |fuchsia::auth::TokenManager| handles, one for ledger and one for agents
// for the given user account |account_id|.
- ledger_token_manager = CreateTokenManager(account_id);
- agent_token_manager = CreateTokenManager(account_id);
- }
+ fuchsia::auth::TokenManagerPtr ledger_token_manager =
+ CreateTokenManager(account_id);
+ fuchsia::auth::TokenManagerPtr agent_token_manager =
+ CreateTokenManager(account_id);
auto view_owner =
delegate_->GetSessionShellViewOwner(std::move(params.view_owner));
@@ -584,7 +508,7 @@
auto controller = std::make_unique<UserControllerImpl>(
launcher_, CloneStruct(sessionmgr_), CloneStruct(session_shell_),
- CloneStruct(story_shell_), std::move(token_provider_factory),
+ CloneStruct(story_shell_),
std::move(ledger_token_manager), std::move(agent_token_manager),
std::move(account), std::move(view_owner), std::move(service_provider),
std::move(params.user_controller), [this](UserControllerImpl* c) {
diff --git a/bin/basemgr/user_provider_impl.h b/bin/basemgr/user_provider_impl.h
index 7cc9401..a7839ad 100644
--- a/bin/basemgr/user_provider_impl.h
+++ b/bin/basemgr/user_provider_impl.h
@@ -61,10 +61,9 @@
const fuchsia::modular::AppConfig& sessionmgr,
const fuchsia::modular::AppConfig& session_shell,
const fuchsia::modular::AppConfig& story_shell,
- fuchsia::modular::auth::AccountProvider* account_provider,
fuchsia::auth::TokenManagerFactory* token_manager_factory,
fuchsia::auth::AuthenticationContextProviderPtr auth_context_provider,
- bool use_token_manager_factory, Delegate* const delegate);
+ Delegate* const delegate);
void Connect(fidl::InterfaceRequest<fuchsia::modular::UserProvider> request);
@@ -96,24 +95,6 @@
fidl::InterfaceRequest<fuchsia::auth::AuthenticationUIContext> request)
override;
- // Add user using |fuchsia::modular::auth::AccountProvider| interface.
- void AddUserV1(
- const fuchsia::modular::auth::IdentityProvider identity_provider,
- AddUserCallback callback);
-
- // Add user using |fuchsia::auth::TokenManagerFactory| interface.
- void AddUserV2(
- const fuchsia::modular::auth::IdentityProvider identity_provider,
- AddUserCallback callback);
-
- // Remove user using |fuchsia::modular::auth::AccountProvider| interface.
- void RemoveUserV1(fuchsia::modular::auth::AccountPtr account,
- RemoveUserCallback callback);
-
- // Remove user using |fuchsia::auth::TokenManagerFactory| interface.
- void RemoveUserV2(fuchsia::modular::auth::AccountPtr account,
- RemoveUserCallback callback);
-
// Returns a new |fuchsia::auth::TokenManager| handle for the given user
// account |account_id|.
fuchsia::auth::TokenManagerPtr CreateTokenManager(fidl::StringPtr account_id);
@@ -123,7 +104,8 @@
bool RemoveUserFromAccountsDB(fidl::StringPtr account_id, std::string* error);
bool WriteUsersDb(const std::string& serialized_users, std::string* error);
bool Parse(const std::string& serialized_users);
-
+ void RemoveUserInternal(fuchsia::modular::auth::AccountPtr account,
+ RemoveUserCallback callback);
void LoginInternal(fuchsia::modular::auth::AccountPtr account,
fuchsia::modular::UserLoginParams params);
@@ -134,11 +116,8 @@
const fuchsia::modular::AppConfig&
session_shell_; // Neither owned nor copied.
const fuchsia::modular::AppConfig& story_shell_; // Neither owned nor copied.
- fuchsia::modular::auth::AccountProvider* const
- account_provider_; // Neither owned nor copied.
fuchsia::auth::TokenManagerFactory* const
token_manager_factory_; // Neither owned nor copied.
- bool use_token_manager_factory_ = false;
fuchsia::auth::AuthenticationContextProviderPtr
authentication_context_provider_;
Delegate* const delegate_; // Neither owned nor copied.
diff --git a/bin/cloud_provider_firestore/app/factory_impl.cc b/bin/cloud_provider_firestore/app/factory_impl.cc
index a45ad4a..46fb4e4 100644
--- a/bin/cloud_provider_firestore/app/factory_impl.cc
+++ b/bin/cloud_provider_firestore/app/factory_impl.cc
@@ -55,42 +55,19 @@
void FactoryImpl::GetCloudProvider(
Config config,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProvider> token_provider,
- fidl::InterfaceRequest<cloud_provider::CloudProvider>
- cloud_provider_request,
- GetCloudProviderCallback callback) {
- auto firebase_auth =
- GetFirebaseAuth(token_provider.Bind(), nullptr, config.api_key);
-
- GetFirebaseCloudProvider(std::move(config), std::move(firebase_auth),
- std::move(cloud_provider_request),
- std::move(callback));
-}
-
-void FactoryImpl::GetCloudProviderV2(
- Config config,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> token_manager,
fidl::InterfaceRequest<cloud_provider::CloudProvider>
cloud_provider_request,
- GetCloudProviderV2Callback callback) {
- auto firebase_auth =
- GetFirebaseAuth(nullptr, token_manager.Bind(), config.api_key);
+ GetCloudProviderCallback callback) {
+ auto firebase_auth = std::make_unique<firebase_auth::FirebaseAuthImpl>(
+ GetFirebaseAuthConfig(config.api_key, cobalt_client_name_), dispatcher_,
+ random_, token_manager.Bind(), startup_context_);
GetFirebaseCloudProvider(std::move(config), std::move(firebase_auth),
std::move(cloud_provider_request),
std::move(callback));
}
-std::unique_ptr<firebase_auth::FirebaseAuthImpl> FactoryImpl::GetFirebaseAuth(
- fuchsia::modular::auth::TokenProviderPtr token_provider,
- fuchsia::auth::TokenManagerPtr token_manager,
- fidl::StringPtr firebase_api_key) {
- return std::make_unique<firebase_auth::FirebaseAuthImpl>(
- GetFirebaseAuthConfig(firebase_api_key, cobalt_client_name_), dispatcher_,
- random_, std::move(token_provider), std::move(token_manager),
- startup_context_);
-}
-
void FactoryImpl::GetFirebaseCloudProvider(
Config config,
std::unique_ptr<firebase_auth::FirebaseAuthImpl> firebase_auth,
diff --git a/bin/cloud_provider_firestore/app/factory_impl.h b/bin/cloud_provider_firestore/app/factory_impl.h
index adc0774..df8ffb4 100644
--- a/bin/cloud_provider_firestore/app/factory_impl.h
+++ b/bin/cloud_provider_firestore/app/factory_impl.h
@@ -7,7 +7,6 @@
#include <fuchsia/ledger/cloud/cpp/fidl.h>
#include <fuchsia/ledger/cloud/firestore/cpp/fidl.h>
-#include <fuchsia/modular/auth/cpp/fidl.h>
#include <lib/async/dispatcher.h>
#include <lib/callback/auto_cleanable.h>
#include <lib/callback/cancellable.h>
@@ -38,25 +37,11 @@
// Factory:
void GetCloudProvider(
Config config,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProvider>
- token_provider,
- fidl::InterfaceRequest<cloud_provider::CloudProvider>
- cloud_provider_request,
- GetCloudProviderCallback callback) override;
-
- // Factory:
- void GetCloudProviderV2(
- Config config,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> token_manager,
fidl::InterfaceRequest<cloud_provider::CloudProvider>
cloud_provider_request,
GetCloudProviderCallback callback) override;
- std::unique_ptr<firebase_auth::FirebaseAuthImpl> GetFirebaseAuth(
- fuchsia::modular::auth::TokenProviderPtr token_provider,
- fuchsia::auth::TokenManagerPtr token_manager,
- fidl::StringPtr firebase_api_key);
-
void GetFirebaseCloudProvider(
Config config,
std::unique_ptr<firebase_auth::FirebaseAuthImpl> firebase_auth,
diff --git a/bin/cloud_provider_firestore/app/factory_impl_unittest.cc b/bin/cloud_provider_firestore/app/factory_impl_unittest.cc
index 8b0e6d1..42c88a8 100644
--- a/bin/cloud_provider_firestore/app/factory_impl_unittest.cc
+++ b/bin/cloud_provider_firestore/app/factory_impl_unittest.cc
@@ -11,7 +11,6 @@
#include <lib/gtest/test_loop_fixture.h>
#include "peridot/lib/firebase_auth/testing/test_token_manager.h"
-#include "peridot/lib/firebase_auth/testing/test_token_provider.h"
#include "peridot/lib/rng/test_random.h"
namespace cloud_provider_firestore {
@@ -23,8 +22,6 @@
factory_impl_(dispatcher(), &random_, /*startup_context=*/nullptr,
/*cobalt_client_name=*/""),
factory_binding_(&factory_impl_, factory_.NewRequest()),
- token_provider_(dispatcher()),
- token_provider_binding_(&token_provider_),
token_manager_(dispatcher()),
token_manager_binding_(&token_manager_) {}
~FactoryImplTest() override {}
@@ -35,9 +32,6 @@
FactoryPtr factory_;
fidl::Binding<Factory> factory_binding_;
- firebase_auth::TestTokenProvider token_provider_;
- fidl::Binding<fuchsia::modular::auth::TokenProvider> token_provider_binding_;
-
firebase_auth::TestTokenManager token_manager_;
fidl::Binding<fuchsia::auth::TokenManager> token_manager_binding_;
@@ -47,29 +41,6 @@
TEST_F(FactoryImplTest, GetCloudProvider) {
bool callback_called = false;
- token_provider_.Set("this is a token", "some id", "me@example.com");
-
- cloud_provider::Status status = cloud_provider::Status::INTERNAL_ERROR;
- cloud_provider::CloudProviderPtr cloud_provider;
- Config config;
- config.server_id = "some server id";
- config.api_key = "some api key";
- factory_->GetCloudProvider(
- std::move(config), token_provider_binding_.NewBinding(),
- cloud_provider.NewRequest(),
- callback::Capture(callback::SetWhenCalled(&callback_called), &status));
- RunLoopUntilIdle();
- EXPECT_TRUE(callback_called);
- EXPECT_EQ(cloud_provider::Status::OK, status);
-
- callback_called = false;
- factory_impl_.ShutDown(callback::SetWhenCalled(&callback_called));
- RunLoopUntilIdle();
- EXPECT_TRUE(callback_called);
-}
-
-TEST_F(FactoryImplTest, GetCloudProviderV2) {
- bool callback_called = false;
token_manager_.Set("this is a token", "some id", "me@example.com");
cloud_provider::Status status = cloud_provider::Status::INTERNAL_ERROR;
@@ -77,7 +48,7 @@
Config config;
config.server_id = "some server id";
config.api_key = "some api key";
- factory_->GetCloudProviderV2(
+ factory_->GetCloudProvider(
std::move(config), token_manager_binding_.NewBinding(),
cloud_provider.NewRequest(),
callback::Capture(callback::SetWhenCalled(&callback_called), &status));
diff --git a/bin/cloud_provider_firestore/fidl/factory.fidl b/bin/cloud_provider_firestore/fidl/factory.fidl
index e13fba2..fc0f740 100644
--- a/bin/cloud_provider_firestore/fidl/factory.fidl
+++ b/bin/cloud_provider_firestore/fidl/factory.fidl
@@ -6,7 +6,6 @@
using fuchsia.auth;
using fuchsia.ledger.cloud;
-using fuchsia.modular.auth;
// Configuration to use when connecting to the Firestore server.
struct Config {
@@ -23,21 +22,9 @@
//
// Parameters:
// |config| configuration
- // |token_provider| is used to get the appropriate auth tokens
- // associated with user for whom the cloud provider is running.
- 1: GetCloudProvider(
- Config config,
- fuchsia.modular.auth.TokenProvider? token_provider,
- request<fuchsia.ledger.cloud.CloudProvider> cloud_provider)
- -> (fuchsia.ledger.cloud.Status status);
-
- // Creates a cloud provider instance using the given |config|.
- //
- // Parameters:
- // |config| configuration
// |token_manager| is used to get the appropriate auth tokens
// associated with user for whom the cloud provider is running.
- 2: GetCloudProviderV2(
+ 1: GetCloudProvider(
Config config,
fuchsia.auth.TokenManager? token_manager,
request<fuchsia.ledger.cloud.CloudProvider> cloud_provider)
diff --git a/bin/cloud_provider_firestore/testing/cloud_provider_factory.cc b/bin/cloud_provider_firestore/testing/cloud_provider_factory.cc
index 66b6a31..21f2494 100644
--- a/bin/cloud_provider_firestore/testing/cloud_provider_factory.cc
+++ b/bin/cloud_provider_firestore/testing/cloud_provider_factory.cc
@@ -45,41 +45,6 @@
CloudProviderFactory::UserId::UserId() : user_id_(GenerateUserId()) {}
-class CloudProviderFactory::TokenProviderContainer {
- public:
- TokenProviderContainer(
- component::StartupContext* startup_context,
- async_dispatcher_t* dispatcher, rng::Random* random,
- std::unique_ptr<service_account::Credentials> credentials,
- std::string user_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider> request)
- : startup_context_(startup_context),
- network_wrapper_(
- dispatcher,
- std::make_unique<backoff::ExponentialBackoff>(
- random->NewBitGenerator<uint64_t>()),
- [this] {
- return startup_context_
- ->ConnectToEnvironmentService<http::HttpService>();
- }),
- token_provider_(&network_wrapper_, std::move(credentials),
- std::move(user_id)),
- binding_(&token_provider_, std::move(request)) {}
-
- void set_on_empty(fit::closure on_empty) {
- binding_.set_error_handler(
- [on_empty = std::move(on_empty)](zx_status_t status) { on_empty(); });
- }
-
- private:
- component::StartupContext* const startup_context_;
- network_wrapper::NetworkWrapperImpl network_wrapper_;
- service_account::ServiceAccountTokenProvider token_provider_;
- fidl::Binding<fuchsia::modular::auth::TokenProvider> binding_;
-
- FXL_DISALLOW_COPY_AND_ASSIGN(TokenProviderContainer);
-};
-
class CloudProviderFactory::TokenManagerContainer {
public:
TokenManagerContainer(
@@ -144,26 +109,6 @@
void CloudProviderFactory::MakeCloudProvider(
UserId user_id,
fidl::InterfaceRequest<cloud_provider::CloudProvider> request) {
- fuchsia::modular::auth::TokenProviderPtr token_provider;
- MakeTokenProvider(std::move(user_id), token_provider.NewRequest());
-
- cloud_provider_firestore::Config firebase_config;
- firebase_config.server_id = credentials_->project_id();
- firebase_config.api_key = api_key_;
-
- cloud_provider_factory_->GetCloudProvider(
- std::move(firebase_config), std::move(token_provider), std::move(request),
- [](cloud_provider::Status status) {
- if (status != cloud_provider::Status::OK) {
- FXL_LOG(ERROR) << "Failed to create a cloud provider: "
- << fidl::ToUnderlying(status);
- }
- });
-}
-
-void CloudProviderFactory::MakeCloudProviderV2(
- UserId user_id,
- fidl::InterfaceRequest<cloud_provider::CloudProvider> request) {
fuchsia::auth::TokenManagerPtr token_manager;
MakeTokenManager(std::move(user_id), token_manager.NewRequest());
@@ -171,7 +116,7 @@
firebase_config.server_id = credentials_->project_id();
firebase_config.api_key = api_key_;
- cloud_provider_factory_->GetCloudProviderV2(
+ cloud_provider_factory_->GetCloudProvider(
std::move(firebase_config), std::move(token_manager), std::move(request),
[](cloud_provider::Status status) {
if (status != cloud_provider::Status::OK) {
@@ -181,19 +126,6 @@
});
}
-void CloudProviderFactory::MakeTokenProvider(
- UserId user_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider> request) {
- async::PostTask(services_loop_.dispatcher(),
- fxl::MakeCopyable([this, user_id = std::move(user_id),
- request = std::move(request)]() mutable {
- token_providers_.emplace(
- startup_context_, services_loop_.dispatcher(), random_,
- credentials_->Clone(), std::move(user_id.user_id()),
- std::move(request));
- }));
-}
-
void CloudProviderFactory::MakeTokenManager(
UserId user_id,
fidl::InterfaceRequest<fuchsia::auth::TokenManager> request) {
diff --git a/bin/cloud_provider_firestore/testing/cloud_provider_factory.h b/bin/cloud_provider_firestore/testing/cloud_provider_factory.h
index e5bdabc..eab1814 100644
--- a/bin/cloud_provider_firestore/testing/cloud_provider_factory.h
+++ b/bin/cloud_provider_firestore/testing/cloud_provider_factory.h
@@ -16,7 +16,6 @@
#include "peridot/bin/cloud_provider_firestore/include/types.h"
#include "peridot/lib/firebase_auth/testing/credentials.h"
#include "peridot/lib/firebase_auth/testing/service_account_token_manager.h"
-#include "peridot/lib/firebase_auth/testing/service_account_token_provider.h"
#include "peridot/lib/rng/random.h"
#include "peridot/lib/rng/system_random.h"
@@ -59,20 +58,11 @@
UserId user_id,
fidl::InterfaceRequest<cloud_provider::CloudProvider> request);
- void MakeCloudProviderV2(
- UserId user_id,
- fidl::InterfaceRequest<cloud_provider::CloudProvider> request);
-
- void MakeTokenProvider(
- UserId user_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider> request);
-
void MakeTokenManager(
UserId user_id,
fidl::InterfaceRequest<fuchsia::auth::TokenManager> request);
private:
- class TokenProviderContainer;
class TokenManagerContainer;
component::StartupContext* const startup_context_;
rng::Random* const random_;
@@ -82,7 +72,6 @@
// Loop on which the token manager runs.
async::Loop services_loop_;
- callback::AutoCleanableSet<TokenProviderContainer> token_providers_;
callback::AutoCleanableSet<TokenManagerContainer> token_managers_;
fuchsia::sys::ComponentControllerPtr cloud_provider_controller_;
diff --git a/bin/ledger/app/ledger_repository_factory_impl.cc b/bin/ledger/app/ledger_repository_factory_impl.cc
index eb61a46..e245a89 100644
--- a/bin/ledger/app/ledger_repository_factory_impl.cc
+++ b/bin/ledger/app/ledger_repository_factory_impl.cc
@@ -30,7 +30,6 @@
#include "peridot/bin/ledger/fidl/include/types.h"
#include "peridot/bin/ledger/p2p_provider/impl/p2p_provider_impl.h"
#include "peridot/bin/ledger/p2p_provider/impl/static_user_id_provider.h"
-#include "peridot/bin/ledger/p2p_provider/impl/user_id_provider_impl.h"
#include "peridot/bin/ledger/p2p_sync/impl/user_communicator_impl.h"
#include "peridot/bin/ledger/storage/impl/leveldb_factory.h"
#include "peridot/bin/ledger/sync_coordinator/impl/user_sync_impl.h"
@@ -357,22 +356,13 @@
return nullptr;
}
- std::unique_ptr<p2p_provider::UserIdProvider> user_id_provider;
- if (!repository_information.user_id.empty()) {
- user_id_provider = std::make_unique<p2p_provider::StaticUserIdProvider>(
- repository_information.user_id);
- } else {
- fuchsia::modular::auth::TokenProviderPtr token_provider =
- environment_->startup_context()
- ->ConnectToEnvironmentService<
- fuchsia::modular::auth::TokenProvider>();
-
- user_id_provider = std::make_unique<p2p_provider::UserIdProviderImpl>(
- environment_, repository_information.content_path,
- std::move(token_provider),
- environment_->disable_statistics() ? "" : "ledger_p2p");
+ if (repository_information.user_id.empty()) {
+ return nullptr;
}
+ auto user_id_provider = std::make_unique<p2p_provider::StaticUserIdProvider>(
+ repository_information.user_id);
+
return user_communicator_factory_->GetUserCommunicator(
std::move(user_id_provider));
}
diff --git a/bin/ledger/fidl/internal.fidl b/bin/ledger/fidl/internal.fidl
index 1c4d220..0135905 100644
--- a/bin/ledger/fidl/internal.fidl
+++ b/bin/ledger/fidl/internal.fidl
@@ -14,7 +14,7 @@
interface LedgerRepositoryFactory : fuchsia.ledger.ErrorNotifier {
// Binds to the directory referenced by |repository|. If this is called
// multiple times for the same directory, only the first instance of
- // |server_id| / |token_provider| will be used. Any subsequent ones will
+ // |server_id| / |cloud_provider| will be used. Any subsequent ones will
// simply be ignored.
//
// Parameters:
@@ -29,8 +29,7 @@
// |user_id| is a unique, not device local, user identifier. It will be
// used to enable Peer to Peer over NetConnector, and will be removed
// once Ledger uses Overnet for Peer to Peer communication. If it is
- // empty, Ledger will try to retrieve a TokenProvider in the
- // environment to fetch the identifier.
+ // empty, Ledger will not synchronize using Peer to Peer communication.
1: GetRepository(handle<channel> repository_directory,
fuchsia.ledger.cloud.CloudProvider? cloud_provider,
string user_id,
diff --git a/bin/ledger/meta/ledger.cmx b/bin/ledger/meta/ledger.cmx
index 37333be..3aab396 100644
--- a/bin/ledger/meta/ledger.cmx
+++ b/bin/ledger/meta/ledger.cmx
@@ -5,7 +5,6 @@
"sandbox": {
"features": [],
"services": [
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.netconnector.NetConnector",
"fuchsia.tracelink.Registry",
"fuchsia.net.LegacySocketProvider",
diff --git a/bin/ledger/p2p_provider/impl/BUILD.gn b/bin/ledger/p2p_provider/impl/BUILD.gn
index ed50cae..13268d4 100644
--- a/bin/ledger/p2p_provider/impl/BUILD.gn
+++ b/bin/ledger/p2p_provider/impl/BUILD.gn
@@ -14,8 +14,6 @@
"remote_connection.h",
"static_user_id_provider.cc",
"static_user_id_provider.h",
- "user_id_provider_impl.cc",
- "user_id_provider_impl.h",
]
public_deps = [
diff --git a/bin/ledger/p2p_provider/impl/user_id_provider_impl.cc b/bin/ledger/p2p_provider/impl/user_id_provider_impl.cc
deleted file mode 100644
index cce1d3e..0000000
--- a/bin/ledger/p2p_provider/impl/user_id_provider_impl.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2018 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/bin/ledger/p2p_provider/impl/user_id_provider_impl.h"
-
-#include <lib/backoff/exponential_backoff.h>
-#include <lib/fit/function.h>
-#include <lib/fxl/files/file.h>
-#include <lib/fxl/logging.h>
-
-#include "peridot/lib/firebase_auth/firebase_auth_impl.h"
-
-namespace p2p_provider {
-
-namespace {
-
-firebase_auth::FirebaseAuthImpl::Config GetFirebaseAuthConfig(
- const std::string& api_key, const std::string& cobalt_client_name) {
- firebase_auth::FirebaseAuthImpl::Config config;
- config.api_key = api_key;
- config.cobalt_client_name = cobalt_client_name;
-
- return config;
-}
-
-} // namespace
-
-constexpr fxl::StringView user_id_filename = "p2p_user_id";
-
-UserIdProviderImpl::UserIdProviderImpl(
- ledger::Environment* environment, ledger::DetachedPath user_directory,
- fuchsia::modular::auth::TokenProviderPtr token_provider_ptr,
- std::string cobalt_client_name)
- : user_id_path_(user_directory.SubPath(user_id_filename)),
- firebase_auth_(std::make_unique<firebase_auth::FirebaseAuthImpl>(
- GetFirebaseAuthConfig(environment->firebase_api_key(),
- cobalt_client_name),
- environment->dispatcher(), environment->random(),
- std::move(token_provider_ptr), nullptr,
- environment->startup_context())) {}
-
-UserIdProviderImpl::~UserIdProviderImpl() = default;
-
-void UserIdProviderImpl::GetUserId(
- fit::function<void(Status, std::string)> callback) {
- FXL_DCHECK(callback);
- std::string stored_id;
- if (LoadUserIdFromFile(&stored_id)) {
- callback(Status::OK, stored_id);
- return;
- }
-
- firebase_auth_->GetFirebaseUserId(
- [this, callback = std::move(callback)](firebase_auth::AuthStatus status,
- std::string user_id) {
- if (status != firebase_auth::AuthStatus::OK) {
- FXL_LOG(ERROR) << "Firebase auth returned an error.";
- callback(Status::ERROR, "");
- return;
- }
- if (!UpdateUserId(user_id)) {
- FXL_LOG(WARNING) << "Unable to persist the user id for caching. "
- "Continuing anyway...";
- // We have the user id, we can continue anyway.
- }
- callback(Status::OK, user_id);
- });
-}
-
-bool UserIdProviderImpl::LoadUserIdFromFile(std::string* id) {
- if (!files::IsFileAt(user_id_path_.root_fd(), user_id_path_.path())) {
- return false;
- }
-
- if (!files::ReadFileToStringAt(user_id_path_.root_fd(), user_id_path_.path(),
- id)) {
- FXL_LOG(ERROR) << "Unable to read the id file at: " << user_id_path_.path();
- return false;
- }
- return true;
-}
-
-bool UserIdProviderImpl::WriteUserIdToFile(std::string id) {
- if (!files::WriteFileAt(user_id_path_.root_fd(), user_id_path_.path(),
- id.data(), id.size())) {
- FXL_LOG(ERROR) << "Failed to persist the id at " << user_id_path_.path();
- return false;
- }
- return true;
-}
-
-bool UserIdProviderImpl::UpdateUserId(std::string user_id) {
- std::string stored_id;
- if (LoadUserIdFromFile(&stored_id) && stored_id == user_id) {
- return true;
- }
- return WriteUserIdToFile(user_id);
-}
-
-} // namespace p2p_provider
diff --git a/bin/ledger/p2p_provider/impl/user_id_provider_impl.h b/bin/ledger/p2p_provider/impl/user_id_provider_impl.h
deleted file mode 100644
index 5e2962a..0000000
--- a/bin/ledger/p2p_provider/impl/user_id_provider_impl.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2018 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PERIDOT_BIN_LEDGER_P2P_PROVIDER_IMPL_USER_ID_PROVIDER_IMPL_H_
-#define PERIDOT_BIN_LEDGER_P2P_PROVIDER_IMPL_USER_ID_PROVIDER_IMPL_H_
-
-#include <string>
-
-#include <fuchsia/modular/auth/cpp/fidl.h>
-#include <lib/component/cpp/startup_context.h>
-#include <lib/fit/function.h>
-
-#include "peridot/bin/ledger/environment/environment.h"
-#include "peridot/bin/ledger/filesystem/detached_path.h"
-#include "peridot/bin/ledger/p2p_provider/public/user_id_provider.h"
-#include "peridot/lib/firebase_auth/firebase_auth.h"
-
-namespace p2p_provider {
-
-// Implementation of |UserIdProvider| that retrieves the user id from the user
-// Google profile using the given |TokenProvider| and caches this information in
-// the filesystem.
-class UserIdProviderImpl : public UserIdProvider {
- public:
- UserIdProviderImpl(
- ledger::Environment* environment, ledger::DetachedPath user_directory,
- fuchsia::modular::auth::TokenProviderPtr token_provider_ptr,
- std::string cobalt_client_name);
- ~UserIdProviderImpl() override;
-
- void GetUserId(fit::function<void(Status, std::string)> callback) override;
-
- private:
- bool LoadUserIdFromFile(std::string* id);
- bool UpdateUserId(std::string user_id);
- bool WriteUserIdToFile(std::string id);
-
- const ledger::DetachedPath user_id_path_;
- std::unique_ptr<firebase_auth::FirebaseAuth> firebase_auth_;
-};
-
-} // namespace p2p_provider
-
-#endif // PERIDOT_BIN_LEDGER_P2P_PROVIDER_IMPL_USER_ID_PROVIDER_IMPL_H_
diff --git a/bin/ledger/tests/e2e_sync/ledger_app_instance_factory_e2e.cc b/bin/ledger/tests/e2e_sync/ledger_app_instance_factory_e2e.cc
index d753709..381f85b 100644
--- a/bin/ledger/tests/e2e_sync/ledger_app_instance_factory_e2e.cc
+++ b/bin/ledger/tests/e2e_sync/ledger_app_instance_factory_e2e.cc
@@ -20,7 +20,7 @@
#include "peridot/bin/ledger/testing/ledger_app_instance_factory.h"
#include "peridot/bin/ledger/tests/e2e_sync/ledger_app_instance_factory_e2e.h"
#include "peridot/lib/convert/convert.h"
-#include "peridot/lib/firebase_auth/testing/fake_token_provider.h"
+#include "peridot/lib/firebase_auth/testing/fake_token_manager.h"
namespace ledger {
namespace {
@@ -66,11 +66,6 @@
std::move(sync_params.api_key),
std::move(sync_params.credentials)),
user_id_(std::move(user_id)) {
- service_provider_impl_.AddService<fuchsia::modular::auth::TokenProvider>(
- [this](fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider>
- request) {
- cloud_provider_factory_.MakeTokenProvider(user_id_, std::move(request));
- });
}
void LedgerAppInstanceImpl::Init(
@@ -84,10 +79,6 @@
launch_info.directory_request = child_services.NewRequest();
launch_info.arguments.push_back("--disable_reporting");
launch_info.arguments.push_back("--firebase_api_key=" + sync_params_.api_key);
- fuchsia::sys::ServiceList service_list;
- service_list.names.push_back(fuchsia::modular::auth::TokenProvider::Name_);
- service_provider_impl_.AddBinding(service_list.provider.NewRequest());
- launch_info.additional_services = fidl::MakeOptional(std::move(service_list));
startup_context_->launcher()->CreateComponent(std::move(launch_info),
controller_.NewRequest());
diff --git a/bin/sessionmgr/agent_runner/agent_context_impl.cc b/bin/sessionmgr/agent_runner/agent_context_impl.cc
index 78a5936..2cc54eb 100644
--- a/bin/sessionmgr/agent_runner/agent_context_impl.cc
+++ b/bin/sessionmgr/agent_runner/agent_context_impl.cc
@@ -18,25 +18,6 @@
namespace {
-// Maps |fuchsia::modular::auth::Status| status codes to |fuchsia::auth::Status|
-// status codes.
-fuchsia::auth::Status ConvertAuthStatus(fuchsia::modular::auth::Status status) {
- switch (status) {
- case fuchsia::modular::auth::Status::OK:
- return fuchsia::auth::Status::OK;
- case fuchsia::modular::auth::Status::OAUTH_SERVER_ERROR:
- return fuchsia::auth::Status::AUTH_PROVIDER_SERVER_ERROR;
- case fuchsia::modular::auth::Status::BAD_RESPONSE:
- return fuchsia::auth::Status::AUTH_PROVIDER_SERVER_ERROR;
- case fuchsia::modular::auth::Status::NETWORK_ERROR:
- return fuchsia::auth::Status::NETWORK_ERROR;
- case fuchsia::modular::auth::Status::INTERNAL_ERROR:
- return fuchsia::auth::Status::INTERNAL_ERROR;
- default:
- return fuchsia::auth::Status::UNKNOWN_ERROR;
- }
-}
-
// A stopgap solution to map an agent's url to a directory name where the
// agent's /data is mapped. We need three properties here - (1) two module urls
// that are the same get mapped to the same hash, (2) two modules urls that are
@@ -199,7 +180,6 @@
agent_runner_(info.component_context_info.agent_runner),
component_context_impl_(info.component_context_info,
kAgentComponentNamespace, url_, url_),
- token_provider_factory_(info.token_provider_factory),
token_manager_(info.token_manager),
entity_provider_runner_(
info.component_context_info.entity_provider_runner),
@@ -277,24 +257,8 @@
component_context_impl_.Connect(std::move(request));
}
-void AgentContextImpl::GetTokenProvider(
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider> request) {
- if (token_provider_factory_ != nullptr) {
- token_provider_factory_->GetTokenProvider(url_, std::move(request));
- } else {
- // This should never happen. But if there is a bug in setting these handles
- // by |sessionmgr|, at least we can infer it from the logs.
- FXL_LOG(ERROR) << "Token provider factory is not set.";
- }
-}
-
void AgentContextImpl::GetTokenManager(
fidl::InterfaceRequest<fuchsia::auth::TokenManager> request) {
- if (token_manager_ == nullptr) {
- FXL_DLOG(INFO) << "Token manager is not set, falling back to token "
- << "provider";
- GetTokenProvider(token_provider_.NewRequest());
- }
token_manager_bindings_.AddBinding(this, std::move(request));
}
@@ -328,54 +292,25 @@
fuchsia::auth::AppConfig app_config, fidl::StringPtr user_profile_id,
fidl::VectorPtr<::fidl::StringPtr> app_scopes,
GetAccessTokenCallback callback) {
+ FXL_CHECK(token_manager_);
+
FXL_DLOG(INFO) << "AgentContextImpl::GetAccessToken() invoked for user:"
<< user_profile_id;
- if (token_manager_ != nullptr) {
- token_manager_->GetAccessToken(std::move(app_config),
- std::move(user_profile_id),
- std::move(app_scopes), std::move(callback));
- } else {
- if (!token_provider_.is_bound()) {
- GetTokenProvider(token_provider_.NewRequest());
- }
- token_provider_->GetAccessToken(
- [callback = std::move(callback)](
- fidl::StringPtr access_token,
- fuchsia::modular::auth::AuthErr authErr) {
- if (authErr.status != fuchsia::modular::auth::Status::OK) {
- callback(ConvertAuthStatus(authErr.status), nullptr);
- return;
- }
-
- callback(fuchsia::auth::Status::OK, std::move(access_token));
- });
- }
+ token_manager_->GetAccessToken(std::move(app_config),
+ std::move(user_profile_id),
+ std::move(app_scopes), std::move(callback));
}
void AgentContextImpl::GetIdToken(fuchsia::auth::AppConfig app_config,
fidl::StringPtr user_profile_id,
fidl::StringPtr audience,
GetIdTokenCallback callback) {
+ FXL_CHECK(token_manager_);
+
FXL_DLOG(INFO) << "AgentContextImpl::GetIdToken() invoked for user:"
<< user_profile_id;
- if (token_manager_ != nullptr) {
- token_manager_->GetIdToken(std::move(app_config),
- std::move(user_profile_id), std::move(audience),
- std::move(callback));
- } else {
- if (!token_provider_.is_bound()) {
- GetTokenProvider(token_provider_.NewRequest());
- }
- token_provider_->GetIdToken(
- [callback = std::move(callback)](
- fidl::StringPtr id_token, fuchsia::modular::auth::AuthErr authErr) {
- if (authErr.status != fuchsia::modular::auth::Status::OK) {
- callback(ConvertAuthStatus(authErr.status), nullptr);
- return;
- }
- callback(fuchsia::auth::Status::OK, std::move(id_token));
- });
- }
+ token_manager_->GetIdToken(std::move(app_config), std::move(user_profile_id),
+ std::move(audience), std::move(callback));
}
void AgentContextImpl::GetFirebaseToken(fuchsia::auth::AppConfig app_config,
@@ -383,35 +318,13 @@
fidl::StringPtr audience,
fidl::StringPtr firebase_api_key,
GetFirebaseTokenCallback callback) {
+ FXL_CHECK(token_manager_);
+
FXL_DLOG(INFO) << "AgentContextImpl::GetFirebaseToken() invoked for user:"
<< user_profile_id;
- if (token_manager_ != nullptr) {
- token_manager_->GetFirebaseToken(
- std::move(app_config), std::move(user_profile_id), std::move(audience),
- std::move(firebase_api_key), std::move(callback));
- } else {
- if (!token_provider_.is_bound()) {
- GetTokenProvider(token_provider_.NewRequest());
- }
- token_provider_->GetFirebaseAuthToken(
- std::move(firebase_api_key),
- [callback = std::move(callback)](
- fuchsia::modular::auth::FirebaseTokenPtr firebase_token,
- fuchsia::modular::auth::AuthErr authErr) {
- if (authErr.status != fuchsia::modular::auth::Status::OK) {
- callback(ConvertAuthStatus(authErr.status), nullptr);
- return;
- }
-
- fuchsia::auth::FirebaseTokenPtr fb_token;
- fb_token->id_token = firebase_token->id_token;
- fb_token->email = firebase_token->email;
- fb_token->local_id = firebase_token->local_id;
- fb_token->expires_in = 0;
-
- callback(fuchsia::auth::Status::OK, std::move(fb_token));
- });
- }
+ token_manager_->GetFirebaseToken(
+ std::move(app_config), std::move(user_profile_id), std::move(audience),
+ std::move(firebase_api_key), std::move(callback));
}
void AgentContextImpl::DeleteAllTokens(fuchsia::auth::AppConfig app_config,
@@ -424,13 +337,9 @@
void AgentContextImpl::ListProfileIds(fuchsia::auth::AppConfig app_config,
ListProfileIdsCallback callback) {
- if (token_manager_ != nullptr) {
- token_manager_->ListProfileIds(std::move(app_config), std::move(callback));
- } else {
- // ListProfileIds is not needed for old TokenProvider
- auto user_profile_ids = fidl::VectorPtr<fidl::StringPtr>::New(0);
- callback(fuchsia::auth::Status::OK, std::move(user_profile_ids));
- }
+ FXL_CHECK(token_manager_);
+
+ token_manager_->ListProfileIds(std::move(app_config), std::move(callback));
}
void AgentContextImpl::StopAgentIfIdle() {
diff --git a/bin/sessionmgr/agent_runner/agent_context_impl.h b/bin/sessionmgr/agent_runner/agent_context_impl.h
index a8d520b..c8a4f0c 100644
--- a/bin/sessionmgr/agent_runner/agent_context_impl.h
+++ b/bin/sessionmgr/agent_runner/agent_context_impl.h
@@ -27,7 +27,6 @@
struct AgentContextInfo {
const ComponentContextInfo component_context_info;
fuchsia::sys::Launcher* const launcher;
- fuchsia::modular::auth::TokenProviderFactory* const token_provider_factory;
fuchsia::auth::TokenManager* const token_manager;
fuchsia::modular::UserIntelligenceProvider* const user_intelligence_provider;
};
@@ -84,10 +83,6 @@
fidl::InterfaceRequest<fuchsia::modular::ComponentContext> request)
override;
// |fuchsia::modular::AgentContext|
- void GetTokenProvider(
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider> request)
- override;
- // |fuchsia::modular::AgentContext|
void GetTokenManager(
fidl::InterfaceRequest<fuchsia::auth::TokenManager> request) override;
// |fuchsia::modular::AgentContext|
@@ -144,7 +139,6 @@
std::unique_ptr<AppClient<fuchsia::modular::Lifecycle>> app_client_;
fuchsia::modular::AgentPtr agent_;
- fuchsia::modular::auth::TokenProviderPtr token_provider_;
fidl::BindingSet<fuchsia::modular::AgentContext> agent_context_bindings_;
fidl::BindingSet<fuchsia::modular::AgentController>
agent_controller_bindings_;
@@ -158,8 +152,6 @@
// application's namespace.
component::ServiceProviderImpl service_provider_impl_;
- fuchsia::modular::auth::TokenProviderFactory* const
- token_provider_factory_; // Not owned.
fuchsia::auth::TokenManager* const token_manager_; // Not owned.
EntityProviderRunner* const entity_provider_runner_; // Not owned.
fuchsia::modular::UserIntelligenceProvider* const
diff --git a/bin/sessionmgr/agent_runner/agent_runner.cc b/bin/sessionmgr/agent_runner/agent_runner.cc
index ae47a91..6948526 100644
--- a/bin/sessionmgr/agent_runner/agent_runner.cc
+++ b/bin/sessionmgr/agent_runner/agent_runner.cc
@@ -28,7 +28,6 @@
MessageQueueManager* const message_queue_manager,
fuchsia::ledger::internal::LedgerRepository* const ledger_repository,
AgentRunnerStorage* const agent_runner_storage,
- fuchsia::modular::auth::TokenProviderFactory* const token_provider_factory,
fuchsia::auth::TokenManager* const token_manager,
fuchsia::modular::UserIntelligenceProvider* const
user_intelligence_provider,
@@ -37,7 +36,6 @@
message_queue_manager_(message_queue_manager),
ledger_repository_(ledger_repository),
agent_runner_storage_(agent_runner_storage),
- token_provider_factory_(token_provider_factory),
token_manager_(token_manager),
user_intelligence_provider_(user_intelligence_provider),
entity_provider_runner_(entity_provider_runner),
@@ -120,8 +118,8 @@
ComponentContextInfo component_info = {message_queue_manager_, this,
ledger_repository_,
entity_provider_runner_};
- AgentContextInfo info = {component_info, launcher_, token_provider_factory_,
- token_manager_, user_intelligence_provider_};
+ AgentContextInfo info = {component_info, launcher_, token_manager_,
+ user_intelligence_provider_};
fuchsia::modular::AppConfig agent_config;
agent_config.url = agent_url;
diff --git a/bin/sessionmgr/agent_runner/agent_runner.h b/bin/sessionmgr/agent_runner/agent_runner.h
index 27f8d97..f15586e 100644
--- a/bin/sessionmgr/agent_runner/agent_runner.h
+++ b/bin/sessionmgr/agent_runner/agent_runner.h
@@ -13,7 +13,6 @@
#include <fuchsia/auth/cpp/fidl.h>
#include <fuchsia/ledger/cpp/fidl.h>
#include <fuchsia/ledger/internal/cpp/fidl.h>
-#include <fuchsia/modular/auth/cpp/fidl.h>
#include <fuchsia/modular/cpp/fidl.h>
#include <fuchsia/sys/cpp/fidl.h>
#include <lib/async/cpp/operation.h>
@@ -44,7 +43,6 @@
MessageQueueManager* message_queue_manager,
fuchsia::ledger::internal::LedgerRepository* ledger_repository,
AgentRunnerStorage* agent_runner_storage,
- fuchsia::modular::auth::TokenProviderFactory* token_provider_factory,
fuchsia::auth::TokenManager* token_manager,
fuchsia::modular::UserIntelligenceProvider* user_intelligence_provider,
EntityProviderRunner* entity_provider_runner);
@@ -210,7 +208,6 @@
fuchsia::ledger::internal::LedgerRepository* const ledger_repository_;
// |agent_runner_storage_| must outlive this class.
AgentRunnerStorage* const agent_runner_storage_;
- fuchsia::modular::auth::TokenProviderFactory* const token_provider_factory_;
fuchsia::auth::TokenManager* const token_manager_;
fuchsia::modular::UserIntelligenceProvider* const user_intelligence_provider_;
EntityProviderRunner* const entity_provider_runner_;
diff --git a/bin/sessionmgr/agent_runner/agent_runner_unittest.cc b/bin/sessionmgr/agent_runner/agent_runner_unittest.cc
index 3a50663..ce76453 100644
--- a/bin/sessionmgr/agent_runner/agent_runner_unittest.cc
+++ b/bin/sessionmgr/agent_runner/agent_runner_unittest.cc
@@ -8,7 +8,6 @@
#include <fs/service.h>
#include <fs/synchronous-vfs.h>
-#include <fuchsia/modular/auth/cpp/fidl.h>
#include <fuchsia/modular/cpp/fidl.h>
#include <fuchsia/sys/cpp/fidl.h>
#include <lib/component/cpp/service_provider_impl.h>
@@ -46,8 +45,7 @@
// order for agent creation to be synchronous, which these tests assume.
agent_runner_ = std::make_unique<AgentRunner>(
&launcher_, mqm_.get(), ledger_repository(), &agent_runner_storage_,
- token_provider_factory_.get(), token_manager_.get(), nullptr,
- entity_provider_runner_.get());
+ token_manager_.get(), nullptr, entity_provider_runner_.get());
}
void TearDown() override {
@@ -73,7 +71,6 @@
std::unique_ptr<EntityProviderRunner> entity_provider_runner_;
std::unique_ptr<AgentRunner> agent_runner_;
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory_;
fuchsia::auth::TokenManagerPtr token_manager_;
FXL_DISALLOW_COPY_AND_ASSIGN(AgentRunnerTest);
diff --git a/bin/sessionmgr/entity_provider_runner/entity_provider_runner_unittest.cc b/bin/sessionmgr/entity_provider_runner/entity_provider_runner_unittest.cc
index 24d9d82..bc628de 100644
--- a/bin/sessionmgr/entity_provider_runner/entity_provider_runner_unittest.cc
+++ b/bin/sessionmgr/entity_provider_runner/entity_provider_runner_unittest.cc
@@ -8,7 +8,6 @@
#include <fs/service.h>
#include <fs/synchronous-vfs.h>
-#include <fuchsia/modular/auth/cpp/fidl.h>
#include <fuchsia/modular/cpp/fidl.h>
#include <fuchsia/sys/cpp/fidl.h>
#include <lib/agent/cpp/agent_impl.h>
@@ -51,8 +50,7 @@
// order for agent creation to be synchronous, which these tests assume.
agent_runner_ = std::make_unique<AgentRunner>(
&launcher_, mqm_.get(), ledger_repository(), &agent_runner_storage_,
- token_provider_factory_.get(), token_manager_.get(), nullptr,
- entity_provider_runner_.get());
+ token_manager_.get(), nullptr, entity_provider_runner_.get());
}
void TearDown() override {
@@ -101,7 +99,6 @@
std::unique_ptr<EntityProviderRunner> entity_provider_runner_;
std::unique_ptr<AgentRunner> agent_runner_;
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory_;
fuchsia::auth::TokenManagerPtr token_manager_;
FXL_DISALLOW_COPY_AND_ASSIGN(EntityProviderRunnerTest);
diff --git a/bin/sessionmgr/sessionmgr_impl.cc b/bin/sessionmgr/sessionmgr_impl.cc
index 305eed8..0be7d13 100644
--- a/bin/sessionmgr/sessionmgr_impl.cc
+++ b/bin/sessionmgr/sessionmgr_impl.cc
@@ -186,15 +186,13 @@
fuchsia::modular::auth::AccountPtr account,
fuchsia::modular::AppConfig session_shell,
fuchsia::modular::AppConfig story_shell,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fidl::InterfaceHandle<fuchsia::modular::internal::UserContext> user_context,
fidl::InterfaceRequest<fuchsia::ui::viewsv1token::ViewOwner>
view_owner_request) {
- InitializeUser(std::move(account), std::move(token_provider_factory),
- std::move(agent_token_manager), std::move(user_context));
+ InitializeUser(std::move(account), std::move(agent_token_manager),
+ std::move(user_context));
InitializeLedger(std::move(ledger_token_manager));
InitializeDeviceMap();
InitializeMessageQueueManager();
@@ -209,18 +207,11 @@
void SessionmgrImpl::InitializeUser(
fuchsia::modular::auth::AccountPtr account,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fidl::InterfaceHandle<fuchsia::modular::internal::UserContext>
user_context) {
- if (token_provider_factory.is_valid()) {
- token_provider_factory_ = token_provider_factory.Bind();
- AtEnd(Reset(&token_provider_factory_));
- } else {
agent_token_manager_ = agent_token_manager.Bind();
AtEnd(Reset(&agent_token_manager_));
- }
user_context_ = user_context.Bind();
AtEnd(Reset(&user_context_));
@@ -268,23 +259,10 @@
fuchsia::modular::AppConfig ledger_config;
ledger_config.url = kLedgerAppUrl;
- fuchsia::sys::ServiceListPtr service_list = nullptr;
- if (account_) {
- service_list = fuchsia::sys::ServiceList::New();
- service_list->names.push_back(fuchsia::modular::auth::TokenProvider::Name_);
- ledger_service_provider_.AddService<fuchsia::modular::auth::TokenProvider>(
- [this](fidl::InterfaceRequest<fuchsia::modular::auth::TokenProvider>
- request) {
- token_provider_factory_->GetTokenProvider(kLedgerAppUrl,
- std::move(request));
- });
- ledger_service_provider_.AddBinding(service_list->provider.NewRequest());
- }
-
ledger_app_ =
std::make_unique<AppClient<fuchsia::ledger::internal::LedgerController>>(
user_environment_->GetLauncher(), std::move(ledger_config), "",
- std::move(service_list));
+ nullptr);
ledger_app_->SetAppErrorHandler([this] {
FXL_LOG(ERROR) << "Ledger seems to have crashed unexpectedly." << std::endl
<< "CALLING Logout() DUE TO UNRECOVERABLE LEDGER ERROR.";
@@ -451,10 +429,8 @@
agent_runner_.reset(new AgentRunner(
user_environment_->GetLauncher(), message_queue_manager_.get(),
ledger_repository_.get(), agent_runner_storage_.get(),
- token_provider_factory_.is_bound() ? token_provider_factory_.get()
- : nullptr,
- agent_token_manager_.is_bound() ? agent_token_manager_.get() : nullptr,
- user_intelligence_provider_impl_.get(), entity_provider_runner_.get()));
+ agent_token_manager_.get(), user_intelligence_provider_impl_.get(),
+ entity_provider_runner_.get()));
AtEnd(Teardown(kAgentRunnerTimeout, "AgentRunner", &agent_runner_));
maxwell_component_context_bindings_ = std::make_unique<
@@ -879,32 +855,19 @@
fuchsia::ledger::cloud::CloudProviderPtr SessionmgrImpl::GetCloudProvider(
fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager) {
+ FXL_CHECK(ledger_token_manager);
+
fuchsia::ledger::cloud::CloudProviderPtr cloud_provider;
auto cloud_provider_config = GetLedgerFirestoreConfig();
- if (ledger_token_manager.is_valid()) {
- cloud_provider_factory_->GetCloudProviderV2(
- std::move(cloud_provider_config), std::move(ledger_token_manager),
- cloud_provider.NewRequest(), [](fuchsia::ledger::cloud::Status status) {
- if (status != fuchsia::ledger::cloud::Status::OK) {
- FXL_LOG(ERROR) << "Failed to create a cloud provider: "
- << fidl::ToUnderlying(status);
- }
- });
- } else {
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProvider>
- ledger_token_provider;
- token_provider_factory_->GetTokenProvider(
- kLedgerAppUrl, ledger_token_provider.NewRequest());
- cloud_provider_factory_->GetCloudProvider(
- std::move(cloud_provider_config), std::move(ledger_token_provider),
- cloud_provider.NewRequest(), [](fuchsia::ledger::cloud::Status status) {
- if (status != fuchsia::ledger::cloud::Status::OK) {
- FXL_LOG(ERROR) << "Failed to create a cloud provider: "
- << fidl::ToUnderlying(status);
- }
- });
- }
+ cloud_provider_factory_->GetCloudProvider(
+ std::move(cloud_provider_config), std::move(ledger_token_manager),
+ cloud_provider.NewRequest(), [](fuchsia::ledger::cloud::Status status) {
+ if (status != fuchsia::ledger::cloud::Status::OK) {
+ FXL_LOG(ERROR) << "Failed to create a cloud provider: "
+ << fidl::ToUnderlying(status);
+ }
+ });
return cloud_provider;
}
diff --git a/bin/sessionmgr/sessionmgr_impl.h b/bin/sessionmgr/sessionmgr_impl.h
index 2b9d5b8..f1571ae 100644
--- a/bin/sessionmgr/sessionmgr_impl.h
+++ b/bin/sessionmgr/sessionmgr_impl.h
@@ -88,8 +88,6 @@
fuchsia::modular::auth::AccountPtr account,
fuchsia::modular::AppConfig session_shell,
fuchsia::modular::AppConfig story_shell,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> ledger_token_manager,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fidl::InterfaceHandle<fuchsia::modular::internal::UserContext>
@@ -104,8 +102,6 @@
// Sequence of Initialize() broken up into steps for clarity.
void InitializeUser(
fuchsia::modular::auth::AccountPtr account,
- fidl::InterfaceHandle<fuchsia::modular::auth::TokenProviderFactory>
- token_provider_factory,
fidl::InterfaceHandle<fuchsia::auth::TokenManager> agent_token_manager,
fidl::InterfaceHandle<fuchsia::modular::internal::UserContext>
user_context);
@@ -213,7 +209,6 @@
fidl::BindingSet<fuchsia::modular::SessionShellContext>
session_shell_context_bindings_;
- fuchsia::modular::auth::TokenProviderFactoryPtr token_provider_factory_;
fuchsia::auth::TokenManagerPtr agent_token_manager_;
fuchsia::modular::internal::UserContextPtr user_context_;
std::unique_ptr<AppClient<fuchsia::modular::Lifecycle>> cloud_provider_app_;
diff --git a/bin/token_manager/dev_token_manager.cc b/bin/token_manager/dev_token_manager.cc
index 3536c94..babb2f0 100644
--- a/bin/token_manager/dev_token_manager.cc
+++ b/bin/token_manager/dev_token_manager.cc
@@ -24,24 +24,16 @@
private:
// |AccountProvider| implementation:
- void Initialize(
- fidl::InterfaceHandle<fuchsia::modular::auth::AccountProviderContext>
- provider) override;
void Terminate() override;
void AddAccount(fuchsia::modular::auth::IdentityProvider identity_provider,
AddAccountCallback callback) override;
void RemoveAccount(fuchsia::modular::auth::Account account, bool revoke_all,
RemoveAccountCallback callback) override;
- void GetTokenProviderFactory(
- fidl::StringPtr account_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProviderFactory>
- request) override;
std::string GenerateAccountId();
async::Loop* const loop_;
std::shared_ptr<component::StartupContext> startup_context_;
- fuchsia::modular::auth::AccountProviderContextPtr account_provider_context_;
fidl::Binding<AccountProvider> binding_;
FXL_DISALLOW_COPY_AND_ASSIGN(AccountProviderImpl);
@@ -58,12 +50,6 @@
});
}
-void AccountProviderImpl::Initialize(
- fidl::InterfaceHandle<fuchsia::modular::auth::AccountProviderContext>
- provider) {
- account_provider_context_.Bind(std::move(provider));
-}
-
void AccountProviderImpl::Terminate() { loop_->Quit(); }
std::string AccountProviderImpl::GenerateAccountId() {
@@ -95,11 +81,6 @@
bool revoke_all,
RemoveAccountCallback callback) {}
-void AccountProviderImpl::GetTokenProviderFactory(
- fidl::StringPtr account_id,
- fidl::InterfaceRequest<fuchsia::modular::auth::TokenProviderFactory>
- request) {}
-
} // namespace auth
} // namespace modular
} // namespace fuchsia
diff --git a/examples/simple/meta/simple_agent.cmx b/examples/simple/meta/simple_agent.cmx
index 630d985..3bcc536 100644
--- a/examples/simple/meta/simple_agent.cmx
+++ b/examples/simple/meta/simple_agent.cmx
@@ -9,7 +9,6 @@
"fuchsia.modular.examples.simple",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -17,4 +16,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/examples/simple/meta/simple_module.cmx b/examples/simple/meta/simple_module.cmx
index a5177f0..ece8074 100644
--- a/examples/simple/meta/simple_module.cmx
+++ b/examples/simple/meta/simple_module.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -16,4 +15,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/examples/swap_cpp/meta/swap_module1.cmx b/examples/swap_cpp/meta/swap_module1.cmx
index a5177f0..ece8074 100644
--- a/examples/swap_cpp/meta/swap_module1.cmx
+++ b/examples/swap_cpp/meta/swap_module1.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -16,4 +15,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/examples/swap_cpp/meta/swap_module2.cmx b/examples/swap_cpp/meta/swap_module2.cmx
index a5177f0..ece8074 100644
--- a/examples/swap_cpp/meta/swap_module2.cmx
+++ b/examples/swap_cpp/meta/swap_module2.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -16,4 +15,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/examples/swap_cpp/meta/swap_recipe.cmx b/examples/swap_cpp/meta/swap_recipe.cmx
index a5177f0..ece8074 100644
--- a/examples/swap_cpp/meta/swap_recipe.cmx
+++ b/examples/swap_cpp/meta/swap_recipe.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -16,4 +15,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/examples/todo_cpp/meta/todo_cpp.cmx b/examples/todo_cpp/meta/todo_cpp.cmx
index a5177f0..ece8074 100644
--- a/examples/todo_cpp/meta/todo_cpp.cmx
+++ b/examples/todo_cpp/meta/todo_cpp.cmx
@@ -8,7 +8,6 @@
"fuchsia.cobalt.LoggerFactory",
"fuchsia.modular.ComponentContext",
"fuchsia.modular.ModuleContext",
- "fuchsia.modular.auth.TokenProvider",
"fuchsia.net.LegacySocketProvider",
"fuchsia.net.oldhttp.HttpService",
"fuchsia.netconnector.NetConnector",
@@ -16,4 +15,4 @@
"fuchsia.tracelink.Registry"
]
}
-}
\ No newline at end of file
+}
diff --git a/lib/firebase_auth/BUILD.gn b/lib/firebase_auth/BUILD.gn
index 11e0870..4e847f0 100644
--- a/lib/firebase_auth/BUILD.gn
+++ b/lib/firebase_auth/BUILD.gn
@@ -37,7 +37,6 @@
sources = [
"firebase_auth_impl_unittest.cc",
- "firebase_auth_v2_impl_unittest.cc",
]
deps = [
diff --git a/lib/firebase_auth/firebase_auth_impl.cc b/lib/firebase_auth/firebase_auth_impl.cc
index 3d8c9c7..f5de43b 100644
--- a/lib/firebase_auth/firebase_auth_impl.cc
+++ b/lib/firebase_auth/firebase_auth_impl.cc
@@ -18,28 +18,10 @@
constexpr char kConfigBinProtoPath[] =
"/pkg/data/firebase_auth_cobalt_config.pb";
-constexpr int32_t kCobaltAuthFailureMetricId = 3;
-constexpr int32_t kCobaltAuthV2FailureMetricId = 4;
+constexpr int32_t kCobaltAuthFailureMetricId = 4;
// Returns true if the authentication failure may be transient.
-bool IsRetriableError(fuchsia::modular::auth::Status status) {
- switch (status) {
- case fuchsia::modular::auth::Status::OK: // This should never happen.
- case fuchsia::modular::auth::Status::BAD_REQUEST:
- case fuchsia::modular::auth::Status::OAUTH_SERVER_ERROR:
- case fuchsia::modular::auth::Status::USER_CANCELLED:
- return false;
- case fuchsia::modular::auth::Status::BAD_RESPONSE:
- case fuchsia::modular::auth::Status::NETWORK_ERROR:
- case fuchsia::modular::auth::Status::INTERNAL_ERROR:
- return true;
- }
- // In case of unexpected status, retry just in case.
- return true;
-}
-
-// Returns true if the authentication failure may be transient.
-bool IsRetriableErrorV2(fuchsia::auth::Status status) {
+bool IsRetriableError(fuchsia::auth::Status status) {
switch (status) {
case fuchsia::auth::Status::OK: // This should never happen.
case fuchsia::auth::Status::AUTH_PROVIDER_SERVER_ERROR:
@@ -63,11 +45,9 @@
FirebaseAuthImpl::FirebaseAuthImpl(
Config config, async_dispatcher_t* dispatcher, rng::Random* random,
- fuchsia::modular::auth::TokenProviderPtr token_provider,
fuchsia::auth::TokenManagerPtr token_manager,
component::StartupContext* startup_context)
: config_(std::move(config)),
- token_provider_(std::move(token_provider)),
token_manager_(std::move(token_manager)),
backoff_(std::make_unique<backoff::ExponentialBackoff>(
random->NewBitGenerator<uint64_t>())),
@@ -84,12 +64,10 @@
FirebaseAuthImpl::FirebaseAuthImpl(
Config config, async_dispatcher_t* dispatcher,
- fuchsia::modular::auth::TokenProviderPtr token_provider,
fuchsia::auth::TokenManagerPtr token_manager,
std::unique_ptr<backoff::Backoff> backoff,
std::unique_ptr<cobalt::CobaltLogger> cobalt_logger)
: config_(std::move(config)),
- token_provider_(std::move(token_provider)),
token_manager_(std::move(token_manager)),
backoff_(std::move(backoff)),
max_retries_(config_.max_retries),
@@ -98,7 +76,7 @@
task_runner_(dispatcher) {}
void FirebaseAuthImpl::set_error_handler(fit::closure on_error) {
- token_provider_.set_error_handler(
+ token_manager_.set_error_handler(
[on_error = std::move(on_error)](zx_status_t status) { on_error(); });
}
@@ -109,84 +87,25 @@
"may be unauthenticated.";
}
auto cancellable = callback::CancellableImpl::Create([] {});
- if (token_manager_.is_bound()) {
- GetTokenV2(max_retries_,
- [callback = cancellable->WrapCallback(std::move(callback))](
- auto status, auto token) {
- callback(status, token ? token->id_token : "");
- });
- } else {
- GetToken(max_retries_, [callback = cancellable->WrapCallback(
- std::move(callback))](auto status, auto token) {
- callback(status, token ? token->id_token : "");
- });
- }
+ GetToken(max_retries_, [callback = cancellable->WrapCallback(
+ std::move(callback))](auto status, auto token) {
+ callback(status, token ? token->id_token : "");
+ });
return cancellable;
}
fxl::RefPtr<callback::Cancellable> FirebaseAuthImpl::GetFirebaseUserId(
fit::function<void(AuthStatus, std::string)> callback) {
auto cancellable = callback::CancellableImpl::Create([] {});
- if (token_manager_.is_bound()) {
- GetTokenV2(max_retries_,
- [callback = cancellable->WrapCallback(std::move(callback))](
- auto status, auto token) {
- callback(status, token ? token->local_id : "");
- });
- } else {
- GetToken(max_retries_, [callback = cancellable->WrapCallback(
- std::move(callback))](auto status, auto token) {
- callback(status, token ? token->local_id : "");
- });
- }
+ GetToken(max_retries_, [callback = cancellable->WrapCallback(
+ std::move(callback))](auto status, auto token) {
+ callback(status, token ? token->local_id : "");
+ });
return cancellable;
}
void FirebaseAuthImpl::GetToken(
int max_retries,
- fit::function<void(AuthStatus, fuchsia::modular::auth::FirebaseTokenPtr)>
- callback) {
- token_provider_->GetFirebaseAuthToken(
- config_.api_key,
- fxl::MakeCopyable([this, max_retries, callback = std::move(callback)](
- fuchsia::modular::auth::FirebaseTokenPtr token,
- fuchsia::modular::auth::AuthErr error) mutable {
- if (!token || error.status != fuchsia::modular::auth::Status::OK) {
- if (!token && error.status == fuchsia::modular::auth::Status::OK) {
- FXL_LOG(ERROR)
- << "null Firebase token returned from token provider with no "
- << "error reported. This should never happen. Retrying.";
- error.status = fuchsia::modular::auth::Status::BAD_RESPONSE;
- } else {
- FXL_LOG(ERROR)
- << "Error retrieving the Firebase token from token provider: "
- << fidl::ToUnderlying(error.status) << ", '" << error.message
- << "', retrying.";
- }
-
- if (max_retries > 0 && IsRetriableError(error.status)) {
- task_runner_.PostDelayedTask(
- [this, max_retries, callback = std::move(callback)]() mutable {
- GetToken(max_retries - 1, std::move(callback));
- },
- backoff_->GetNext());
- return;
- }
- }
-
- backoff_->Reset();
- if (error.status == fuchsia::modular::auth::Status::OK) {
- callback(AuthStatus::OK, std::move(token));
- } else {
- ReportError(kCobaltAuthFailureMetricId,
- static_cast<uint32_t>(error.status));
- callback(AuthStatus::ERROR, std::move(token));
- }
- }));
-}
-
-void FirebaseAuthImpl::GetTokenV2(
- int max_retries,
fit::function<void(AuthStatus, fuchsia::auth::FirebaseTokenPtr)> callback) {
fuchsia::auth::AppConfig oauth_config;
oauth_config.auth_provider_type = "google";
@@ -210,10 +129,10 @@
<< fidl::ToUnderlying(status) << "', retrying.";
}
- if (max_retries > 0 && IsRetriableErrorV2(status)) {
+ if (max_retries > 0 && IsRetriableError(status)) {
task_runner_.PostDelayedTask(
[this, max_retries, callback = std::move(callback)]() mutable {
- GetTokenV2(max_retries - 1, std::move(callback));
+ GetToken(max_retries - 1, std::move(callback));
},
backoff_->GetNext());
return;
@@ -224,7 +143,7 @@
if (status == fuchsia::auth::Status::OK) {
callback(AuthStatus::OK, std::move(token));
} else {
- ReportError(kCobaltAuthV2FailureMetricId,
+ ReportError(kCobaltAuthFailureMetricId,
static_cast<uint32_t>(status));
callback(AuthStatus::ERROR, std::move(token));
}
diff --git a/lib/firebase_auth/firebase_auth_impl.h b/lib/firebase_auth/firebase_auth_impl.h
index da76613..3e74c2d 100644
--- a/lib/firebase_auth/firebase_auth_impl.h
+++ b/lib/firebase_auth/firebase_auth_impl.h
@@ -10,7 +10,6 @@
#include <string>
#include <fuchsia/auth/cpp/fidl.h>
-#include <fuchsia/modular/auth/cpp/fidl.h>
#include <lib/async/dispatcher.h>
#include <lib/backoff/backoff.h>
#include <lib/callback/cancellable.h>
@@ -28,16 +27,16 @@
// system token provider.
//
// If configured with an empty |api_key|, doesn't attempt to use
-// |token_provider| and yields empty Firebase tokens and user ids. This allows
+// |token_manager| and yields empty Firebase tokens and user ids. This allows
// the code to work without auth against public instances (e.g. for running
// benchmarks).
//
// If configured with an empty |cobalt_client_name| or null |startup_context|,
// disables statistics collection about failures.
//
-// *Warning*: if |token_provider| disconnects, all requests in progress are
+// *Warning*: if |token_manager| disconnects, all requests in progress are
// dropped on the floor. TODO(ppi): keep track of pending requests and call the
-// callbacks with status TOKEN_PROVIDER_DISCONNECTED when this happens.
+// callbacks with status TOKEN_MANAGER_DISCONNECTED when this happens.
class FirebaseAuthImpl : public FirebaseAuth {
public:
struct Config {
@@ -51,12 +50,10 @@
FirebaseAuthImpl(Config config, async_dispatcher_t* dispatcher,
rng::Random* random,
- fuchsia::modular::auth::TokenProviderPtr token_provider,
fuchsia::auth::TokenManagerPtr token_manager,
component::StartupContext* startup_context);
// For tests.
FirebaseAuthImpl(Config config, async_dispatcher_t* dispatcher,
- fuchsia::modular::auth::TokenProviderPtr token_provider,
fuchsia::auth::TokenManagerPtr token_manager,
std::unique_ptr<backoff::Backoff> backoff,
std::unique_ptr<cobalt::CobaltLogger> cobalt_logger);
@@ -73,28 +70,19 @@
override;
private:
- // Retrieves the Firebase token from the token provider, transparently
- // retrying the request up to |max_retries| times in case of non-fatal
- // errors.
- void GetToken(int max_retries,
- fit::function<void(firebase_auth::AuthStatus,
- fuchsia::modular::auth::FirebaseTokenPtr)>
- callback);
-
// Retrieves the Firebase token from the fuchsia::auth::TokenManager,
// transparently retrying the request up to |max_retries| times in case of
// non-fatal errors.
- void GetTokenV2(int max_retries,
- fit::function<void(firebase_auth::AuthStatus,
- fuchsia::auth::FirebaseTokenPtr)>
- callback);
+ void GetToken(int max_retries,
+ fit::function<void(firebase_auth::AuthStatus,
+ fuchsia::auth::FirebaseTokenPtr)>
+ callback);
// Sends a Cobalt event for metric |metric_id| counting the error code
// |status|, unless |cobalt_client_name_| is empty.
void ReportError(int32_t metric_id, uint32_t status);
const Config config_;
- fuchsia::modular::auth::TokenProviderPtr token_provider_;
fuchsia::auth::TokenManagerPtr token_manager_;
const std::unique_ptr<backoff::Backoff> backoff_;
const int max_retries_;
diff --git a/lib/firebase_auth/firebase_auth_impl_unittest.cc b/lib/firebase_auth/firebase_auth_impl_unittest.cc
index 4ba5372..58df55c 100644
--- a/lib/firebase_auth/firebase_auth_impl_unittest.cc
+++ b/lib/firebase_auth/firebase_auth_impl_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,7 @@
#include <utility>
-#include <fuchsia/modular/auth/cpp/fidl.h>
+#include <fuchsia/auth/cpp/fidl.h>
#include <lib/backoff/testing/test_backoff.h>
#include <lib/callback/capture.h>
#include <lib/callback/set_when_called.h>
@@ -14,7 +14,7 @@
#include <lib/fxl/functional/make_copyable.h>
#include <lib/gtest/test_loop_fixture.h>
-#include "peridot/lib/firebase_auth/testing/test_token_provider.h"
+#include "peridot/lib/firebase_auth/testing/test_token_manager.h"
namespace firebase_auth {
@@ -30,7 +30,7 @@
void LogEventCount(uint32_t metric_id, uint32_t event_code,
const std::string& component, zx::duration period_duration,
int64_t count) override {
- EXPECT_EQ(3u, metric_id);
+ EXPECT_EQ(4u, metric_id);
// The value should contain the client name.
EXPECT_TRUE(component.find("firebase-test") != std::string::npos);
*called_ += 1;
@@ -62,11 +62,11 @@
class FirebaseAuthImplTest : public gtest::TestLoopFixture {
public:
FirebaseAuthImplTest()
- : token_provider_(dispatcher()),
- token_provider_binding_(&token_provider_),
+ : token_manager_(dispatcher()),
+ token_manager_binding_(&token_manager_),
firebase_auth_(
{"api_key", "firebase-test", 1}, dispatcher(),
- token_provider_binding_.NewBinding().Bind(), nullptr, InitBackoff(),
+ token_manager_binding_.NewBinding().Bind(), InitBackoff(),
std::make_unique<MockCobaltLogger>(&report_observation_count_)) {}
~FirebaseAuthImplTest() override {}
@@ -79,8 +79,8 @@
return backoff;
}
- TestTokenProvider token_provider_;
- fidl::Binding<fuchsia::modular::auth::TokenProvider> token_provider_binding_;
+ TestTokenManager token_manager_;
+ fidl::Binding<fuchsia::auth::TokenManager> token_manager_binding_;
FirebaseAuthImpl firebase_auth_;
int report_observation_count_ = 0;
backoff::TestBackoff* backoff_;
@@ -90,7 +90,7 @@
};
TEST_F(FirebaseAuthImplTest, GetFirebaseToken) {
- token_provider_.Set("this is a token", "some id", "me@example.com");
+ token_manager_.Set("this is a token", "some id", "me@example.com");
bool called;
AuthStatus auth_status;
@@ -108,7 +108,7 @@
bool called;
AuthStatus auth_status;
std::string firebase_token;
- token_provider_.SetError(fuchsia::modular::auth::Status::NETWORK_ERROR);
+ token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
backoff_->SetOnGetNext(QuitLoopClosure());
firebase_auth_.GetFirebaseToken(callback::Capture(
callback::SetWhenCalled(&called), &auth_status, &firebase_token));
@@ -118,7 +118,7 @@
EXPECT_EQ(0, backoff_->reset_count);
EXPECT_EQ(0, report_observation_count_);
- token_provider_.Set("this is a token", "some id", "me@example.com");
+ token_manager_.Set("this is a token", "some id", "me@example.com");
RunLoopUntilIdle();
EXPECT_TRUE(called);
EXPECT_EQ(AuthStatus::OK, auth_status);
@@ -129,7 +129,7 @@
}
TEST_F(FirebaseAuthImplTest, GetFirebaseUserId) {
- token_provider_.Set("this is a token", "some id", "me@example.com");
+ token_manager_.Set("this is a token", "some id", "me@example.com");
bool called;
AuthStatus auth_status;
@@ -147,7 +147,7 @@
bool called;
AuthStatus auth_status;
std::string firebase_id;
- token_provider_.SetError(fuchsia::modular::auth::Status::NETWORK_ERROR);
+ token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
backoff_->SetOnGetNext(QuitLoopClosure());
firebase_auth_.GetFirebaseUserId(callback::Capture(
callback::SetWhenCalled(&called), &auth_status, &firebase_id));
@@ -157,7 +157,7 @@
EXPECT_EQ(0, backoff_->reset_count);
EXPECT_EQ(0, report_observation_count_);
- token_provider_.Set("this is a token", "some id", "me@example.com");
+ token_manager_.Set("this is a token", "some id", "me@example.com");
RunLoopUntilIdle();
EXPECT_TRUE(called);
EXPECT_EQ(AuthStatus::OK, auth_status);
@@ -170,7 +170,7 @@
TEST_F(FirebaseAuthImplTest, GetFirebaseUserIdMaxRetry) {
bool called;
AuthStatus auth_status;
- token_provider_.SetError(fuchsia::modular::auth::Status::NETWORK_ERROR);
+ token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
backoff_->SetOnGetNext(QuitLoopClosure());
firebase_auth_.GetFirebaseUserId(callback::Capture(
callback::SetWhenCalled(&called), &auth_status, &std::ignore));
@@ -181,7 +181,7 @@
EXPECT_EQ(0, report_observation_count_);
// Exceeding the maximum number of retriable errors returns an error.
- token_provider_.SetError(fuchsia::modular::auth::Status::INTERNAL_ERROR);
+ token_manager_.SetError(fuchsia::auth::Status::INTERNAL_ERROR);
RunLoopUntilIdle();
EXPECT_TRUE(called);
EXPECT_EQ(AuthStatus::ERROR, auth_status);
@@ -193,7 +193,7 @@
TEST_F(FirebaseAuthImplTest, GetFirebaseUserIdNonRetriableError) {
bool called;
AuthStatus auth_status;
- token_provider_.SetError(fuchsia::modular::auth::Status::BAD_REQUEST);
+ token_manager_.SetError(fuchsia::auth::Status::INVALID_REQUEST);
backoff_->SetOnGetNext(QuitLoopClosure());
firebase_auth_.GetFirebaseUserId(callback::Capture(
callback::SetWhenCalled(&called), &auth_status, &std::ignore));
diff --git a/lib/firebase_auth/firebase_auth_v2_impl_unittest.cc b/lib/firebase_auth/firebase_auth_v2_impl_unittest.cc
deleted file mode 100644
index d69b184..0000000
--- a/lib/firebase_auth/firebase_auth_v2_impl_unittest.cc
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2018 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/lib/firebase_auth/firebase_auth_impl.h"
-
-#include <utility>
-
-#include <fuchsia/auth/cpp/fidl.h>
-#include <lib/backoff/testing/test_backoff.h>
-#include <lib/callback/capture.h>
-#include <lib/callback/set_when_called.h>
-#include <lib/fidl/cpp/binding.h>
-#include <lib/fxl/functional/make_copyable.h>
-#include <lib/gtest/test_loop_fixture.h>
-
-#include "peridot/lib/firebase_auth/testing/test_token_manager.h"
-
-namespace firebase_auth {
-
-namespace {
-
-class MockCobaltLogger : public cobalt::CobaltLogger {
- public:
- ~MockCobaltLogger() override = default;
-
- MockCobaltLogger(int* called) : called_(called) {}
-
- void LogEvent(uint32_t metric_id, uint32_t event_code) override {}
- void LogEventCount(uint32_t metric_id, uint32_t event_code,
- const std::string& component, zx::duration period_duration,
- int64_t count) override {
- EXPECT_EQ(4u, metric_id);
- // The value should contain the client name.
- EXPECT_TRUE(component.find("firebase-test") != std::string::npos);
- *called_ += 1;
- }
- void LogElapsedTime(uint32_t metric_id, uint32_t event_code,
- const std::string& component,
- zx::duration elapsed_time) override {}
- void LogFrameRate(uint32_t metric_id, uint32_t event_code,
- const std::string& component, float fps) override {}
- void LogMemoryUsage(uint32_t metric_id, uint32_t event_code,
- const std::string& component, int64_t bytes) override {}
- void LogString(uint32_t metric_id, const std::string& s) override {}
- void StartTimer(uint32_t metric_id, uint32_t event_code,
- const std::string& component, const std::string& timer_id,
- zx::time timestamp, zx::duration timeout) override {}
- void EndTimer(const std::string& timer_id, zx::time timestamp,
- zx::duration timeout) override {}
- void LogIntHistogram(
- uint32_t metric_id, uint32_t event_code, const std::string& component,
- std::vector<fuchsia::cobalt::HistogramBucket> histogram) override {}
- void LogCustomEvent(
- uint32_t metric_id,
- std::vector<fuchsia::cobalt::CustomEventValue> event_values) override {}
-
- private:
- int* called_;
-};
-
-class FirebaseAuthV2ImplTest : public gtest::TestLoopFixture {
- public:
- FirebaseAuthV2ImplTest()
- : token_manager_(dispatcher()),
- token_manager_binding_(&token_manager_),
- firebase_auth_(
- {"api_key", "firebase-test", 1}, dispatcher(), nullptr,
- token_manager_binding_.NewBinding().Bind(), InitBackoff(),
- std::make_unique<MockCobaltLogger>(&report_observation_count_)) {}
-
- ~FirebaseAuthV2ImplTest() override {}
-
- protected:
- std::unique_ptr<backoff::Backoff> InitBackoff() {
- // TODO(LE-630): Don't use a backoff duration of 0.
- auto backoff = std::make_unique<backoff::TestBackoff>(zx::sec(0));
- backoff_ = backoff.get();
- return backoff;
- }
-
- TestTokenManager token_manager_;
- fidl::Binding<fuchsia::auth::TokenManager> token_manager_binding_;
- FirebaseAuthImpl firebase_auth_;
- int report_observation_count_ = 0;
- backoff::TestBackoff* backoff_;
-
- private:
- FXL_DISALLOW_COPY_AND_ASSIGN(FirebaseAuthV2ImplTest);
-};
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseToken) {
- token_manager_.Set("this is a token", "some id", "me@example.com");
-
- bool called;
- AuthStatus auth_status;
- std::string firebase_token;
- firebase_auth_.GetFirebaseToken(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &firebase_token));
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::OK, auth_status);
- EXPECT_EQ("this is a token", firebase_token);
- EXPECT_EQ(0, report_observation_count_);
-}
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseTokenRetryOnError) {
- bool called;
- AuthStatus auth_status;
- std::string firebase_token;
- token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
- backoff_->SetOnGetNext(QuitLoopClosure());
- firebase_auth_.GetFirebaseToken(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &firebase_token));
- RunLoopUntilIdle();
- EXPECT_FALSE(called);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(0, backoff_->reset_count);
- EXPECT_EQ(0, report_observation_count_);
-
- token_manager_.Set("this is a token", "some id", "me@example.com");
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::OK, auth_status);
- EXPECT_EQ("this is a token", firebase_token);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(1, backoff_->reset_count);
- EXPECT_EQ(0, report_observation_count_);
-}
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseUserId) {
- token_manager_.Set("this is a token", "some id", "me@example.com");
-
- bool called;
- AuthStatus auth_status;
- std::string firebase_user_id;
- firebase_auth_.GetFirebaseUserId(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &firebase_user_id));
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::OK, auth_status);
- EXPECT_EQ("some id", firebase_user_id);
- EXPECT_EQ(0, report_observation_count_);
-}
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseUserIdRetryOnError) {
- bool called;
- AuthStatus auth_status;
- std::string firebase_id;
- token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
- backoff_->SetOnGetNext(QuitLoopClosure());
- firebase_auth_.GetFirebaseUserId(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &firebase_id));
- RunLoopUntilIdle();
- EXPECT_FALSE(called);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(0, backoff_->reset_count);
- EXPECT_EQ(0, report_observation_count_);
-
- token_manager_.Set("this is a token", "some id", "me@example.com");
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::OK, auth_status);
- EXPECT_EQ("some id", firebase_id);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(1, backoff_->reset_count);
- EXPECT_EQ(0, report_observation_count_);
-}
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseUserIdMaxRetry) {
- bool called;
- AuthStatus auth_status;
- token_manager_.SetError(fuchsia::auth::Status::NETWORK_ERROR);
- backoff_->SetOnGetNext(QuitLoopClosure());
- firebase_auth_.GetFirebaseUserId(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &std::ignore));
- RunLoopUntilIdle();
- EXPECT_FALSE(called);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(0, backoff_->reset_count);
- EXPECT_EQ(0, report_observation_count_);
-
- // Exceeding the maximum number of retriable errors returns an error.
- token_manager_.SetError(fuchsia::auth::Status::INTERNAL_ERROR);
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::ERROR, auth_status);
- EXPECT_EQ(1, backoff_->get_next_count);
- EXPECT_EQ(1, backoff_->reset_count);
- EXPECT_EQ(1, report_observation_count_);
-}
-
-TEST_F(FirebaseAuthV2ImplTest, GetFirebaseUserIdNonRetriableError) {
- bool called;
- AuthStatus auth_status;
- token_manager_.SetError(fuchsia::auth::Status::INVALID_REQUEST);
- backoff_->SetOnGetNext(QuitLoopClosure());
- firebase_auth_.GetFirebaseUserId(callback::Capture(
- callback::SetWhenCalled(&called), &auth_status, &std::ignore));
- RunLoopUntilIdle();
- EXPECT_TRUE(called);
- EXPECT_EQ(AuthStatus::ERROR, auth_status);
- EXPECT_EQ(0, backoff_->get_next_count);
- EXPECT_EQ(1, backoff_->reset_count);
- EXPECT_EQ(1, report_observation_count_);
-}
-
-} // namespace
-
-} // namespace firebase_auth
diff --git a/lib/firebase_auth/testing/BUILD.gn b/lib/firebase_auth/testing/BUILD.gn
index f06a322..bcbe5ae 100644
--- a/lib/firebase_auth/testing/BUILD.gn
+++ b/lib/firebase_auth/testing/BUILD.gn
@@ -13,21 +13,16 @@
sources = [
"fake_token_manager.cc",
"fake_token_manager.h",
- "fake_token_provider.cc",
- "fake_token_provider.h",
"test_firebase_auth.cc",
"test_firebase_auth.h",
"test_token_manager.cc",
"test_token_manager.h",
- "test_token_provider.cc",
- "test_token_provider.h",
]
public_deps = [
"//garnet/public/fidl/fuchsia.auth",
"//peridot/lib/firebase_auth",
"//peridot/lib/rng",
- "//peridot/public/fidl/fuchsia.modular.auth",
]
deps = [
@@ -45,8 +40,6 @@
sources = [
"service_account_token_minter.cc",
"service_account_token_minter.h",
- "service_account_token_provider.cc",
- "service_account_token_provider.h",
"service_account_token_manager.cc",
"service_account_token_manager.h",
]
@@ -57,7 +50,6 @@
"//garnet/public/lib/callback",
"//garnet/public/lib/fxl",
"//garnet/public/lib/network_wrapper",
- "//peridot/public/fidl/fuchsia.modular.auth",
]
deps = [
@@ -122,7 +114,6 @@
"service_account_test_util.h",
"service_account_test_util.cc",
"service_account_token_minter_unittest.cc",
- "service_account_token_provider_unittest.cc",
"service_account_token_manager_unittest.cc",
]
diff --git a/lib/firebase_auth/testing/fake_token_provider.cc b/lib/firebase_auth/testing/fake_token_provider.cc
deleted file mode 100644
index 5e1fa05..0000000
--- a/lib/firebase_auth/testing/fake_token_provider.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2016 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/lib/firebase_auth/testing/fake_token_provider.h"
-
-#include <lib/fxl/logging.h>
-
-#include "peridot/lib/convert/convert.h"
-
-namespace firebase_auth {
-
-FakeTokenProvider::FakeTokenProvider(rng::Random* random)
- : firebase_id_token_(""),
- firebase_local_id_(convert::ToHex(random->RandomUniqueBytes())),
- email_("dummy@example.com"),
- client_id_("client_id") {}
-
-void FakeTokenProvider::GetAccessToken(GetAccessTokenCallback callback) {
- fuchsia::modular::auth::AuthErr error;
- error.status = fuchsia::modular::auth::Status::OK;
- error.message = "";
- FXL_NOTIMPLEMENTED() << "FakeTokenProvider::GetAccessToken not implemented";
- callback(nullptr, std::move(error));
-}
-
-void FakeTokenProvider::GetIdToken(GetIdTokenCallback callback) {
- fuchsia::modular::auth::AuthErr error;
- error.status = fuchsia::modular::auth::Status::OK;
- error.message = "";
- FXL_NOTIMPLEMENTED() << "FakeTokenProvider::GetIdToken not implemented";
- callback(nullptr, std::move(error));
-}
-
-void FakeTokenProvider::GetFirebaseAuthToken(
- fidl::StringPtr /*firebase_api_key*/,
- GetFirebaseAuthTokenCallback callback) {
- fuchsia::modular::auth::AuthErr error;
- error.status = fuchsia::modular::auth::Status::OK;
- error.message = "";
- if (firebase_local_id_.empty()) {
- callback(nullptr, std::move(error));
- return;
- }
- fuchsia::modular::auth::FirebaseTokenPtr token =
- fuchsia::modular::auth::FirebaseToken::New();
- token->id_token = firebase_id_token_;
- token->local_id = firebase_local_id_;
- token->email = email_;
- callback(std::move(token), std::move(error));
-}
-
-void FakeTokenProvider::GetClientId(GetClientIdCallback callback) {
- if (client_id_.empty()) {
- callback(nullptr);
- } else {
- callback(client_id_);
- }
-}
-
-} // namespace firebase_auth
diff --git a/lib/firebase_auth/testing/fake_token_provider.h b/lib/firebase_auth/testing/fake_token_provider.h
deleted file mode 100644
index 93b642a..0000000
--- a/lib/firebase_auth/testing/fake_token_provider.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2016 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PERIDOT_LIB_FIREBASE_AUTH_TESTING_FAKE_TOKEN_PROVIDER_H_
-#define PERIDOT_LIB_FIREBASE_AUTH_TESTING_FAKE_TOKEN_PROVIDER_H_
-
-#include <functional>
-
-#include <fuchsia/modular/auth/cpp/fidl.h>
-#include <lib/fxl/macros.h>
-
-#include "peridot/lib/rng/random.h"
-
-namespace firebase_auth {
-// FakeTokenProvider is a dummy implementation of a TokenProvider intended to be
-// used to connect to unauthenticated firebase instances.
-//
-// The local ID Firebase token are set to a random UUID fixed at the
-// construction time.
-//
-// Other token values are set to dummy const values.
-class FakeTokenProvider : public fuchsia::modular::auth::TokenProvider {
- public:
- FakeTokenProvider(rng::Random* random);
- ~FakeTokenProvider() override {}
-
- private:
- void GetAccessToken(GetAccessTokenCallback callback) override;
- void GetIdToken(GetIdTokenCallback callback) override;
- void GetFirebaseAuthToken(fidl::StringPtr firebase_api_key,
- GetFirebaseAuthTokenCallback callback) override;
- void GetClientId(GetClientIdCallback callback) override;
-
- std::string firebase_id_token_;
- std::string firebase_local_id_;
- std::string email_;
- std::string client_id_;
- FXL_DISALLOW_COPY_AND_ASSIGN(FakeTokenProvider);
-};
-
-} // namespace firebase_auth
-
-#endif // PERIDOT_LIB_FIREBASE_AUTH_TESTING_FAKE_TOKEN_PROVIDER_H_
diff --git a/lib/firebase_auth/testing/service_account_token_provider.cc b/lib/firebase_auth/testing/service_account_token_provider.cc
deleted file mode 100644
index f421545..0000000
--- a/lib/firebase_auth/testing/service_account_token_provider.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/lib/firebase_auth/testing/service_account_token_provider.h"
-
-#include <lib/fxl/logging.h>
-
-namespace service_account {
-
-namespace {
-
-fuchsia::modular::auth::Status ConvertStatus(
- ServiceAccountTokenMinter::Status status) {
- switch (status) {
- case ServiceAccountTokenMinter::Status::OK:
- return fuchsia::modular::auth::Status::OK;
- case ServiceAccountTokenMinter::Status::AUTH_SERVER_ERROR:
- return fuchsia::modular::auth::Status::OAUTH_SERVER_ERROR;
- case ServiceAccountTokenMinter::Status::BAD_RESPONSE:
- return fuchsia::modular::auth::Status::BAD_RESPONSE;
- case ServiceAccountTokenMinter::Status::NETWORK_ERROR:
- return fuchsia::modular::auth::Status::NETWORK_ERROR;
- case ServiceAccountTokenMinter::Status::INTERNAL_ERROR:
- default:
- return fuchsia::modular::auth::Status::INTERNAL_ERROR;
- }
-}
-
-fuchsia::modular::auth::AuthErr GetError(fuchsia::modular::auth::Status status,
- std::string message) {
- fuchsia::modular::auth::AuthErr error;
- error.status = status;
- error.message = message;
- return error;
-}
-
-} // namespace
-
-ServiceAccountTokenProvider::ServiceAccountTokenProvider(
- network_wrapper::NetworkWrapper* network_wrapper,
- std::unique_ptr<Credentials> credentials, std::string user_id)
- : service_account_token_minter_(network_wrapper, std::move(credentials),
- std::move(user_id)) {}
-
-ServiceAccountTokenProvider::~ServiceAccountTokenProvider() {}
-
-void ServiceAccountTokenProvider::GetAccessToken(
- GetAccessTokenCallback callback) {
- FXL_NOTIMPLEMENTED();
- callback(nullptr, GetError(fuchsia::modular::auth::Status::INTERNAL_ERROR,
- "Not implemented."));
-}
-
-void ServiceAccountTokenProvider::GetIdToken(GetIdTokenCallback callback) {
- FXL_NOTIMPLEMENTED();
- callback(nullptr, GetError(fuchsia::modular::auth::Status::INTERNAL_ERROR,
- "Not implemented."));
-}
-
-void ServiceAccountTokenProvider::GetFirebaseAuthToken(
- fidl::StringPtr firebase_api_key, GetFirebaseAuthTokenCallback callback) {
- service_account_token_minter_.GetFirebaseToken(
- std::move(firebase_api_key),
- [this, callback = std::move(callback)](
- const ServiceAccountTokenMinter::GetTokenResponse& response) {
- auto error =
- GetError(ConvertStatus(response.status), response.error_msg);
-
- if (response.status == ServiceAccountTokenMinter::Status::OK) {
- auto fb_token = fuchsia::modular::auth::FirebaseToken::New();
- fb_token->id_token = response.id_token;
- fb_token->local_id = response.local_id;
- fb_token->email = response.email;
- callback(std::move(fb_token), std::move(error));
- } else {
- callback(nullptr, std::move(error));
- }
- });
-}
-
-void ServiceAccountTokenProvider::GetClientId(GetClientIdCallback callback) {
- callback(service_account_token_minter_.GetClientId());
-}
-
-} // namespace service_account
diff --git a/lib/firebase_auth/testing/service_account_token_provider.h b/lib/firebase_auth/testing/service_account_token_provider.h
deleted file mode 100644
index 4256cd9..0000000
--- a/lib/firebase_auth/testing/service_account_token_provider.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PERIDOT_LIB_FIREBASE_AUTH_TESTING_SERVICE_ACCOUNT_TOKEN_PROVIDER_H_
-#define PERIDOT_LIB_FIREBASE_AUTH_TESTING_SERVICE_ACCOUNT_TOKEN_PROVIDER_H_
-
-#include <map>
-
-#include <fuchsia/modular/auth/cpp/fidl.h>
-#include <lib/fxl/macros.h>
-
-#include "peridot/lib/firebase_auth/testing/service_account_token_minter.h"
-
-namespace service_account {
-
-// An implementation of |TokenProvider| that uses a Firebase service account to
-// register a new user of the given id and mint tokens for it.
-class ServiceAccountTokenProvider
- : public fuchsia::modular::auth::TokenProvider {
- public:
- ServiceAccountTokenProvider(network_wrapper::NetworkWrapper* network_wrapper,
- std::unique_ptr<Credentials> credentials,
- std::string user_id);
- ~ServiceAccountTokenProvider() override;
-
- // fuchsia::modular::auth::TokenProvider:
- void GetAccessToken(GetAccessTokenCallback callback) override;
- void GetIdToken(GetIdTokenCallback callback) override;
- void GetFirebaseAuthToken(fidl::StringPtr firebase_api_key,
- GetFirebaseAuthTokenCallback callback) override;
- void GetClientId(GetClientIdCallback callback) override;
-
- private:
- ServiceAccountTokenMinter service_account_token_minter_;
-
- FXL_DISALLOW_COPY_AND_ASSIGN(ServiceAccountTokenProvider);
-};
-
-}; // namespace service_account
-
-#endif // PERIDOT_LIB_FIREBASE_AUTH_TESTING_SERVICE_ACCOUNT_TOKEN_PROVIDER_H_
diff --git a/lib/firebase_auth/testing/service_account_token_provider_unittest.cc b/lib/firebase_auth/testing/service_account_token_provider_unittest.cc
deleted file mode 100644
index e03b960..0000000
--- a/lib/firebase_auth/testing/service_account_token_provider_unittest.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/lib/firebase_auth/testing/service_account_token_provider.h"
-
-#include <lib/callback/capture.h>
-#include <lib/callback/set_when_called.h>
-#include <lib/fsl/vmo/strings.h>
-#include <lib/fxl/files/file.h>
-#include <lib/fxl/logging.h>
-#include <lib/fxl/strings/string_number_conversions.h>
-#include <lib/gtest/test_loop_fixture.h>
-#include <lib/network_wrapper/fake_network_wrapper.h>
-#include <rapidjson/stringbuffer.h>
-#include <rapidjson/writer.h>
-
-#include "peridot/lib/firebase_auth/testing/service_account_test_constants.h"
-#include "peridot/lib/firebase_auth/testing/service_account_test_util.h"
-
-namespace service_account {
-namespace {
-namespace http = ::fuchsia::net::oldhttp;
-
-class ServiceAccountTokenProviderTest : public gtest::TestLoopFixture {
- public:
- ServiceAccountTokenProviderTest()
- : network_wrapper_(dispatcher()),
- token_provider_(&network_wrapper_,
- Credentials::Parse(kTestServiceAccountConfig),
- "user_id") {}
-
- protected:
- bool GetToken(std::string api_key,
- fuchsia::modular::auth::FirebaseTokenPtr* token,
- fuchsia::modular::auth::AuthErr* error) {
- bool called;
- token_provider_.GetFirebaseAuthToken(
- api_key,
- callback::Capture(callback::SetWhenCalled(&called), token, error));
- RunLoopUntilIdle();
- return called;
- }
-
- network_wrapper::FakeNetworkWrapper network_wrapper_;
- ServiceAccountTokenProvider token_provider_;
-};
-
-TEST_F(ServiceAccountTokenProviderTest, GetToken) {
- network_wrapper_.SetResponse(GetResponseForTest(
- nullptr, 200, GetSuccessResponseBodyForTest("token", 3600)));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- ASSERT_EQ(fuchsia::modular::auth::Status::OK, error.status) << error.message;
- ASSERT_EQ("token", token->id_token);
-}
-
-TEST_F(ServiceAccountTokenProviderTest, GetTokenFromCache) {
- network_wrapper_.SetResponse(GetResponseForTest(
- nullptr, 200, GetSuccessResponseBodyForTest("token", 3600)));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::OK, error.status) << error.message;
- EXPECT_EQ("token", token->id_token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-
- network_wrapper_.ResetRequest();
- network_wrapper_.SetResponse(GetResponseForTest(
- nullptr, 200, GetSuccessResponseBodyForTest("token2", 3600)));
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::OK, error.status) << error.message;
- EXPECT_EQ("token", token->id_token);
- EXPECT_FALSE(network_wrapper_.GetRequest());
-}
-
-TEST_F(ServiceAccountTokenProviderTest, GetTokenNoCacheCache) {
- network_wrapper_.SetResponse(GetResponseForTest(
- nullptr, 200, GetSuccessResponseBodyForTest("token", 0)));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::OK, error.status) << error.message;
- EXPECT_EQ("token", token->id_token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-
- network_wrapper_.SetResponse(GetResponseForTest(
- nullptr, 200, GetSuccessResponseBodyForTest("token2", 0)));
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::OK, error.status) << error.message;
- EXPECT_EQ("token2", token->id_token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-}
-
-TEST_F(ServiceAccountTokenProviderTest, NetworkError) {
- auto network_error = http::HttpError::New();
- network_error->description = "Error";
-
- network_wrapper_.SetResponse(
- GetResponseForTest(std::move(network_error), 0, ""));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::NETWORK_ERROR, error.status);
- EXPECT_FALSE(token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-}
-
-TEST_F(ServiceAccountTokenProviderTest, AuthenticationError) {
- network_wrapper_.SetResponse(
- GetResponseForTest(nullptr, 401, "Unauthorized"));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::OAUTH_SERVER_ERROR, error.status);
- EXPECT_FALSE(token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-}
-
-TEST_F(ServiceAccountTokenProviderTest, ResponseFormatError) {
- network_wrapper_.SetResponse(GetResponseForTest(nullptr, 200, ""));
-
- fuchsia::modular::auth::FirebaseTokenPtr token;
- fuchsia::modular::auth::AuthErr error;
-
- ASSERT_TRUE(GetToken("api_key", &token, &error));
- EXPECT_EQ(fuchsia::modular::auth::Status::BAD_RESPONSE, error.status);
- EXPECT_FALSE(token);
- EXPECT_TRUE(network_wrapper_.GetRequest());
-}
-
-} // namespace
-} // namespace service_account
diff --git a/lib/firebase_auth/testing/test_token_provider.cc b/lib/firebase_auth/testing/test_token_provider.cc
deleted file mode 100644
index 59a1205..0000000
--- a/lib/firebase_auth/testing/test_token_provider.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "peridot/lib/firebase_auth/testing/test_token_provider.h"
-
-#include <lib/async/cpp/task.h>
-#include <lib/fidl/cpp/clone.h>
-#include <lib/fidl/cpp/optional.h>
-#include <lib/fxl/logging.h>
-
-namespace firebase_auth {
-TestTokenProvider::TestTokenProvider(async_dispatcher_t* dispatcher)
- : dispatcher_(dispatcher) {
- error_to_return_.status = fuchsia::modular::auth::Status::OK;
- error_to_return_.message = "";
-}
-
-TestTokenProvider::~TestTokenProvider() {}
-
-void TestTokenProvider::GetAccessToken(GetAccessTokenCallback /*callback*/) {
- FXL_NOTIMPLEMENTED();
-}
-
-void TestTokenProvider::GetIdToken(GetIdTokenCallback /*callback*/) {
- FXL_NOTIMPLEMENTED();
-}
-
-void TestTokenProvider::GetFirebaseAuthToken(
- fidl::StringPtr /*firebase_api_key*/,
- GetFirebaseAuthTokenCallback callback) {
- fuchsia::modular::auth::FirebaseTokenPtr token_to_return_copy;
- fidl::Clone(token_to_return_, &token_to_return_copy);
- fuchsia::modular::auth::AuthErr error_to_return_copy;
- fidl::Clone(error_to_return_, &error_to_return_copy);
- async::PostTask(
- dispatcher_, [token_to_return = std::move(token_to_return_copy),
- error_to_return = std::move(error_to_return_copy),
- callback = std::move(callback)]() mutable {
- callback(std::move(token_to_return), std::move(error_to_return));
- });
-}
-
-void TestTokenProvider::GetClientId(GetClientIdCallback /*callback*/) {
- FXL_NOTIMPLEMENTED();
-}
-
-void TestTokenProvider::Set(std::string id_token, std::string local_id,
- std::string email) {
- token_to_return_ = fuchsia::modular::auth::FirebaseToken::New();
- token_to_return_->id_token = id_token;
- token_to_return_->local_id = local_id;
- token_to_return_->email = email;
- error_to_return_.status = fuchsia::modular::auth::Status::OK;
- error_to_return_.message = "";
-}
-
-void TestTokenProvider::SetError(fuchsia::modular::auth::Status error) {
- FXL_CHECK(error != fuchsia::modular::auth::Status::OK);
- token_to_return_ = nullptr;
- error_to_return_.status = error;
-}
-} // namespace firebase_auth
diff --git a/lib/firebase_auth/testing/test_token_provider.h b/lib/firebase_auth/testing/test_token_provider.h
deleted file mode 100644
index e3bc8f3..0000000
--- a/lib/firebase_auth/testing/test_token_provider.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PERIDOT_LIB_FIREBASE_AUTH_TESTING_TEST_TOKEN_PROVIDER_H_
-#define PERIDOT_LIB_FIREBASE_AUTH_TESTING_TEST_TOKEN_PROVIDER_H_
-
-#include <string>
-
-#include <fuchsia/modular/auth/cpp/fidl.h>
-#include <lib/async/dispatcher.h>
-#include <lib/fxl/functional/make_copyable.h>
-#include <lib/fxl/memory/ref_ptr.h>
-
-namespace firebase_auth {
-
-class TestTokenProvider : public fuchsia::modular::auth::TokenProvider {
- public:
- explicit TestTokenProvider(async_dispatcher_t* dispatcher);
-
- ~TestTokenProvider() override;
-
- // fuchsia::modular::auth::TokenProvider:
- void GetAccessToken(GetAccessTokenCallback callback) override;
-
- void GetIdToken(GetIdTokenCallback callback) override;
-
- void GetFirebaseAuthToken(fidl::StringPtr firebase_api_key,
- GetFirebaseAuthTokenCallback callback) override;
-
- void GetClientId(GetClientIdCallback /*callback*/) override;
-
- // Sets the token to return with the provided parameters, and status to OK.
- void Set(std::string id_token, std::string local_id, std::string email);
-
- // Sets the token to return to null, and status to |error|.
- // |error| must not be OK.
- void SetError(fuchsia::modular::auth::Status error);
-
- private:
- async_dispatcher_t* const dispatcher_;
- fuchsia::modular::auth::FirebaseTokenPtr token_to_return_;
- fuchsia::modular::auth::AuthErr error_to_return_;
-
- FXL_DISALLOW_COPY_AND_ASSIGN(TestTokenProvider);
-};
-
-} // namespace firebase_auth
-
-#endif // PERIDOT_LIB_FIREBASE_AUTH_TESTING_TEST_TOKEN_PROVIDER_H_
diff --git a/public/fidl/fuchsia.modular.auth/BUILD.gn b/public/fidl/fuchsia.modular.auth/BUILD.gn
index e75d35f..f5bbc15 100644
--- a/public/fidl/fuchsia.modular.auth/BUILD.gn
+++ b/public/fidl/fuchsia.modular.auth/BUILD.gn
@@ -4,8 +4,6 @@
import("//build/fidl/fidl.gni")
-# TODO(alhaad/ukode): Move token_provider.fidl into a separate rule since
-# third-party components should only depend on it.
# TODO(alhaad/ukode): Also move these services to a separate repository.
fidl("fuchsia.modular.auth") {
sdk_category = "partner"
@@ -13,7 +11,6 @@
sources = [
"account/account.fidl",
"account_provider.fidl",
- "token_provider.fidl",
]
deps = [
diff --git a/public/fidl/fuchsia.modular.auth/account_provider.fidl b/public/fidl/fuchsia.modular.auth/account_provider.fidl
index 66d682b..e32a85c 100644
--- a/public/fidl/fuchsia.modular.auth/account_provider.fidl
+++ b/public/fidl/fuchsia.modular.auth/account_provider.fidl
@@ -6,18 +6,48 @@
using fuchsia.ui.viewsv1token;
+// Authentication errors returned by AccountProvider. It contains error status
+// code along with a detailed error message.
+struct AuthErr {
+ Status status;
+ string message;
+};
+
+// Specifies the success/failure status.
+enum Status {
+ // Success
+ OK = 0;
+ // A problem with client configuration such as invalid_client, missing params
+ // etc. This should happen only in development not at run-time, unless
+ // user/developer changes any of this config. No retry is required.
+ BAD_REQUEST = 1;
+ // Unable to parse the server side response. Retry is optional, this error
+ // should be extremely rare.
+ BAD_RESPONSE = 2;
+ // Server is reachable and propagated an error returned by OAuth Server
+ // backends. That kind of error cannot be fixed on retries, and has some
+ // root cause that needs to be addressed either in the client's configuration
+ // or because the user explicitly revoked access to the client app. For
+ // instance: invalid_token, expired_token, invalid_client_id, invalid_user,
+ // invalid_args, etc.
+ OAUTH_SERVER_ERROR = 3;
+ // User cancelled the flow, no need to retry.
+ USER_CANCELLED = 4;
+ // Network error, eg. unreachable. This may be temporary, a retry is
+ // recommended.
+ NETWORK_ERROR = 5;
+ // Internal error. Retry is optional, this error should be rare.
+ INTERNAL_ERROR = 6;
+};
+
// An interface that allows the Framework to talk to the token manager service
-// to add new accounts or be able to get a |TokenProviderFactory| that can be
-// used to provide specialized instances of |TokenProvider| to third party
-// agents.
+// to add new accounts and be able to mint the corresponding |TokenManager|
+// specialized instances for thid party agents and first party ledger client.
//
-// This is only meant to be used by the Framework.
+// This is only meant to be used by the Framework and will be replaced with
+// |AccountManager| in the near future.
[Discoverable]
interface AccountProvider {
- // Called by the Framework once, right after starting up a token manager
- // application.
- 1: Initialize(AccountProviderContext account_provider_context);
-
// Adds a new user account. This involves talking to the identity provider and
// fetching profile attributes.
2: AddAccount(IdentityProvider identity_provider)
@@ -39,38 +69,8 @@
// device.
3: RemoveAccount(Account account, bool revoke_all) -> (AuthErr status);
- // Get a |TokenProviderFactory| associated with an |account_id|. It is used by
- // the Framework to provide instances of |TokenProvider| to third party
- // Agents.
- 4: GetTokenProviderFactory(string account_id,
- request<TokenProviderFactory> request);
-
// This signals |AccountProvider| to teardown itself. After the
// AccountProvider responds by closing its handle, the caller may terminate
// the |AccountProvider| application if it hasn't already exited.
5: Terminate();
};
-
-interface TokenProviderFactory {
- 1: GetTokenProvider(string application_url, request<TokenProvider> request);
-};
-
-// Implemented by basemgr and provided to AccountProvider.Initialize().
-interface AccountProviderContext {
- // Used by the token mangager application to request the Framework to display
- // a view to the user.
- 1: GetAuthenticationContext(string account_id, request<AuthenticationContext> request);
-};
-
-// This interface is implemented by base shell. It is used to notify the
-// base shell that a view for login needs to be started or stopped. The base
-// shell can close this connection if it wants to cancel the current
-// authentication flow.
-interface AuthenticationContext {
- // Requests base shell to display |view_owner| for authentication. No other
- // call to StartOverlay() must be made until StopOverlay() has been called.
- 1: StartOverlay(fuchsia.ui.viewsv1token.ViewOwner view_owner);
-
- // Requests base shell to stop displaying the auth view.
- 2: StopOverlay();
-};
diff --git a/public/fidl/fuchsia.modular.auth/token_provider.fidl b/public/fidl/fuchsia.modular.auth/token_provider.fidl
deleted file mode 100644
index 6e54207..0000000
--- a/public/fidl/fuchsia.modular.auth/token_provider.fidl
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-library fuchsia.modular.auth;
-
-// This interface provides tokens to Agents for their current user. This service
-// can be obtained by agents via AgentContext.GetTokenProvider().
-[Discoverable]
-interface TokenProvider {
- // Gets the access token (with pre-defined scopes) for this user. Access token
- // is returned from cache if not expired, otherwise refreshed from the server.
- //
- // Empty response is returned if running in incognito mode.
- 1: GetAccessToken() -> (string? access_token, AuthErr auth_err);
-
- // Gets the Identity token (with pre-defined scopes) for this user. Identity
- // token is returned from cache if not expired, otherwise refreshed from the
- // server.
- //
- // Empty response is returned if running in incognito mode.
- 2: GetIdToken() -> (string? id_token, AuthErr auth_err);
-
- // Gets the |FirebaseToken| for this user for the specified firebase api key.
- // This api invokes firebase auth's VerifyAssertion endpoint that takes an
- // OAuth IdToken as the input. Firebase auth token is returned from cache if
- // not expired, otherwise refreshed from the server.
- //
- // Empty response is returned if running in incognito mode.
- 3: GetFirebaseAuthToken(string firebase_api_key)
- -> (FirebaseToken? firebase_token, AuthErr auth_err);
-
- // Returns the client id used to fetch the above tokens.
- 4: GetClientId() -> (string? client_id);
-};
-
-// Authentication errors returned by Token Manager. It contains error status
-// code along with a detailed error message.
-struct AuthErr {
- Status status;
- string message;
-};
-
-// Specifies the success/failure status.
-enum Status {
- // Success
- OK = 0;
- // A problem with client configuration such as invalid_client, missing params
- // etc. This should happen only in development not at run-time, unless
- // user/developer changes any of this config. No retry is required.
- BAD_REQUEST = 1;
- // Unable to parse the server side response. Retry is optional, this error
- // should be extremely rare.
- BAD_RESPONSE = 2;
- // Server is reachable and propagated an error returned by OAuth Server
- // backends. That kind of error cannot be fixed on retries, and has some
- // root cause that needs to be addressed either in the client's configuration
- // or because the user explicitly revoked access to the client app. For
- // instance: invalid_token, expired_token, invalid_client_id, invalid_user,
- // invalid_args, etc.
- OAUTH_SERVER_ERROR = 3;
- // User cancelled the flow, no need to retry.
- USER_CANCELLED = 4;
- // Network error, eg. unreachable. This may be temporary, a retry is
- // recommended.
- NETWORK_ERROR = 5;
- // Internal error. Retry is optional, this error should be rare.
- INTERNAL_ERROR = 6;
-};
-
-// Stores attributes related to a firebase auth token for a given firebase api
-// key. These tokens are obtained by agents using
-// TokenProvider.GetFirebaseAuthToken().
-//
-// These tokens are minted by the Firebase Auth servers and are meant to be used
-// for authorizing users into Firebase services such as DB and storage.
-struct FirebaseToken {
- // The auth token in firebase database and storage requests.
- string id_token;
-
- // Uniquely identifies the user.
- string local_id;
-
- // User's email address as provided by the Identity Provider.
- string email;
-};
diff --git a/public/fidl/fuchsia.modular.internal/sessionmgr.fidl b/public/fidl/fuchsia.modular.internal/sessionmgr.fidl
index 5414a63..5a9f440 100644
--- a/public/fidl/fuchsia.modular.internal/sessionmgr.fidl
+++ b/public/fidl/fuchsia.modular.internal/sessionmgr.fidl
@@ -22,7 +22,6 @@
1: Initialize(fuchsia.modular.auth.Account? account,
fuchsia.modular.AppConfig session_shell,
fuchsia.modular.AppConfig story_shell,
- fuchsia.modular.auth.TokenProviderFactory? token_provider_factory,
fuchsia.auth.TokenManager? ledger_token_manager,
fuchsia.auth.TokenManager? agent_token_manager,
UserContext user_context,
diff --git a/public/fidl/fuchsia.modular/agent/agent_context.fidl b/public/fidl/fuchsia.modular/agent/agent_context.fidl
index 77330b0..c0f0b6d 100644
--- a/public/fidl/fuchsia.modular/agent/agent_context.fidl
+++ b/public/fidl/fuchsia.modular/agent/agent_context.fidl
@@ -5,7 +5,6 @@
library fuchsia.modular;
using fuchsia.auth;
-using fuchsia.modular.auth;
/// An instance of this service is exposed to agents in their namespace.
/// |AgentContext| allows an agent to schedule tasks which run in response to
@@ -17,10 +16,6 @@
/// namespace/environment for Modules.
1: GetComponentContext(request<ComponentContext> request);
- /// The auth token provider this Agent may use for accessing external services.
- /// @Deprecated
- 2: GetTokenProvider(request<fuchsia.modular.auth.TokenProvider> request);
-
/// Connects to an EntityReferenceFactory for this Agent. Entity references
/// obtained from this EntityReferenceFactory will be resolved back to this
/// Agent.
diff --git a/public/fidl/fuchsia.modular/basemgr/base_shell.fidl b/public/fidl/fuchsia.modular/basemgr/base_shell.fidl
index baa12b6..ff27c45 100644
--- a/public/fidl/fuchsia.modular/basemgr/base_shell.fidl
+++ b/public/fidl/fuchsia.modular/basemgr/base_shell.fidl
@@ -5,7 +5,6 @@
library fuchsia.modular;
using fuchsia.auth;
-using fuchsia.modular.auth;
using fuchsia.ui.policy;
// This interface is implemented by a base shell. Dependencies and parameters
@@ -25,17 +24,6 @@
BaseShellParams base_shell_params);
// This method may be invoked by the basemgr to request an
- // AuthenticationContext associated with |username|. |request| will then be
- // used to request the base shell to show login screen during a
- // UserProvider.AddUser() or if a token needs to be refreshed.
- //
- // A |request| is tied to a |username| because the basemgr allows
- // multiple users to be logged in at the same time.
- // Deprecated
- 2: GetAuthenticationContext(string username,
- request<fuchsia.modular.auth.AuthenticationContext> request);
-
- // This method may be invoked by the basemgr to request an
// AuthenticationUIContext. |request| will then be used to request the base
// shell to show login screen during a UserProvider.AddUser() or if a token
// needs to be refreshed.