开发者

How do I do basic authentication with RestClient?

开发者 https://www.devze.com 2023-01-15 14:02 出处:网络
Does anyone know how to do basic authentication with RestClient? I need to create a private reposito开发者_StackOverflow社区ry on GitHub through their RESTful API.The easiest way is to embed the deta

Does anyone know how to do basic authentication with RestClient?

I need to create a private reposito开发者_StackOverflow社区ry on GitHub through their RESTful API.


The easiest way is to embed the details in the URL:

RestClient.get "http://username:password@example.com"


Here is an example of working code where I support optional basicauth but don't require the user and password be embedded in the 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

Do note if @my_user and @mypass are not instantiated, it works fine without basicauth.


From the source it looks like you can just specify user and password as part of your request object.

Have you tried something like:

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

Also if you look down in the Shell section of the ReadMe it has an example of specifying it as part of restshell.

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


This works and follows RFC 7617 for Http Basic Authentication:


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


Thanks to Kelsey Hannan:

RestClient.get("https://example.com", 
  {
    Authorization: "Basic #{Base64::encode64('guest:guest')}"
  }
)

RestClient.post("https://example.com", 
  {  }.to_json,
  {
    Authorization: "Basic #{Base64::encode64('guest:guest')}"
  }
)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号