HabrJuly 28, 2026🇷🇺Translated from Russian

OAuth Authorization Server Built Without Storing User Profiles

OAuth servers typically combine authentication, profile management, and delegated authorization in one component. This case study describes a production architecture where the Authorization Server stores nothing about users beyond the identity asserted by an external IdP.

The system was shaped by three hard constraints. Hundreds of isolated APIs are created at runtime, each becoming its own audience. The client is a public SPA without a backend-for-frontend, so bearer tokens cannot be hidden from JavaScript. Resource servers must validate tokens locally because synchronous calls to a central AS would create unacceptable latency and a single point of failure.

The Authorization Server therefore knows only the IdP identity (provider and profileId) stored in short-lived Redis sessions. It issues short-lived access tokens and refresh tokens containing standard claims plus application claims for audience and tenant. The sub claim initially holds the federated identity; after the Main API registers or links the user, the same claim is replaced by an internal UUID together with profile claims.

Profile data lives exclusively in the Main API. This separation reduces blast radius: compromise of the AS yields no personal data, while compromise of the profile database leaves authentication untouched. The AS remains a pure issuer that can be rewritten or replaced without touching product logic.

Tokens never reside in localStorage or page memory. A Service Worker holds them in its isolated context, automatically attaches the Authorization header, and performs refresh centrally for all tabs. After login the SPA immediately revokes the first access token; the worker later obtains a fresh token via a custom FedCM grant that re-uses the existing session cookie.

The architecture also satisfies data-protection requirements by keeping personal data out of the central authority. Deletion requests are handled locally by each resource that stores a profile, eliminating the need to search the entire system for copies.

Related articles

SecuritylabOther

HTTP Methods Explained: GET, POST, PUT, PATCH, DELETE and the New QUERY Standard

HTTP methods define the actions a client requests from a server regarding a resource. The core semantics are outlined in RFC 9110, with extensions for specialized protocols. A new standardized method called QUERY was introduced in June 2026 via RFC 10008 to handle complex queries that include a request body while remaining safe and idempotent. The article details safe and idempotent properties, compares each method including GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE, CONNECT, and QUERY, and explains their correct usage to avoid breaking caches, proxies, and infrastructure expectations. It also covers WebDAV extensions and other registered methods in the IANA registry.

SecuritylabOther

From Web Perimeter Breaches to Domain Takeover: How Standoff Hackbase Trains Pentesters on Real Corporate Infrastructure

wr3dmast3r, a senior pentester and BSCP certification guide author, rose to first place on the Standoff Hackbase ranking by shifting focus from initial perimeter access to full internal infrastructure compromise. The platform replicates large-scale corporate networks from various industries, forcing participants to map service relationships, harvest credentials, escalate privileges, and chain pivots across segments. Unlike CTF challenges that end with a single flag, Hackbase tasks require building complete attack paths that can lead to data theft, process disruption, or cross-domain movement. The interview highlights practical techniques such as time-boxing hypotheses, manually modeling infrastructure after automated scans, and using AI only as an information accelerator rather than an autonomous operator. wr3dmast3r also details a memorable chain that began with a bot, moved through VPN and Outlook access, leveraged SCCM tokens for privilege escalation, and ended with compromise of a second domain containing the target system.

HabrOther

OTUS Publishes September Digest of Free Lessons on Linux Administration, PostgreSQL, CI/CD and Infrastructure Security

OTUS has released a new digest listing free September webinars aimed at infrastructure engineers, DevOps specialists and system administrators. The program covers practical topics including Linux server configuration, PostgreSQL 18 performance tuning, high-availability clusters with Patroni, CI/CD pipelines in GitLab, eBPF observability and infrastructure security practices. All sessions are delivered by practicing OTUS instructors who share real-world production experience. Separate tracks address RAID and LVM management, GPO policies, release management in 1C environments, Go profiling, mitmproxy traffic analysis and responsible use of AI tools for incident investigation and code review. The webinars run throughout September at 19:00 or 20:00 Moscow time and require only free registration. The digest also includes sessions on career growth from tech lead to CTO and effective responsibility distribution for team leads.

AntiMalwareOther

Top LLMs Misidentify Poisonous Mushrooms in Every Ninth Case, Benchmark Shows

Polish developer Piotr Migdal evaluated leading large language models on their ability to identify mushrooms from photographs, using a dataset of 1040 images covering 55 species common in Poland. The images came from the FungiTastic dataset derived from the Atlas of Danish Fungi, with expert labels and partial DNA confirmation. Models were asked to return the five most likely species names in Latin without additional training or tools. Gemini 3.8 Flash performed best with 65 percent top-1 accuracy and 85 percent top-5 accuracy, followed closely by other Gemini variants. However, safety-critical errors remained high: Gemini models labeled poisonous mushrooms as edible in roughly 11 percent of cases, while GPT-5.6 Sol reached 24 percent, Claude Opus 5 reached 29 percent, and Qwen 3.8 27B reached 36 percent. The study did not ask models directly whether a mushroom was edible; species identifications were later cross-checked against toxicity tables.