인증을 사용하시겠습니까?

그래서 당신은 새로운 프로젝트를 작업하고 있고, 친구가 인증을 추가해야 한다고 추천했습니다! 친구가 무슨 말을 하는지, 인증이 무엇인지, 왜 사용해야 하는지 전혀 모릅니다.

기본 사항부터 시작하겠습니다. 인증이란 무엇입니까? 즉, 인증 또는 인증을 통해 특정 사용자에게 전달되는 정보를 관리할 수 있습니다. 예를 들어, 다른 사람에게 메시지를 보내는 프로그램을 만들고 있다면 인증을 원할 것입니다!

내 프로그램에 인증을 추가하려는 이유는 무엇입니까? 인증을 사용하면 특정 사람만 해당 사람만 가져야 하는 정보에 액세스할 수 있도록 할 수 있습니다. 포럼을 관리하는 경우 메시지 삭제 또는 특정 사용자 제거와 같은 특정 권한을 자신에게 부여하고 싶지만 모든 사람에게 그러한 권한을 부여하고 싶지는 않습니다!

인증을 어떻게 추가합니까? 인증은 까다로울 수 있는 프로세스이므로 많은 사람들이 Devise, Ommniauth, Doorkeeper, Authlogic, clearance 등의 프로그램을 사용합니다.

이를 인증으로 사용할 수 있지만 찾고 있는 것과 정확히 일치하지 않을 수 있으며 이 경우 처음부터 직접 만들어야 할 수 있습니다!

자신의 인증을 처음부터 만드는 방법에 대해 자세히 설명하지는 않겠습니다. 실제로 유용한 블로그를 찾을 수 있지만here . 나는 그 뒤에있는 논리를 검토 할 것입니다.



위의 모델은 Rails 세션 쿠키를 사용하는 인증으로 취할 수 있는 접근 방식 중 하나를 검토하고 있습니다. 단계를 살펴보겠습니다!
  • 웹 응용 프로그램은 양식에서 사용자 이름과 암호를 가져와 자격 증명과 함께 POST 요청을 API "로그인"끝점으로 보냅니다. 요청은 다음과 같습니다.

  • POST /session
    Host: api.your-app.com
    Content-Type: application/json
    
    {
      "username": "jack",
      "password": "mypassword"
    }
    


  • API가 자격 증명이 제공된 사용자를 인증하려고 시도하고 성공하면 API가 사용자의 ID를 세션에 보관합니다.

  • session[:user_id] = user.id
    


    간단한 할당은 응답에 쿠키를 설정하며 이 경우 쿠키에는 사용자의 고유 ID가 포함됩니다.
  • 세션 쿠키가 브라우저에 반환됩니다.
  • 그런 다음 브라우저는 쿠키가 만료될 때까지 쿠키를 저장하고 앱이 API에 요청을 보낼 때마다 브라우저가 자동으로 세션 쿠키도 보냅니다. 다음은 보호된 리소스 my-info에 대한 요청입니다.

  • GET /my-info
    Host: api.your-app.com
    Cookie: _session_id=kTNmUk23l0xxXyDB7rPCcEl6yVet1ahaofUJLd6DxS1XrhbPvU4gF%2B%2Bm... (This goes on for a while)
    


  • 그런 다음 API는 세션 쿠키에서 사용자 ID를 확인하여 my-info를 요청하는 사용자를 식별하고 인증된 사용자만 리소스에 액세스할 수 있도록 합니다.
  • 사용자에게 권한이 있는 경우 요청에 대한 응답이 웹 앱으로 다시 전송되고, 그렇지 않으면 API가 401 - Unauthorized 응답을 다시 보냅니다.

  • 요약하면 인증을 통해 특정 정보 및 리소스에 액세스할 수 있는 사람을 제어할 수 있으며 이는 많은 프로그램 및 응용 프로그램에서 필수입니다. 특정 도구를 사용하여 인증을 좀 더 쉽게 만들 수 있지만 일반적으로 필요에 맞게 사용자 정의할 수 있도록 처음부터 만드는 것이 좋습니다!

    다른 유용한 블로그 링크: Rails authentication from scratch - Steve PolitoUsing Rails Session Cookies for API Authentication - Mike Clark

    좋은 웹페이지 즐겨찾기