programing

API 인증 고안

showcode 2023. 4. 5. 22:27
반응형

API 인증 고안

모바일 디바이스용 JSON 기반 API를 제공하는 레일즈 웹 어플리케이션에서 작업하고 있습니다.모바일 클라이언트는 먼저 (이메일/패스)로 토큰을 취득한 후 그 토큰으로 후속 API 호출을 합니다.

저는 Gand에 대해 꽤 처음이고, Gand API와 같은 모양을 찾고 있습니다.authenticate(email, pass)true/false가 반환될 것으로 예상한 후 그에 따라 토큰을 생성하여 반환하거나 거부 메시지를 반환합니다.하지만 Gand는 이런 걸 제공하지 않는 것 같아요.

Gand 1.3이 JSON 기반의 인증을 제공하는 것은 알고 있습니다만, 이것은 제가 필요로 하는 것과는 조금 다릅니다.토큰을 생성하고 클라이언트로 돌아가 그 인증이 끝나면 토큰을 대신 사용합니다.

누가 조언 좀 해주시겠어요?

이 구성에는 다음과 같은 구성이 있습니다.:token_authenticatable그래서 그것을 당신의 "사용자"에서 고안한 메서드에 추가하면 호출만으로 API를 인증할 수 있습니다.

"/api/v1/recipes?qs=sweet&auth_token=[@user.auth_token]"

사용자에게도 이 기능이 필요할 수 있습니다.

before_save :ensure_authentication_token

UPDATE(API 인증 코드 포함)

찾으시는 방법은 다음과 같습니다.

resource = User.find_for_database_authentication(:login=>params[:user_login][:login])
resource.valid_password?(params[:user_login][:password])

여기요지가 있습니다. JSON/API 로그인과 함께,

Gander는 토큰 인증을 기본적으로 지원하므로 Gand Wiki를 통해 읽을 것을 권장합니다.저는 개인적으로 Gande에서 토큰 인증에 대해 작업한 적은 없지만, Brandon Martin은 토큰 인증의 를 여기에 제시합니다.

Gand는 랙용 인증 미들웨어인 Warden을 기반으로 합니다.

사용자 인증을 위해 사용자 고유의 (대체) 방법을 구현해야 하는 경우 Warden을 Gandb에 포함된 전략과 함께 참조하십시오.https://github.com/plataformatec/devise/tree/master/lib/devise/strategies

토큰 인증이 필요한 작업이 아닌 경우 쿠키를 반환하고 클라이언트가 요청 헤더에 쿠키를 포함하도록 할 수도 있습니다.웹 세션컨트롤러와 매우 유사하게 동작합니다.

API 세션컨트롤러에서

class Api::V1::SessionsController < Devise::SessionsController

  skip_before_action :authenticate_user!
  skip_before_action :verify_authenticity_token

  def create
    warden.authenticate!(:scope => :user)
    render :json => current_user
  end

end

인루트

namespace :api, :defaults => { :format => 'json' } do
  namespace :v1 do
    resource :account, :only => :show
    devise_scope :user do
      post :sessions, :to => 'sessions#create'
      delete :session, :to => 'sessions#destroy'
    end
  end
end

그런 다음 이러한 작업을 수행할 수 있습니다(예: HTTPie 사용).

http -f POST localhost:3000/api/v1/sessions user[email]=user@email.com user[password]=passw0rd

응답 헤더에는 Set-Cookie 헤더에 세션이 있습니다.이후 요청에 이 값을 추가합니다.

http localhost:3000/api/v1/restricted_things/1 'Cookie:_my_site_session=<sessionstring>; path=/; HttpOnly'

언급URL : https://stackoverflow.com/questions/7614798/devise-api-authentication

반응형