I'm not able to authorize api requests with Huawei OceanStor Dorado API authorization. Any help would be great. Following is my code.
require 'uri'
require 'openssl'
require 'net/http'
require 'http-cookie'
STORAGE_IP = '172.31.195.186'
STORAGE_PORT ='8088'
DEVICE_ID = '2102352VVA1'
options = { "username": "admin", "password": "xxxxxxx", "scope": "0" }.to_json
base_url = "https://#{STORAGE_IP}:#{STORAGE_PORT}/deviceManager/rest/#{DEVICE_ID}/"
url = URI("#{base_url}sessions")
http = Net::HTTP.new(URI(base_url).host, URI(base_url).port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request.body = options
request['Content-Type'] = 'application/json'
response = http.request(request)
jar = HTTP::CookieJar.new
response.get_fields('set-cookie').each do |value|
jar.parse(value, request.uri)
end
url = URI("#{base_url}license/getInActLicenseStatus")
request = Net::HTTP::Get.new(url)
request['Cookie'] = HTTP::Cookie.cookie_value(jar.cookies(url))
response = http.request(request)
response.body
Final output is
response.body
=> "{\"data\":{},\"error\":{\"code\":-401,\"description\":\"This operation fails to be performed because of the unauthorized REST.\",\"suggestion\":\"Before performing this operation, ensure that REST is authorized.\"}}\n\n"
Debugging
response.get_fields('set-cookie').each do |value|
jar.parse(value, request.uri)
end
=>["session=ismsession=88C215763D4E48068C9AC812F2C3AF80C929768D25D4FBC7049E1B2D45AB010A;path=/;httponly;secure;SameSite=Lax;"]
request['cookie'] = HTTP::Cookie.cookie_value(jar.cookies(url))
=> "session=ismsession=88C215763D4E48068C9AC812F2C3AF80C929768D25D4FBC7049E1B2D45AB010A"