feat: add Linux OAuth adapters
Add a bounded libcurl transport with verified TLS, no redirects or retries, sanitized failures, binary-safe requests, and resolved-address enforcement for cleartext loopback traffic. Add shell-free xdg-open launching and a one-shot IPv4 loopback callback receiver with strict HTTP/query parsing, deadlines, fixed callback path, and RAII cleanup. Token parsing, Secret Service, and Graph remain follow-up phases.
This commit is contained in:
28
README.md
28
README.md
@@ -132,11 +132,23 @@ or expected.
|
||||
|
||||
The generic HTTP boundary uses injected transports and deterministic fakes. It
|
||||
does not retry requests: provider code must later make retry decisions with the
|
||||
operation's idempotency and server response in view. This remains foundation,
|
||||
not working Office 365 integration. There is no concrete HTTP transport,
|
||||
browser/loopback adapter, token JSON parser, Secret Service backend, Graph call,
|
||||
or usable account setup yet. OAuth tokens and other secrets will never be
|
||||
stored in SQLite; they belong in the Freedesktop Secret Service. The next
|
||||
implementation sequence is concrete desktop, HTTP, and Secret Service adapters,
|
||||
followed by read-only Microsoft Graph calendar discovery and delta
|
||||
synchronization.
|
||||
operation's idempotency and server response in view. The concrete Linux adapter
|
||||
uses libcurl with TLS verification and bounded
|
||||
responses and timeouts, and neither automatic redirects nor retries. Cleartext
|
||||
HTTP is limited to loopback tests. Browser launch executes `xdg-open` directly,
|
||||
never through a shell.
|
||||
|
||||
The loopback receiver binds only `127.0.0.1`, advertises a dynamic-port
|
||||
`localhost` URL at the fixed `/nocal/oauth/callback` path, and accepts one
|
||||
bounded callback. Register Nocal in Entra as a Mobile and desktop public client
|
||||
with `http://localhost/nocal/oauth/callback`. Microsoft documents that the port
|
||||
is ignored when matching a `localhost` redirect, allowing a fresh local port;
|
||||
an HTTP `127.0.0.1` redirect requires manifest editing, while IPv6 loopback
|
||||
redirects are currently unsupported.
|
||||
|
||||
This remains foundation, not working Office 365 integration. There is no token
|
||||
JSON parser, Secret Service backend, Graph call, account UI, or usable account
|
||||
setup yet. OAuth tokens and other secrets will never be stored in SQLite. The
|
||||
synchronous libsecret API may block, so its concrete adapter will run off the
|
||||
render thread in the next phase. Read-only Microsoft Graph calendar discovery and delta
|
||||
synchronization follows that token and secret-storage work.
|
||||
|
||||
Reference in New Issue
Block a user