- Security >
- Authentication >
- Authentication Mechanisms >
- SCRAM-SHA-1
SCRAM-SHA-1¶
On this page
New in version 3.0.
SCRAM-SHA-1 is the default authentication mechanism for MongoDB.
SCRAM-SHA-1 is an IETF standard, RFC 5802, that defines best practice methods for
implementation of challenge-response mechanisms for authenticating users with
passwords.
SCRAM-SHA-1 verifies the supplied user credentials against the user’s
name, password and authentication database. The authentication database is the database where the
user was created, and together with the user’s name, serves to identify the
user.
SCRAM-SHA-1 Advantages¶
MongoDB’s implementation of SCRAM-SHA-1 represents an improvement
in security over the previously-used MONGODB-CR, providing:
- A tunable work factor (
iterationCount), - Per-user random salts rather than server-wide salts,
- A cryptographically stronger hash function (
SHA-1rather thanMD5), and - Authentication of the server to the client as well as the client to the server.
SCRAM-SHA-1 and MongoDB-CR User Credentials¶
SCRAM-SHA-1 is the default mechanism for MongoDB versions beginning
with the 3.0 series. However, if you are upgrading a MongoDB 2.6
instances that already have users credentials, MongoDB will continue to
use MONGODB-CR for challenge-response authentication until you
upgrade the authentication schema.
Even when using the MONGODB-CR authentication mechanism, clients and drivers that
support MongoDB 3.0 features (see Driver Compatibility Changes) will use the
SCRAM communication protocol. That is, MONGODB-CR authentication mechanism
also implies SCRAM-SHA-1.
For details on upgrading the authentication schema model to
SCRAM-SHA-1, see Upgrade to SCRAM-SHA-1.
Warning
The procedure to upgrade to SCRAM-SHA-1 discards the
MONGODB-CR credentials used by 2.6. As such, the procedure is
irreversible, short of restoring from backups.
The procedure also disables MONGODB-CR as an authentication
mechanism.
Driver Support¶
A driver upgrade is necessary to use the SCRAM-SHA-1
authentication mechanism if your current driver version does not
support SCRAM-SHA-1.
The minimum driver versions that support SCRAM-SHA-1 are:
| Driver Language | Version |
|---|---|
| C | 1.1.0 |
| C++ | 1.0.0 |
| C# | 1.10 |
| Java | 2.13 |
| Node.js | 1.4.29 |
| Perl | 0.708.0.0 |
| PHP | 1.6 |
| Python | 2.8 |
| Motor | 0.4 |
| Ruby | 1.12 |
| Scala | 2.8.0 |