summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/oplogreader.cpp
diff options
context:
space:
mode:
authorAndreas Nilsson <andreas.nilsson@10gen.com>2013-07-03 17:09:09 +0100
committerAndreas Nilsson <andreas.nilsson@10gen.com>2013-07-03 18:29:37 +0100
commit00fb45cd97d2314548dc07c2c8e1cc1737fd273f (patch)
tree39bad422345f565c4bd8c6728eb8eb8a1e6104b1 /src/mongo/db/repl/oplogreader.cpp
parent3457954bb082d98dfd769d27771d4e30f3f785a5 (diff)
downloadmongo-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.cpp35
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;