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.
Adopt it when all of the following hold:
Authenticator/Client interface, pin the version, vendor or fork it if necessary, and add your own integration tests against a real or simulated endpoint.Look elsewhere (or push back on the requirement) when:
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.
How can I help you explore Laravel packages today?