To-Do Calendar - Day23 為 MongoDB 加上驗證機制
MongoDB 預設並沒有啟用認證功能(Authentication),相當於資料庫的機敏資料們在網路中裸奔任何人都可以連線到資料庫,進行讀取和寫入,
因此這篇就來為 MongoDB 加上身分驗證,提升資料庫的安全性!
建立 MongoDB 的管理者帳號
- 連線至 MongoDB
- 切換至 admin 資料庫
use admin
- 加入帳號密碼並設定 role
(這裡的 role 只接受 userAdmin 與 userAdminAnyDatabase)db.createUser( { user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin"} ] })

- 認證測試
- 成功:返回 1
- 失敗:返回 Error: Authentication failed. 0
db.auth("admin","password")
修改 config
- 打開 ~MongoDB\bin\mongod.cfg 檔案的 security 註解,並加上 authorization: enabled 設定
security: authorization: enabled
加入指定 DB 使用者帳號
- 切換至目標 DB
use todoCalendar
- 建立使用者
db.createUser( { user: "todoCalendar", pwd: "123456", roles: [{ role: "readWrite", db: "todoCalendar"} ] })

- 切換回 admin 資料庫
use admin
- 查看帳號是否建立成功
db.system.users.find({user:"todoCalendar"})

- 重啟 MongoDB 服務
net stop MongoDB net start MongoDB
修改 application.properties
- 在 spring.data.mongodb.uri 加上帳號:密碼
spring.data.mongodb.uri=mongodb://todoCalendar:123456@localhost:27017/todoCalendar
- 重啟 Spring Boot,於 API Trester 測試
改 application.properties 設定之前 改 application.properties 設定之後