Как выполнить базовую авторизацию 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

Основываясь на этом SO question, я также безуспешно пробовал следующее:

@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

Документация:

Клиент отправляет допустимый заголовок Basic Authentication в точку аутентификации.

GET /qcbin/authentication-point/authenticate Авторизация: базовая ABCDE123

Сервер проверяет заголовки базовой аутентификации, создает новый токен LW-SSO и возвращает его как LWSSO_COOKIE_KEY.


person ScottJShea    schedule 08.02.2012    source источник


Ответы (1)


Хорошо... так что сначала это поможет, если я перейду к правильному URL-адресу:

authentication_url = @alm_url + "rest/is-authenticate"

Что следует читать:

authentication_url = @alm_url + "authentication-point/authenticate"

Во-вторых, мне помогает, если я читаю документы для RestClient, а не просто смотрю ридми. Очень помог пример в разделе Сведения о методе экземпляра.

Мой код теперь выглядит так:

@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

РЕДАКТИРОВАТЬ:

Ничего себе, я действительно переосмыслил это. Я мог бы пойти с:

response = RestClient.get "http://#{@user_name}:#{@user_password}@alm_url/qcbin/authentication-point/authenticate"
person ScottJShea    schedule 08.02.2012