Как сделать базовую авторизацию Rails с помощью RestClient?
Я пытаюсь отправить запрос в службу REST (HP ALM 11 REST API fwiw) с помощью rest-client и продолжать получать несанкционированный ответ. Может быть, я не следую документам правильно, но также я не уверен, что правильно делаю заголовки. Пока мой погуглите для RestClient было безуспешным. Любая помощь будет оценена:
код:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "rest/is-authenticate"
resource = RestClient::Resource.new authentication_url
resource.head :Authorization => Base64.encode64(@user_name) + ":" + Base64.encode64(@user_password)
response = resource.get
#response = RestClient.get authentication_url, :authorization => @username, @user_password
Rails.logger.debug response.inspect
на основе этого и Я также попробовал следующее без успех:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "rest/is-authenticate"
resource = RestClient::Resource.new authentication_url, {:user => @user_name, :password => @user_password}
response = resource.get
#response = RestClient.get authentication_url, :authorization => @username, @user_password
Rails.logger.debug response.inspect
документы:
клиент отправляет допустимый заголовок базовой проверки подлинности для проверки подлинности точка.
GET /qcbin / authentication-point / аутентификация авторизация: базовая ABCDE123
сервер проверяет основные заголовки аутентификации, создает новый LW-SSO токен и возвращает его как LWSSO_COOKIE_KEY.
1 ответов
ОК... поэтому сначала это помогает, если я иду по правильному URL:
authentication_url = @alm_url + "rest/is-authenticate"
, который следует читать:
authentication_url = @alm_url + "authentication-point/authenticate"
во-вторых, это помогает, если я читаю документы для RestClient, а не просто смотрю на readme. Пример в разделе Сведения О Методе Экземпляра очень помогли.
мой код теперь выглядит так:
@alm_url = "http://alm_url/qcbin/"
@user_name = "username"
@user_password = "password"
authentication_url = @alm_url + "authentication-point/authenticate"
resource = RestClient::Resource.new(authentication_url, @user_name, @user_password)
response = resource.get
Rails.logger.debug response.inspect
EDIT:
Вау, я действительно переосмыслил это. Я мог бы сказать:
response = RestClient.get "http://#{@user_name}:#{@user_password}@alm_url/qcbin/authentication-point/authenticate"