므흐므흐
437
2020-09-17 17:11:01
7
340

블라인드 커뮤니티 웹 로그인 기술은 어떤 원리인가요??


블라인드 웹사이트에서 로그인을 할 때는 다른 사이트와 다른 방식으로 로그인 process를 거칩니다.

1. 웹사이트에서 로그인 시도 시, 인증번호 8자리를 보여주면서 앱을 통해 1회용 로그인 인증을 하라고 안내한다.

2. 앱에서 인증번호 8자리를 입력해서 로그인 인증을 한다.

3. 앱에서 인증을 거치면 웹에서는 자동으로 새로고침 되면서 로그인 처리가 된다.


이 원리 혹시 웹소켓을 통해 로그인 검사를 실시간으로 하는건가요, 아니면 웹에서 n초 단위로 로그인이 됐는지 확인하는 무언가가 있을까요 ?_?

0
  • 답변 7

  • 초보자1212
    1k
    2020-09-17 17:12:35

    그거 하나를 위해 소켓을 뚫진 않았을 것 같고,

    폴링으로 하지 않았을까 싶네요.

    저도 궁금하네요 ㅇ_ㅇ

  • 컴포지트
    1k
    2020-09-17 17:15:30 작성 2020-09-17 17:16:32 수정됨

    폴링 씁니다. 앱카드 결제 시에도 폴링 쓰는데, (어자피 자바 비동기 요청으로 하기 때문에 부담도 적어졌고)

    그 이유는 바로 망할 구형 브라우저(IE와 IE, 그리고 IE) 때문이죠.

    물론 웹소켓은 IE 10부터 지원하긴 하지만... 소수리고 무시 못하는 IE 8...

  • 초보자1212
    1k
    2020-09-17 17:20:59

    아 역시 폴링쓰나보네요

  • _UnKnowN_
    309
    2020-09-17 17:24:04

    컴포지트 님,

    그냥 다같이 IE 무시해버렸으면 좋겠읍니다 ㅠㅠㅠㅠ

  • 므흐므흐
    437
    2020-09-17 17:25:06 작성 2020-09-17 17:25:22 수정됨
  • 가을
    1k
    2020-09-17 18:30:58 작성 2020-09-17 18:34:31 수정됨

    자세히 살펴보진 못했지만 로직흐름상으로 보면 스프링이라면 DeferredResult를 사용했을것 같네요.


    예상되는 플로우는..


    1. 로그인 페이지 접속한다

    1-1. 난수를 생성한다.

    1-2. DeferredResult API를 호출한다.

           (서블릿스레드 반환, 특정 이벤트 응답 대기)


    2. 앱에서 웹블라인드 로그인하기에 들어와서 임의 난수를 입력하여 로그인하기 누른다.

    2-1.  대기하고 있던 DeferredResult에 setResult하는 API가 호출된다.

    2-2.  이때 파라미터는 사용자의 아이디와 앱에서 사용하는 토큰


    3. 1-1에서 생성된 로그인페이지의 임의 난수와 DefferedResult에서 setResult시킨 아이디와 토큰이 

       유효한지 확인한다.


    3-1. 3의 결과가 유효할 경경우 1-2 이벤트 응답대기에서 인증처리하여 로그인 성공페이지로

           리다이렉트한다.

           유효하지 않을 경우 타임아웃, 또는 인증실패처리


    스케일아웃 구성이 되어있는 환경에서는 조금더 복잡할거구요.

  • 므흐므흐
    437
    2020-09-17 21:59:26

    가을

    헐 자세한 해설 감사합니다 ㄷ

  • 로그인을 하시면 답변 을 등록할 수 있습니다.