web-dev-qa-db-fra.com

Comment faire l'authentification de base avec RestClient?

Est-ce que quelqu'un sait comment faire l'authentification de base avec RestClient ?

J'ai besoin de créer un référentiel privé sur GitHub via leur API RESTful.

34
never_had_a_name

De la source il semble que vous pouvez simplement spécifier l'utilisateur et le mot de passe dans le cadre de votre objet de demande.

Avez-vous essayé quelque chose comme:

r = Request.new({:user => "username", :password => "password"})

De plus, si vous regardez vers le bas dans la section Shell de ReadMe , il contient un exemple de spécification dans le cadre de restshell.

$ restclient https://example.com user pass
>> delete '/private/resource'
18
Mike Buckbee

Le moyen le plus simple consiste à intégrer les détails dans l'URL:

RestClient.get "http://username:[email protected]"
43
opsb

Voici un exemple de code de travail où je supporte basicauth facultatif mais ne nécessite pas que l'utilisateur et le mot de passe soient intégrés dans l'URL:

def get_collection(path)
  response = RestClient::Request.new(
    :method => :get,
    :url => "#{@my_url}/#{path}",
    :user => @my_user,
    :password => @my_pass,
    :headers => { :accept => :json, :content_type => :json }
  ).execute
  results = JSON.parse(response.to_str)
end

Notez si @my_user et @mypass ne sont pas instanciés, cela fonctionne bien sans basicauth.

33
bgupta

Cela fonctionne et suit RFC 7617 pour l'authentification de base Http :


RestClient::Request.execute(
  method: :post,
  url: "https://example.com",
  headers: { "Authorization" => "Basic " + Base64::encode64(auth_details) },
  payload: { "foo" => "bar"}
)


def auth_details
  ENV.fetch("HTTP_AUTH_USERNAME") + ":" + ENV.fetch("HTTP_AUTH_PASSWORD")
end

2
Kelsey Hannan