← 질문 목록
#279깊이 0
비밀번호를 앱에 안 주고 로그인하는 방법은?
인가 서버에서만 비밀번호를 넣고 앱은 코드를 받아 토큰으로 바꾼다. 앱은 비밀번호를 한 번도 보지 않는다.
- 1. 사용자에서 앱 서버로: 로그인을 누른다
- 2. 앱 서버에서 사용자로: 인가 서버로 보낸다
- 3. 사용자에서 인가 서버로: 아이디와 비밀번호를 넣는다
- 4. 인가 서버에서 앱 서버로: 인가 코드를 준다. 토큰이 아니다
- 5. 앱 서버에서 인가 서버로: 코드와 앱 비밀키를 주고 토큰을 받는다
코드와 토큰을 나누는 이유가 요점이다. 코드는 주소창을 거쳐 오므로 주소 기록이나 referrer에 남을 수 있다. 그래서 코드만으로는 토큰이 안 된다.
토큰을 주소창으로 바로 받는 방식도 있었지만 지금은 권하지 않는다. 주소는 이력과 로그에 남는다.
무엇으로 묶는지는 앱 종류에 따라 다르다. 서버가 있는 앱은 비밀키로 자기를 밝히고, 브라우저나 모바일 앱처럼 비밀키를 숨길 데가 없으면 PKCE로 묶는다. 지금 권고는 어느 쪽이든 PKCE를 쓰는 것이다.
추천 꼬리질문
관련 질문
- 외부 링크를 곧바로 화면에 열어도 되는가?모바일외부 링크를 어디서 여느냐가 위임 로그인의 보안 전제와 맞닿는다 — 인앱 브라우저를 피하는 이유가 같다.
- 인증 정보는 어떻게 보안 문맥에 들어가는가?프레임워크위임 로그인으로 받은 인증 결과가 보안 문맥에 담기는 흐름으로 이어진다.
- 비밀번호를 그냥 해시하면 왜 안 되는가?인프라 · 보안비밀번호를 최대한 만지지 않는다는 같은 방향 — 아예 안 받는 쪽과 안전하게 저장하는 쪽이다.
- 비밀키를 코드에 넣으면 왜 안 되는가?인프라 · 보안
- 오프라인 우선 앱에서 로컬과 서버의 데이터 일관성은 어떻게 유지하는가?모바일