diff options
author | Andreas Nilsson <andreas.nilsson@10gen.com> | 2013-07-03 17:09:09 +0100 |
---|---|---|
committer | Andreas Nilsson <andreas.nilsson@10gen.com> | 2013-07-03 18:29:37 +0100 |
commit | 00fb45cd97d2314548dc07c2c8e1cc1737fd273f (patch) | |
tree | 39bad422345f565c4bd8c6728eb8eb8a1e6104b1 /src/mongo/db/repl/oplogreader.cpp | |
parent | 3457954bb082d98dfd769d27771d4e30f3f785a5 (diff) | |
download | mongo-00fb45cd97d2314548dc07c2c8e1cc1737fd273f.tar.gz |
SERVER-7455 Common internal cluster auth function
Diffstat (limited to 'src/mongo/db/repl/oplogreader.cpp')
-rw-r--r-- | src/mongo/db/repl/oplogreader.cpp | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/src/mongo/db/repl/oplogreader.cpp b/src/mongo/db/repl/oplogreader.cpp index b2154ba0868..994ea872a30 100644 --- a/src/mongo/db/repl/oplogreader.cpp +++ b/src/mongo/db/repl/oplogreader.cpp @@ -21,9 +21,9 @@ #include "mongo/base/counter.h" #include "mongo/client/dbclientinterface.h" -#include "mongo/db/auth/authorization_manager.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/commands/server_status.h" +#include "mongo/db/auth/security_key.h" #include "mongo/db/dbhelpers.h" #include "mongo/db/jsobj.h" #include "mongo/db/repl/rs.h" // theReplSet @@ -58,30 +58,25 @@ namespace mongo { return false; } - string u; - string p; if (internalSecurity.pwd.length() > 0) { - u = internalSecurity.user; - p = internalSecurity.pwd; + return authenticateInternalUser(conn); } - else { - BSONObj user; - { - Client::ReadContext ctxt("local."); - if( !Helpers::findOne("local.system.users", userReplQuery, user) || - // try the first user in local - !Helpers::getSingleton("local.system.users", user) ) { - log() << "replauthenticate: no user in local.system.users to use for authentication" << endl; - return false; - } + BSONObj user; + { + Client::ReadContext ctxt("local."); + if( !Helpers::findOne("local.system.users", userReplQuery, user) || + // try the first user in local + !Helpers::getSingleton("local.system.users", user) ) { + log() << "replauthenticate: no user in local.system.users to use for authentication" << endl; + return false; } - u = user.getStringField("user"); - p = user.getStringField("pwd"); - massert( 10392 , "bad user object? [1]", !u.empty()); - massert( 10393 , "bad user object? [2]", !p.empty()); } + std::string u = user.getStringField("user"); + std::string p = user.getStringField("pwd"); + massert( 10392 , "bad user object? [1]", !u.empty()); + massert( 10393 , "bad user object? [2]", !p.empty()); - string err; + std::string err; if( !conn->auth("local", u.c_str(), p.c_str(), err, false) ) { log() << "replauthenticate: can't authenticate to master server, user:" << u << endl; return false; |