Saya sedang menulis skrip Ruby untuk terhubung ke situs web REST API. Situs web diautentikasi menggunakan LDAP / SSO menggunakan kredensial AD, sehingga tidak ada otentikasi dasar atau pengguna/kata sandi yang harus diberikan.
Ini adalah kode sejauh ini:
resource_http = Net::HTTP.new(webserver.company.com, 443)
resource_http.use_ssl = true
resource_http.verify_mode = OpenSSL::SSL::VERIFY_NONE
resource_request = Net::HTTP::Post.new("/api/endpoint")
resource_request.set_form_data({"chocolate"=>"yes","beer"=>"yes"})
resource_response = resource_http.request(resource_request)
Tapi saya menerima kesalahan otorisasi:
Net::HTTPUnauthorized 401 Authorization Required
Bermain dengan Net::LDAP, saya dapat mengautentikasi kredensial saya di komputer saya:
ldap = Net::LDAP.new
ldap.host = "ldap.company.com"
ldap.port = "389"
ldap.auth "[email protected]", "password"
ldap.bind
Tapi saya tidak tahu cara "melampirkan" atau meneruskan info LDAP ini dalam permintaan HTTP.
Semua pencarian Google saya mengarahkan saya untuk mengaktifkan SSO/otentikasi pada aplikasi situs web, tetapi saya tidak mencoba melakukan itu, saya ingin terhubung dengan skrip Ruby saya ke situs web terotentikasi LDAP yang ada.
Pembaruan #1 Beberapa forum Ruby mengarahkan saya ke permata HTTPI dan menggunakan adaptor 'batas'. Adaptor ini bergantung pada perpustakaan Curl untuk menangani otentikasi Kerberos/SPNEGO. Namun saya tidak dapat membuat penginstal tepi jalan berfungsi dengan perpustakaan curl yang mereka tautkan di situs web mereka (untuk komputer Windows).
Saya memindahkan kode ke Python menggunakan modul kerberos. Saya dapat membuat tiket dan menambahkannya pada header permintaan HTTP, yang diautentikasi oleh REST API dan mengembalikan data yang saya inginkan.
Saya masih belajar, jadi meskipun kode saya berfungsi di Python, saya ingin membuatnya berfungsi di Ruby.
Contoh kode dengan Python: https://Gist.github.com/DevOpsCow/d374300304d7beef8a03