Popularity
1.6
Declining
Activity
0.0
Stable
4
1
1
Programming language: Crystal
License: MIT License
Tags:
HTTP
ntlm alternatives and similar shards
Based on the "HTTP" category.
Alternatively, view ntlm alternatives based on common mentions on social networks and blogs.
-
http-protection
This library protects against typical web attacks. It was inspired in rack-protection Ruby gem. -
multipart.cr
DISCONTINUED. Adds multipart and multipart/form-data support to the crystal standard library -
ContentDisposition
Crystal shard to create HTTP Content-Disposition headers with proper escaping/encoding of filenames
InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
Promo
www.influxdata.com

Do you think we are missing an alternative of ntlm or a related project?
Popular Comparisons
README
Crystal Lang NTLM Auth
Communicate with servers that implement NTLM auth.
Installation
- Add the dependency to your
shard.yml
:
dependencies:
ntlm:
github: spider-gazelle/ntlm
- Run
shards install
Usage
Authenticate a HTTP request
require "http/client"
require "ntlm"
route = "/terrible/soap/api"
username = "username"
password = "password"
# NOTE:: domain is not always required, this can sometimes be left `nil`
domain = "DOMAIN"
client = HTTP::Client.new "corporate.service"
response = client.get route
if response.status_code == 401 && response.headers["WWW-Authenticate"]?
supported = response.headers.get("WWW-Authenticate")
raise "doesn't support NTLM auth: #{supported}" unless supported.includes?("NTLM")
# Negotiate NTLM
response = client.get route, HTTP::Headers{"Authorization" => NTLM.negotiate_http(domain)}
# Extract the challenge
raise "unexpected response #{response.status_code}" unless response.status_code == 401 && response.headers["WWW-Authenticate"]?
challenge = response.headers["WWW-Authenticate"]
# Authenticate the client
response = client.get route, HTTP::Headers{"Authorization" => NTLM.authenticate_http(challenge, username, password)}
end
response