Как мне сделать Базовую Авторизацию Rails с RestClient? - PullRequest
6 голосов
/ 09 февраля 2012

Я пытаюсь отправить запрос в службу REST (fwiw HP ALM 11 REST API), используя 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

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

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

GET / qcbin / точка аутентификации / аутентификация Авторизация: базовая ABCDE123

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

1 Ответ

7 голосов
/ 09 февраля 2012

Хорошо ... поэтому, во-первых, полезно перейти по правильному 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

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

Wow Iдействительно обдумал это.Я мог бы пойти с:

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