#
์ธ์ฆ ์๋น์ค ๊ธฐ์ด ๊ฐ์#
Auth Service Fundamentals- ๊ตฌ๊ธ๊ณผ ์ ํ๋ธ์ ์ฌ๋ก - ์ธ์ฆ์ด ํ์ํ ์ด์ ๊ฐ ์์ด์ผ ํ๋ค.
์๋น์ค ์ ๊ณต์ : ํ์ ํ๋ณด โ ๋ฐ์ดํฐ ๋ถ์ โ ์๋น์ค ๋ฐฉํฅ ์ค์ , ๋ค์ํ ๋ง์ผํ ํ์ฉ
์ฌ์ฉ์ : ์๋น์ค ์ด์ฉ ํธ์์ฑ, ๊ฐ์ธํ ์๋น์ค ์ด์ฉ
#
ํ์ ๊ฐ์์๋น์ค์ ์ผ์์ด ๋๊ธฐ ์ํ ์ ์ฐจ
์ด ๊ณผ์ ์ ๊ฑฐ์น์ง ๋ชปํ๋ค๋ฉด ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ ํด๋น ์๋น์ค์ ๊ฒ์๋์ด ์๋ ๊ธ ์์ฒด๋ฅผ๋ชป ๋ณด๊ฒ ๋๋ ๋ฑ ๊ฐ์ ์๋ค์ ๋นํด ํ๋์ ์ ์ฝ์ด ๋ฐ์
#
๋ก๊ทธ์ธ- ๋ก๊ทธ์ธ์ ์ ๊ทผ ํ๊ฐ ์ฆ๋ช ์ ์ป๊ธฐ ์ํด ์ฌ์ฉ์ ์ธ์ฆ์ผ๋ก ๊ฐ์ธ์ด ์ปดํจํฐ ์์คํ ์ ์ ๊ทผํ๋ ์์
#
์ธ์ฆ ๋ฐฉ๋ฒ#
Authentication vs Authorization- Authorization์ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์ฆ๋ ์ ์ ์๊ฒ ์์์ ์์ ์๊ฐ ํ๊ฐํ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒ์ด๋ค.
#
OAuth 2.0OAuth 2.0์ ๋ค์ํ ํ๋ซํผ ํ๊ฒฝ์์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ ํ์ค ํ๋กํ ์ฝ
์ 3์ ์ฑ์ด ์์์ ์์ ์์ธ ์๋น์ค ์ด์ฉ์๋ฅผ ๋์ ํ์ฌ ์๋น์ค๋ฅผ ์์ฒญํ ์ ์๋๋ก์์ ์ ๊ทผ ๊ถํ์ ์์ํ๋ ๋ฐฉ๋ฒ
#
Sampleํ์ ์ ๋ณด - key
(์ฌ์ฉ์์ ๋ํ ์ ๋ํฌ ๊ฐ), id
, password
? ์ ์ ์์ด๋๋ฅผ
key
๋ก ์ฌ์ฉํ์ ๋์ ๋ฌธ์ ์ id
๋ public ํ๋ค.id
๋ ๋ณ๊ฒฝ๋ ์ ์๋ค. (์ ์ ์key
๊ฐ์ด ๋ฐ๋ ์ ์๋ค.)- ๊ด๊ณ๋ ๋ฐ์ดํฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
id
๋unique
ํด์ผ ํ๋ค.- ๋์๋ฌธ์๋ฅผ ํ์ฉํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
password
๋ ์ํธํ ๋์ด์ผ ํ๋ค.
- ๊ฐ์ ์ผ์
key
๊ฐ์ผ๋ก ์ซ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฒฉ์ ์ฌ์ง๋ฅผ ์ค ์ ์๋ค.๋ฌธ์์ด์ ๋ง์ด ์ฐ๋๋ฐ, ์ ์ถํ๊ธฐ ์ด๋ ค์์ผ ํ๋ค.
user_id
๋ ์ด๋ฉ์ผ์ ๋ง์ด ์ฐ๋๋ฐ, ์ด๋ฉ์ผ์ ์ ๋ํฌ ํ๋ค๋ ์ ์ด ๋ณด์ฅ๋๋ค.- ์ด๋ฉ์ผ์ด ํด๋น ์ ์ ์ ์์ ์ธ์ง ์ธ์ฆ ๊ณผ์ ์ด ํ์ํ๋ค.
password
๋ ๋ฌธ์์ ์ซ์, ํน์ ๋ฌธ์ ๋ฑ์ ์กฐํฉํ๋ ๊ฒ์ด ์ข๋ค.
- Cookie vs Session
์ฟ ํค๊ฐ ๋ณด์์ ์ทจ์ฝํ ์ด์
๋ง์ ๊ฒฝ์ฐ ์ฟ ํค์ token
์ ๋ฃ๋๋ฐ, ๋ณด์ ์ธก๋ฉด์์ ๊ทธ๋ฅ ๋ฃ๋ ๊ฒฝ์ฐ, ์กฐํฉํด์ ๋ฃ๋๊ฒฝ์ฐ ๋ฑ์ด ์๋ค.
- access token ์ ์๊ฐ ๋จ์๋ฅผ ๋ง์ด ์ฐ๊ณ
ex) 6์๊ฐ
, refresh token์ ๋ช ์ผ ๋จ์ ,ex) 1์ฃผ 2์ฃผ ํ ๋ฌ
์ฌ๋ฐ๊ธ ํ์ง ์๊ณ ๊ธฐ์กด ๊ฒ์ ์ฌ์ฉํ๋ฉด, refresh token์ ์ธ์ ๊ฐ ๋ง๋ฃ ๋์ด ์ฌ์ฉ์์๊ฒ ๋ถํธํจ์ ์ค ์ ์๋ค.
ํญ์ ์ ๊ท๋ก ๋ฐ๊ธํ๋ฉด, ์ฌ๋ฌ ํ๋ซํผ ๊ฐ์ ์ฌ๋ฐ๊ธ ๋ ํ ํฐ์ ์ด๋ป๊ฒ ๋๊ธฐํ ํ ๊ฒ์ด๋์ ๋ํ ๊ณ ๋ฏผ์ด ํ์ํ๋ค.
#
Storybook ๊ธ๋ก๋ฒ ์คํ์ผ ์ค์ preview.js
import React from 'react';
import {ThemeProvider} from 'styled-components';
import GlobalStyle from 'src/styles/GlobalStyle';import theme from 'src/styles/theme';
export const parameters = { actions: {argTypesRegex: '^on[A-Z].*'},};
export const decorators = [ (Story) => ( <ThemeProvider theme={theme}> <GlobalStyle /> <Story /> </ThemeProvider> ),];
#
Styled-componentsThe Advanced Way to Style with Styled Components
์ด์ - styled-components์ craeteGlobalStyle ์ ์ฉ ์ user agent stylesheet๊ฐ override ํ๋ ์ด์