programing

nodejs 여권 인증 토큰

nasanasas 2020. 11. 1. 18:13
반응형

nodejs 여권 인증 토큰


웹 응용 프로그램과 API 공급자로 사용하려는 nodejs 응용 프로그램을 작성 중입니다. 사용자가 인증되면 해당 사용자에게 후속 요청에 사용할 토큰을 할당하고 싶습니다. 세션에서 토큰을 사용하여 사용자를 직렬화 및 역 직렬화하기 때문에 웹 응용 프로그램의 패스포트에서 잘 작동합니다. 그러나 API 요청에 응답 할 때 세션 정보를 저장하기 위해 설정할 쿠키가 없습니다. 이상적으로, passport는 세션과 요청 본문 모두에서 토큰을 찾습니다. 이를 수행하기 위해 여권을 구성하는 방법이 있습니까?


모든 요청에 ​​액세스 토큰을 사용하기 만하면됩니다. 세션을 사용할 필요가 없습니다. 다음은 워크 플로우입니다.

POST /signin
  1. 사용자 이름과 암호는 클라이언트 요청에 게시됩니다.
  2. 서버는 패스포트의 로컬 전략을 사용하여 사용자를 인증합니다. passport-local을 참조하십시오 .
  3. 자격 증명이 유효한 사용자를 나타내는 경우 서버는 일부 생성기가 생성 한 액세스 토큰을 반환합니다. node-jwt-simple 은 좋은 선택입니다.
  4. 자격 증명이 잘못된 경우로 리디렉션하십시오 /signin.

클라이언트가 권한 부여 서버에서 액세스 토큰을 받으면 서버의 보호 된 리소스에 요청할 수 있습니다. 예를 들면 :

GET /api/v1/somefunction?token='abcedf'

  1. 클라이언트는 token 인수를 사용하여 일부 서버 API를 호출합니다.
  2. 서버는 패스포트의 전달자 전략을 사용하여 토큰을 인증합니다. passport-http-bearer를 참조하십시오 .

참고 문헌

passport.js 및 express.js (node.js)를 사용하여 안전한 oauth API 만들기


bnuhero가 언급했듯이 세션이 필요하지 않습니다 (이 접근 방식에도 장점이 있음). 여기에 제가 시작하는 상용구 프로젝트가 있습니다 : https://github.com/roblevintennis/passport-api-tokens

여기에 대안이 있고 따라하기 쉬운 혀가 있습니다 (하지만 세션을 사용합니다). 좋은 상호 참조가 될 수 있습니다 : http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

그리고 관련 참조 : http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/


nodejs의 passport에서 isAuthenticated () 메소드를 사용할 수 있습니다. 모든 경로에서 if (req.isAuthenticated ()) 확인할 수 있으며 이미 인증 된 경우 경로에 액세스 할 수 있거나 else 블록에서 다른 실행을 리디렉션하거나 수행 할 수 있습니다. Passport에서는 성공적인 로그인을 위해 done (null, user)을 반환 할 수 있으며 세션이 끝날 때까지 쿠키에 데이터를 저장합니다. 사용자에서는 이메일, 비밀번호와 같은 사용자에 대한 정보를 볼 수 있습니다.

app.get('/home', (req, res) =>{
    if(req.isAuthenticated()){
        //render home page
    } else {
        // go back to the login page or throw soome error
    }
}) 

참고 URL : https://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token

반응형