Keycloak 과 기업 인증 · OAuth2 그랜트 타입 지형도 · 퀴즈
퀴즈: 그랜트 타입
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
SPA 와 모바일 앱에 authorization code + PKCE 를 쓰는 이유는?
- 시크릿을 안전하게 보관할 수 없는 클라이언트라서
- 왕복이 줄어 로그인이 더 빨라서
- OAuth 규격이 그렇게 정해 두어서
- 발급되는 토큰 크기가 작아서
PKCE 에서 code_verifier 와 code_challenge 의 관계는?
- challenge = verifier 를 암호화한 값
- 둘은 무관하다
- challenge = SHA256(verifier) 를 Base64URL 로 인코딩한 값
- verifier = SHA256(challenge)
Implicit 흐름이 폐기된 이유는?
- 왕복이 많아 로그인이 느려지기 때문에
- 규격이 개정되며 흐름 이름이 바뀌어서
- 액세스 토큰이 URL 에 실려 히스토리와 리퍼러에 남기 때문
- PKCE 와 함께 쓸 수 없어서
Client Credentials 그랜트가 쓰이는 상황은?
- 브라우저에서 이뤄지는 사용자 로그인
- 모바일 앱에서의 사용자 로그인
- 여러 서비스에 걸친 SSO 로그인
- 사용자가 개입하지 않는 서버 간 통신, 배치 작업, 서비스 계정
리프레시 토큰을 localStorage 에 저장하면 안 되는 이유는?
- 저장 용량 제한에 걸리기 때문
- 탭 사이 동기화가 안 되기 때문
- CORS 정책에 막히기 때문
- XSS 로 자바스크립트가 읽을 수 있고 장기 유효라서
`state` 파라미터를 빠뜨리면 가능해지는 공격은?
- 서명 키 없이 토큰을 위조하는 공격
- 알고리즘을 바꿔 서명 검증을 우회하는 공격
- 공격자의 인가 코드로 피해자를 공격자 계정에 로그인시키는 CSRF
- 가로챈 인가 코드를 다시 쓰는 재생 공격