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

Unified Diff: chrome/common/net/notifier/communicator/single_login_attempt.cc

Issue 2724010: Revert 49298 - Broke compile - Token-based authentication for chromoting.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.cc ('k') | remoting/base/constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/net/notifier/communicator/single_login_attempt.cc
===================================================================
--- chrome/common/net/notifier/communicator/single_login_attempt.cc (revision 49299)
+++ chrome/common/net/notifier/communicator/single_login_attempt.cc (working copy)
@@ -12,7 +12,6 @@
#include "chrome/common/net/notifier/communicator/connection_options.h"
#include "chrome/common/net/notifier/communicator/connection_settings.h"
#include "chrome/common/net/notifier/communicator/const_communicator.h"
-#include "chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.h"
#include "chrome/common/net/notifier/communicator/login_failure.h"
#include "chrome/common/net/notifier/communicator/login_settings.h"
#include "chrome/common/net/notifier/communicator/product_info.h"
@@ -24,6 +23,8 @@
#include "talk/base/taskrunner.h"
#include "talk/base/win32socketinit.h"
#include "talk/xmllite/xmlelement.h"
+#include "talk/xmpp/prexmppauth.h"
+#include "talk/xmpp/saslcookiemechanism.h"
#include "talk/xmpp/xmppclient.h"
#include "talk/xmpp/xmppclientsettings.h"
#include "talk/xmpp/constants.h"
@@ -51,6 +52,91 @@
}
}
+namespace {
+
+const char kGaiaAuthMechanism[] = "X-GOOGLE-TOKEN";
+
+// This class looks for the X-GOOGLE-TOKEN auth mechanism and uses
+// that instead of the default auth mechanism (PLAIN).
+class GaiaTokenPreXmppAuth : public buzz::PreXmppAuth {
+ public:
+ GaiaTokenPreXmppAuth(
+ const std::string& username,
+ const std::string& token,
+ const std::string& token_service)
+ : username_(username),
+ token_(token),
+ token_service_(token_service) {}
+
+ virtual ~GaiaTokenPreXmppAuth() {}
+
+ // buzz::PreXmppAuth (-buzz::SaslHandler) implementation. We stub
+ // all the methods out as we don't actually do any authentication at
+ // this point.
+
+ virtual void StartPreXmppAuth(
+ const buzz::Jid& jid,
+ const talk_base::SocketAddress& server,
+ const talk_base::CryptString& pass,
+ const std::string& auth_cookie) {
+ SignalAuthDone();
+ }
+
+ virtual bool IsAuthDone() const { return true; }
+
+ virtual bool IsAuthorized() const { return true; }
+
+ virtual bool HadError() const { return false; }
+
+ virtual int GetError() const { return 0; }
+
+ virtual buzz::CaptchaChallenge GetCaptchaChallenge() const {
+ return buzz::CaptchaChallenge();
+ }
+
+ virtual std::string GetAuthCookie() const { return std::string(); }
+
+ // buzz::SaslHandler implementation.
+
+ virtual std::string ChooseBestSaslMechanism(
+ const std::vector<std::string> & mechanisms, bool encrypted) {
+ return (std::find(mechanisms.begin(),
+ mechanisms.end(), kGaiaAuthMechanism) !=
+ mechanisms.end()) ? kGaiaAuthMechanism : "";
+ }
+
+ virtual buzz::SaslMechanism* CreateSaslMechanism(
+ const std::string& mechanism) {
+ return
+ (mechanism == kGaiaAuthMechanism) ?
+ new buzz::SaslCookieMechanism(
+ kGaiaAuthMechanism, username_, token_, token_service_)
+ : NULL;
+ }
+
+ // TODO(akalin): remove this code.
+ virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server,
+ std::string* tls_server_hostname,
+ std::string* tls_server_domain) const {
+ std::string server_ip = server.IPAsString();
+ if ((server_ip == buzz::STR_TALK_GOOGLE_COM) ||
+ (server_ip == buzz::STR_TALKX_L_GOOGLE_COM)) {
+ // For Gaia auth, the talk.google.com server expects you to use
+ // "gmail.com" in the stream, and expects the domain certificate
+ // to be "gmail.com" as well.
+ *tls_server_hostname = buzz::STR_GMAIL_COM;
+ *tls_server_domain = buzz::STR_GMAIL_COM;
+ return true;
+ }
+ return false;
+ }
+
+ private:
+ std::string username_, token_, token_service_;
+};
+
+} // namespace
+
SingleLoginAttempt::SingleLoginAttempt(talk_base::TaskParent* parent,
LoginSettings* login_settings,
bool successful_connection)
« no previous file with comments | « chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.cc ('k') | remoting/base/constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698