Я пытаюсь создать API, который использует защиту на основе ключей API. Ключ генерируется при создании пользователя с помощью ловушки. Теперь я не уверен, какую схему авторизации использовать с ним. Доступные (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) не кажутся правильными. В моем applications_controller
:
# frozen_string_literal: true
class ApplicationController < ActionController::API
include ActionController::HttpAuthentication::Token::ControllerMethods
protected
def authenticate
authenticate_token || render_unauthorized
end
def authenticate_token
authenticate_with_http_token do |token, options|
@current_user = User.find_by_api_key(token)
end
end
def render_unauthorized(realm = 'Application')
self.headers['WWW-Authenticate'] = %(Token realm='#{realm}')
render json: 'Bad credentials', status: :unauthorized
end
end
Но я знаю, что это не правильно:
self.headers['WWW-Authenticate'] = %(Token realm='#{realm}')
Схема авторизации Token
отсутствует. Что я должен использовать вместо этого? Я не нахожу много информации об этом.
Я также знаю, что Basi c не правильный тип, потому что это не user:password
, закодированный в base64. Может быть X-Api-Key
? Я хотел бы помочь в этом вопросе, если это возможно:].