Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Ntlm Laravel Package

jamesiarmes/php-ntlm

A PHP library that adds NTLM authentication to SOAP clients, enabling PHP applications to connect to Microsoft Exchange Web Services and other Windows-integrated endpoints that require NTLM. It provides an NTLM-enabled SoapClient wrapper and supporting stream/config classes.

Deep Wiki
Context7

Product Decisions This Supports

  • Enterprise deal unblocking (build vs. buy on protocol plumbing). If a customer's integration target sits behind Windows Integrated Authentication — on-prem Exchange Web Services, SharePoint, an IIS-hosted internal API — this package is the cheapest path to "yes, we support your environment." Hand-rolling NTLM/NTLMv2 challenge-response is a multi-week, security-sensitive effort; this is a few days of glue.
  • Scoping an "on-prem Microsoft" compatibility feature. Lets you size the work for a roadmap item like "sync calendars from Exchange 2016" or "pull documents from SharePoint 2019" without committing to a full Microsoft Graph/OAuth migration.
  • Architecture decision: outbound auth vs. inbound SSO. This is not a user-login/SSO solution. It authenticates your service to a downstream Microsoft endpoint using a service account. Keep it out of the identity roadmap and in the integrations roadmap — conflating the two is a common and expensive scoping error.
  • Deployment-topology decisions. NTLM requires the credential-bearing service account and typically same-domain/network reachability. This forces explicit decisions on where the worker runs (customer-hosted agent vs. your cloud), how service-account credentials are stored (vault vs. env), and whether a per-customer connector is needed.
  • Sunset planning input. Microsoft is actively deprecating NTLM in favor of Kerberos and modern auth. Adopting this is a deliberate bet on a shrinking protocol surface — useful as a data point for how long you intend to support legacy on-prem customers.
  • Prioritization signal. With 56 stars, a last release in October 2017, and an unknown/unspecified repository, this is a tactical dependency, not a strategic platform bet. It should be scoped as a point solution with an exit ramp, not as the foundation of an integrations strategy.

When to Consider This Package

Adopt it when all of the following hold:

  • The target endpoint only offers NTLM (no Basic-over-TLS, no OAuth2, no Kerberos/SPNEGO path available to you), and the customer cannot or will not change that.
  • You need a short-to-medium-term bridge — one or a handful of enterprise accounts, a proof of concept, or a scoped integration release — not a decade-long commitment.
  • You can wrap it: isolate behind your own Authenticator/Client interface, pin the version, vendor or fork it if necessary, and add your own integration tests against a real or simulated endpoint.
  • Someone on the team can read and patch the NTLM handshake code if PHP 8.x compatibility or a protocol edge case bites. Treat it as source you own, not a black box.
  • Traffic is to a trusted internal network and you have a clear story for storing the service account's credentials and for NTLM's lack of a proper channel-binding story in your context.
  • Legal/security is comfortable with the license (MIT) and with an unmaintained dependency in a non-user-facing code path.

Look elsewhere (or push back on the requirement) when:

  • The target is Microsoft 365 / Exchange Online / SharePoint Online — use Microsoft Graph with OAuth2 client credentials. NTLM is the wrong tool and Microsoft is retiring it.
  • The customer can enable Kerberos, modern auth, or a reverse proxy/gateway that terminates Windows auth in front of the app. That is almost always a better architecture.
  • You need maintained, security-patched auth code, SLAs, or vendor support — nothing here provides that, and the repository location being unlisted is itself a supply-chain concern.
  • The integration is meant to be long-lived and widely deployed. At that point, budget for owning a fork or replacing it, and say so up front.
  • You need NTLM for inbound user authentication (validating end-user credentials against AD). Different problem; look at LDAP/Kerberos bindings or a proper IdP integration instead.

How to Pitch It (Stakeholders)

For executives (one paragraph): A handful of enterprise prospects run Microsoft systems on-premises that only accept Windows Integrated Authentication. Supporting them today requires implementing NTLM, a fiddly and security-sensitive Microsoft protocol. This MIT-licensed PHP library does that work for us, turning a multi-week engineering effort into roughly a few days of integration, and it unblocks those accounts without adding headcount or delaying the roadmap. The caveat is honest: the library is small and hasn't been updated since 2017, so we'll treat it as code we own — wrapped behind our own interface, version-pinned, tested, and replaceable. We should also set expectations that NTLM is a legacy protocol Microsoft is phasing out, so this is a bridge that buys us revenue now while we plan the Microsoft Graph migration as the long-term path.

For engineering (the short version): Use it instead of writing the NTLM handshake ourselves — the challenge-response and NTLMv2 message construction is exactly the kind of code you don't want to own. But adopt it defensively: pin the exact version, wrap it in an adapter so swapping to a fork or a Graph client is a one-file change, verify PHP 8.x compatibility before committing, add integration tests against a real IIS/EWS endpoint, and keep service-account credentials in the secret store rather than config. Assume we may need to maintain a fork; size the initial ticket accordingly and note it in the risk register. Do not use it for end-user login — it's outbound service authentication only.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings