Huawei OceanStor Dorado API authorization

Viewed 185

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"
0 Answers
Related