Passport
- Node์ฉ OAuth2 ์ธ์ฆ ๋ฏธ๋ค์จ์ด
- ํ๋์ ๋ชฉ์ : ์ธ์ฆ ์์ฒญ
- ๋ชจ๋ ์์ฑ์, ์บก์ํ๋ ๋ฏธ๋, ๊ทธ๋์ ๋ชจ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์์
- ๊ด์ฌ์ ๋ถ๋ฆฌ ๋๋ฌธ์ ์ฝ๋ ๊น๋, ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉ ์ฌ์
- ์์ฆ ์น ์ ํ๋ฆฌ์ผ์ด์
์์, ์ธ์ฆ์ ๋ค์ํ ํํ
- ์ ํต๋ฐฉ์, username + password
- ํ์ด์ค๋ถ, ํธ์ํฐ ๊ฐ์ ์์
๋คํธ์ํฌ๊ฐ ํฅํ๋ฉด์, OAuth ์ ๊ณต์๋ฅผ ํตํ ์ฑ๊ธ์ฌ์ธ์จ์ด ์ธ์ฆ๋ฐฉ์์ผ๋ก ์ ํ
- ์ ๊ทผ ๋ณดํธ๋ฅผ ์ํด API ์๋น์ค๋ ํ ํฐ ๊ธฐ๋ฐ์ ์ ์์ฅ(credentials) ์์ฒญ
- ๊ฐ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
๋ง๋ค ๋
ํนํ ์ธ์ฆ ์๊ตฌ์ฌํญ
- ์ ๋ต(strategy)์ด๋ผ ๋ถ๋ฆฌ๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ณ ๋ชจ๋๋ก ํจํค์ง
- ๋ถํ์ํ ์์กด์ฑ ์์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ค ์ ๋ต์ ์ฌ์ฉํ ์ง ์ ํ
์ปจ์
- ์ธ์ฆ์ ๋ณต์กํ์ง๋ง, ์ฝ๋๋ ๋ณต์กํ ํ์์์
app.post('/login', passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
์ค์น
npm install passport
์ธ์ฆํ๊ธฐ
- ์ธ์ฆ ์์ฒญ์
passport.authenticate()
ํธ์ถํ๋ฉด์ ์ฌ์ฉํ ์ ๋ต ์ง์ ํ๋ฉด ๋
authenticate()
ํจ์ ์๊ทธ๋์ฒ๋ ํ์ค Connect ๋ฏธ๋ค์จ์ด
- Express ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ผ์ฐํธ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํจ
app.post('/login',
passport.authenticate('local'),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
- ์ธ์ฆ ์คํจ์,
401 Unauthorized
์ธ์ฆ์๋จ ์ํ๊ฐ ์๋ต, ์ถ๊ฐ์ ์ธ ๋ผ์ฐํธ ํธ๋ค๋ฌ ์์
- ์ธ์ฆ ์ฑ๊ณต์, ๋ค์ ํธ๋ค๋ฌ ํธ์ถํ๊ณ
req.user
ํ๋กํผํฐ๊ฐ ์ธ์ฆ๋ ์ฌ์ฉ์๋ก ์ง์ ๋จ
- ์ฃผ์: ์ ๋ต์ ๋ผ์ฐํธ์์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ค์ ๋์ด์ผ ํจ
related