firebase auth 인증 질문
1207
投稿した質問数 63
fireBase인증 과정에 대하여 질문있습니다. 제가 이해한 것이 맞는지 확인해주시면 감사하겠습니다.
질문 1.
(1)
try {
const signInResult = await signInWithPopup(FirebaseAuthClient.getInstance().Auth, provider);
if (signInResult.user) {
const idToken = await signInResult.user.getIdToken();
const { uid, displayName, photoURL, email } = signInResult.user;
// uid
// photoURL
// displayName
const resp = await memberAddForClient({
data: {
uid,
displayName: displayName || undefined,
email: email!,
screenName: email!.split('@')[0],
photoURL: photoURL || undefined,
provider: 'google',
},
token: idToken,
});
}signInWithPopup메서드를 통해 구글 로그인 후 로그인 한 유저 정보(signInResult)를 가져옵니다.
(2)
const idToken = await signInResult.user.getIdToken();여기서 accesstoken과 다른 유저정보 email,uid등등을 가져와서 filestore에 저장합니다
(3)
export default async function verifyFirebaseIdToken(token: string) {
try {
const id = await FirebaseAdmin.getInstance().Auth.verifyIdToken(token);
return id.uid;
}그후 사용자가 어떤 api요청을 보낼 때 verifyFirebaseIdToken 함수에에 있는 verifyIdToken메서드를 통해 아까 받은 accesstoken을 보내 토큰이 유효한지 검사합니다. accessotken이 유효하면 id를 주어 api에 함께 보내 api 요청을 성공시킵니다.
이 과정이 맞나요?
질문 2.
const id = await FirebaseAdmin.getInstance().Auth.verifyIdToken(token);verifyFirebaseIdToken에서 유효성 검사를 할 때 token이 로그인할 때 받은 accesstoken과 동일한 token인가요?
질문 3.
firestore에 accesstoken은 저장되어 있지 않던데 어디에 저장되어 있는 건가요?
질문 4.
코드에 accesstoken으로 인증하고 유효성 검사하는 것이 있는데요 따로 refreshToken은 없는데 firebase auth는 refreshtoken 시나리오는 잘 안하나요?
질문 5.
코드에는 브라우저에 쿠키나 로컬스토리지를 사용하지 않음에도 브라우저를 껐다가 다시 켜도 로그아웃 되어있지 않고 로그인이 되어있는데 어떻게 가능한 것인가요?
질문 6.
지금 이 로그인이 흔히 말하는 oauth맞나요?
回答 1
0
안녕하세요 건희님.
질문 1 답변
token을 전송하는 건 서버에 제공하는 데이터를 token을 소유한 사용자와 같은지 확인하려고 전송하는 거에요.
예를 들어 A사용자가 B사용자를 사칭할 수 있기때문에 주민증이나 운전면허증을 확인하는 것과 비슷한 겁니다.
질문 2 답변
token은 여러가지가 있지만 여기서 사용하는 토큰은 JWT라서 유효기간이 정해져있습니다.
그래서 최초에 가입할 때 쓴 token과 과거에 제출하는 토큰은 다를 수 있습니다.
JWT 작동 원리 살펴보시면 더 자세히 이해하실 수 있을거에요.
질문 3 답변
브라우저를 통해서 로그인 한 뒤 사용자를 확인하는 방법은 여러가지고 있습니다.
로그인한 뒤 쿠키를 떨구기도하고, localStorage 에 저장할 수도 있습니다.
Firebase는 index db에 저장합니다.
질문 4 답변
refresh 토큰처리는 firebase가 알아서 해줍니다.
질문 5 답변
질문 3 확인해보시면 됩니다.
질문 6 답변
이건 공식문서에 나옵니다.
Firebase 인증은 여타 Firebase 서비스와 긴밀히 연동하고 OAuth 2.0 및 OpenID Connect 등의 산업 표준을 활용하므로 커스텀 백엔드와 쉽게 통합할 수 있습니다.https://firebase.google.com/docs/auth?hl=ko
감사합니다.
post하는 경우에 uid 설정
0
138
1
vscode bgColor 바로 표시되기 설정방법 및 chakra-ui img src 설정관련
0
508
2
클래스 방식말고 (2)
0
327
1
클래스 방식말고
0
311
1
배포 후 오류
0
1150
3
const resp = await fetch(`/api/messages.list?uid=${uid}`)가 404에러가 뜹니다
0
438
1
localhost:3000/api/user.info/totuworld 404 에러가 뜹니다.
0
436
3
사용자를 찾을 수 없다.
0
378
1
2. 사용자 API 만들기 => 강의는 짧지만 백엔드 api 만드는 기본 내용 다 들어가 있음 주의하세요!!
0
379
1
toast 처리부터 오류발생
0
599
3
FirebaseError: Firebase: Error (auth/invalid-api-key).
0
1830
3
Vercel 배포 후 thumbnail api 에러 발생합니다.
0
705
1
[~~].toStr에 대해
0
248
1
firebase admin 환경 초기화 하는 부분 질문입니다.
0
405
1
/api/[screenName].ts API에 대해 문의드립니다.
0
339
1
구글 가입 버튼 오류: redirect_uri_mismatch
0
535
1
mac m1 node 14버전 설치 에러
0
642
1
전체 예제 소스좀 올려주세요
0
445
1
R_CONNECTION_TIMED_OUT 오류
0
624
1
로그인 버튼 클릭시 auth/auth-domain-config-required 에러 발생
0
707
1
@types/react를 인식하지 못하는 에러
0
2828
3
thunder client로 get 요청시 무한로딩
0
1154
1
router 관련 질문입니다.
0
381
1
자동 줄바꿈
0
379
1

