By NHI Mgmt Group Editorial TeamDomain: Best PracticesSource: TailscalePublished October 30, 2025

TL;DR: Application capability grants, tsnet, and Funnel can be combined to build a lightweight identity provider that authorises users from tailnet context and supports custom OAuth and OIDC flows, according to Tailscale. The governance question is not whether this works, but which identity and access assumptions break when application identity is embedded into the network layer.


At a glance

What this is: This is a technical blog post showing how Tailscale can be used to build a lightweight identity provider, with identity-aware network requests and capability grants used to drive OAuth and OIDC behaviour.

Why it matters: It matters because identity teams need to understand when network context becomes part of authentication and authorisation, especially for NHI, delegated access, and internal app trust boundaries.

👉 Read Tailscale’s build guide for tsnet, grants, and Funnel-based identity flows


Context

A lightweight identity provider changes the control plane by making network context part of the authentication path. In this model, the request carries identity signals from the tailnet, and those signals are then used to authorise access into applications that support custom OAuth and OIDC providers. That makes the post relevant to IAM teams because it moves policy enforcement closer to application entry points rather than treating identity as a separate upstream service.

For identity programmes, the operational issue is not just whether users can log in. It is whether the organisation can preserve clear boundaries between network membership, application authorisation, and administrative control over dynamic client registration and token claims. This is a useful pattern for teams evaluating how Tailscale-aware workflows alter trust decisions across human identity and access governance.


Key questions

Q: How should security teams govern application-level identity decisions that depend on network context?

A: Security teams should treat network context as part of the authorisation workflow, not as a separate infrastructure concern. That means documenting which requests carry identity signals, which policies consume them, and where approvals, token minting, and admin actions are allowed. Governance should cover the runtime path, not only the upstream directory or SSO stack.

Q: What breaks when dynamic client registration is exposed to too many users or groups?

A: Control over OAuth client creation becomes fragmented, and applications can accumulate unreviewed access paths that are difficult to trace back to accountable owners. That creates hidden privilege expansion inside the identity layer, especially when registrations can be made without explicit lifecycle review or strong separation of duties.

Q: Why do network-aware identity patterns complicate IAM governance?

A: Because the access decision is no longer made only in a central identity provider. Network membership, ACL grants, and application logic can all influence the outcome, which makes entitlement review harder and increases the risk that policy changes in one layer silently alter behaviour in another.

Q: What is the difference between exposing an application publicly and exposing its authorisation logic publicly?

A: Public access to an application surface affects reachability, but public exposure of authorisation logic affects who can mint tokens, register clients, or alter trust decisions. The first is a connectivity choice. The second is an identity governance issue that can change the security posture of the whole system.


Technical breakdown

Tsnet embeds connectivity and identity into the application

tsnet is a Go library that lets an application join a tailnet directly, with a hostname and auth key as the bootstrap inputs. Once the server starts, the application can listen like a normal service while benefiting from Tailscale connectivity and request context. In practical terms, the application is no longer just behind the network. It becomes part of the network trust fabric, and that changes where identity and access decisions can be made.

Practical implication: treat embedded connectivity as an identity boundary, not just a deployment convenience.

WhoIs and capability grants turn network context into authorisation

The .WhoIs call returns user, node, and application capability grant information associated with a request. Those grants are custom JSON passed in the ACL file on a per-user or per-group basis, allowing the service to decide who can see the admin UI, register clients dynamically, or receive custom claims. This is effectively policy-driven authorisation at the application edge, but the policy source now sits inside a broader network identity system rather than a standalone IdP.

Practical implication: review which entitlements are being delegated into network ACLs and which still belong in central IAM.

Funnel separates public access from private identity control

Funnel exposes selected application-facing endpoints to the public internet while keeping the /authorize endpoint private to tailnet users. That separation lets the service support public SaaS login flows without making the internal authorisation path broadly reachable. Architecturally, this is a boundary-control pattern: the user-facing login surface is public, but the trust decision remains anchored in the private network and its identity context.

Practical implication: isolate public entry points from authorisation endpoints so external reach does not collapse private trust controls.


NHI Mgmt Group analysis

Identity context is becoming an application runtime control, not just an upstream directory function. This post shows a model where request identity, group grants, and application behaviour are combined inside the service itself. That collapses the old separation between authentication, authorisation, and deployment networking. For IAM teams, the practical conclusion is that policy now travels with the request path, so governance must follow the runtime, not just the directory.

Application capability grants create a policy surface that deserves lifecycle governance. The JSON grants described here can permit admin UI access, dynamic client registration, and custom claims. Those are not harmless implementation details, because they shape who can create access paths and what information appears in tokens. The named concept here is network-authz drift: policy that starts as transport convenience but gradually becomes a de facto identity control plane. Practitioners should treat these grants as governed access artefacts.

Tailscale-aware identity design blurs the line between NHI governance and human IAM. When the same mechanism carries user identity into application authorisation, teams need to think about joiner-mover-leaver processes, delegated administration, and token claim hygiene in one operating model. That is not because the system is autonomous, but because it binds human identity state to runtime access decisions. The implication is that IAM architecture reviews should include network-embedded identity paths.

Public exposure through Funnel changes the trust boundary, not the trust model. Exposing only selected endpoints can reduce attack surface, but it does not remove the need to validate what the public endpoint can initiate and what the private endpoint can mint. This is where identity architecture and application design intersect. Practitioners should evaluate whether public reachability is being used to simplify access, or whether it is also expanding the authorisation surface in ways the current governance model does not track.

From our research:

  • The average estimated time to remediate a leaked secret is 27 days, despite 75% of organisations expressing strong confidence in their secrets management capabilities, according to The State of Secrets in AppSec.
  • Only 44% of developers are reported to follow security best practices for secrets management, exposing a significant developer behaviour gap, according to The State of Secrets in AppSec.
  • For a broader lifecycle view, Ultimate Guide to NHIs is the right reference point for governance, rotation, and offboarding decisions.

What this signals

Network-authz drift: when application policy lives inside ACL grants and request context, IAM teams need a clearer map of where identity decisions are actually made. The operating model has to account for delegated claims, dynamic client registration, and runtime authorisation in the same review cycle, not in separate silos.

The practical signal for programmes is that embedded identity controls will keep expanding into app runtime design. Teams that still treat identity as an upstream service will miss where access is being minted, who can alter it, and how public exposure changes the trust boundary.

With 43% of security professionals already concerned about AI systems learning and reproducing sensitive information patterns from codebases, per The State of Secrets in AppSec, token claims and grant payloads deserve the same discipline as secrets.


For practitioners

  • Map identity decisions to runtime boundaries Inventory every place where application behaviour depends on request identity, capability grants, or network membership. Separate transport-layer convenience from authorisation logic so you can see which control is making the decision.
  • Govern dynamic client registration explicitly If applications can register OAuth clients dynamically, define who may do so, what approval is required, and how those registrations are reviewed and revoked. Treat dynamic client registration as a governed entitlement, not a developer shortcut.
  • Review custom claims before they reach tokens Document every extraClaims field that can alter OAuth or OIDC tokens, then validate whether each claim is necessary, accurate, and aligned with token-minimisation rules. Claims should not become a hidden policy channel.
  • Separate public entry points from private authorisation paths Keep internet-facing endpoints limited to the smallest needed function and ensure the authorisation endpoint remains protected by the intended private trust boundary. That reduces the chance that public reachability becomes a backdoor into identity issuance.

Key takeaways

  • Tailscale-aware identity patterns move authorisation decisions into the application runtime, which changes how IAM teams should map control boundaries.
  • Capability grants and dynamic client registration can become hidden identity control points unless they are governed as formal entitlements.
  • Public exposure of selected endpoints is only safe when the private authorisation path remains tightly separated and reviewed.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

NIST CSF 2.0, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
NIST CSF 2.0PR.AC-4The post is about access control decisions embedded in runtime policy.
NIST SP 800-53 Rev 5AC-2Administrative access and entitlement assignment are central to the grant model.
NIST Zero Trust (SP 800-207)The model uses request identity and boundary separation in a zero trust style.

Review runtime authorisation paths and verify least-privilege access is enforced at the point of decision.


Key terms

  • Application Capability Grant: A policy object that lets an application receive structured authorisation data from a broader identity or network system. In this pattern, the grant becomes part of the runtime decision path, so it must be treated like governed access, not just configuration metadata.
  • Dynamic Client Registration: Dynamic client registration is a protocol pattern that allows a software client to register itself with an authorization system automatically. For AI agents, it can reduce manual setup, but it also creates new identities at speed, which makes ownership, policy checks, and revocation essential.
  • Runtime Authorisation: Runtime authorisation is the practice of deciding access while a task is in progress, rather than only at provisioning time. It matters for NHIs because credentials and entitlements can change risk mid-session, especially when automation or AI agents interact with sensitive systems.
  • Identity-Aware Network Control: A control model where network membership or request origin influences identity and access decisions. It is useful when trust needs to follow the session, but it must not replace central governance over entitlements, token claims, or administrative privileges.

What's in the full article

Tailscale's full post covers the implementation detail this analysis intentionally leaves for the source:

  • The tsnet setup pattern for embedding Tailscale connectivity directly into a Go application
  • The .WhoIs call flow that returns user, node, and application capability grant context
  • The ACL grant JSON structure that drives admin UI access, dynamic client registration, and custom claims
  • The Funnel pattern for exposing public endpoints while keeping /authorize private

👉 The full Tailscale post shows the tsidp pattern, request identity handling, and client registration logic in context

Deepen your knowledge

NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 2, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org