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 blog explains how a Tailscale-aware identity provider can use tsnet, capability grants, and Funnel to authorise users and broker OAuth and OIDC flows inside a tailnet.
Why it matters: It matters because IAM teams have to decide how network-attached identity, application registration, and token issuance should be governed when access decisions are embedded in the connectivity layer.
Context
Tailscale-aware identity providers are a way of moving part of the OAuth and OIDC control plane closer to the network path. In this model, the application receives request identity from the tailnet and uses that context to decide whether to issue tokens or register clients.
That shifts the governance problem from classic front-door authentication alone to how identity claims, application capability grants, and endpoint exposure are managed together. For IAM teams, the key issue is not whether a lightweight IdP can work, but whether the surrounding controls still provide auditable boundaries.
The article describes tsidp as a practical example, which makes it a useful case for understanding how identity governance starts to blur when application logic, network trust, and token issuance are intentionally combined.
Key questions
Q: How should teams govern OAuth when identity context comes from the network layer?
A: Treat the network-attached identity as an input to authorisation, not as a replacement for policy. Teams should define which decisions are allowed to flow from tailnet context, which must remain application-owned, and how grant changes are reviewed so that network convenience does not become unbounded access delegation.
Q: Why do application capability grants create governance risk in lightweight IdPs?
A: Because grants can become operational policy when they control admin access, client registration, and token claims. If teams manage them like ordinary configuration, they can miss who owns the entitlement, who approves changes, and how those changes affect downstream OAuth behaviour.
Q: What breaks when private identity endpoints are exposed too broadly?
A: The authorisation boundary becomes ambiguous, and identity functions that should stay private can be reached from outside the trusted network context. That weakens the model that tailnet identity is the gatekeeper for token issuance and client management, and it complicates auditability.
Q: What is the difference between tailnet identity and application authorisation?
A: Tailnet identity tells the application who or what is making the request within the trusted network context. Application authorisation decides what that identity can do, such as access the admin UI, register an OAuth client, or receive custom claims. Keeping those layers distinct preserves reviewable governance.
Technical breakdown
How tsnet turns tailnet connectivity into an identity signal
tsnet is a Go library that embeds Tailscale connectivity into an application process. Once the server joins the tailnet, the application can receive request context that includes user, node, and application capability grant data through a .WhoIs call. That means the application no longer has to treat the network as anonymous transport. Instead, it can bind access decisions to a requestor identity already established by the tailnet and its upstream IdP context.
Practical implication: treat network-attached identity as an authorisation input and not as a substitute for application-level policy.
Why application capability grants become policy input for OAuth and OIDC
Application capability grants are custom JSON objects passed through Tailscale ACLs on a per-user or per-group basis. In the example, those grants control whether users can access the admin UI, register new OAuth clients, or receive custom claims in tokens. This is not general authentication metadata; it is an embedded governance layer that shapes application behaviour. The important technical shift is that policy is being delivered alongside connectivity, so the IdP can enforce scope and feature use based on tailnet membership and granted capability.
Practical implication: review any grant-backed endpoint as part of your identity policy design, not just your network policy review.
How Funnel separates public exposure from private authorisation
Funnel lets the application expose selected endpoints to the public internet while keeping the /authorize endpoint private to tailnet users. That creates a split trust model: public SaaS-facing access can exist without making the entire identity service public. Technically, this means the application can support a seamless login flow for external services while preserving a private control plane for the tailnet-authenticated step. The architecture reduces exposure, but it also makes endpoint scoping and routing correctness part of identity security.
Practical implication: verify that public and private endpoints are cleanly separated before relying on Funnel for identity-related workflows.
NHI Mgmt Group analysis
Network-attached identity is becoming an authorisation primitive, not just a transport detail. tsnet shows that an application can consume user identity from the tailnet and use it directly in token issuance and client registration decisions. That collapses a boundary many IAM programmes still assume exists between connectivity and identity control. The practical consequence is that identity governance has to extend into network-delivered context, because access decisions now depend on what the tailnet knows at request time.
Capability grants are a governance layer when they control OAuth behaviour. When per-user or per-group grants determine who can see the admin UI, who can register clients, and what claims are injected into tokens, they are functioning as policy, not as implementation detail. That makes grant review, scope ownership, and change control part of identity governance. Teams that treat these as application configuration alone will miss where authorisation is actually being decided.
Application identity inside the network shifts the control question from login to lifecycle. The article shows that user identity, client registration, and token content can all be driven from tailnet context. That means the stronger question is not how users authenticate once, but how entitlements, grants, and token-shaping logic are reviewed over time. Practitioners should evaluate whether their governance model can see and certify network-delivered privileges before they become persistent application behaviour.
Lightweight IdP patterns expand the identity perimeter into places traditional IAM tools do not model well. A tailnet-aware IdP can be useful precisely because it reduces friction and centralises certain trust decisions. But it also means the effective control plane now spans ACLs, embedded grants, private endpoints, and token generation in one workflow. The implication for practitioners is that identity architecture reviews need to include network-layer trust assumptions, not just SSO and MFA design.
Tailnet context creates an identity trust shortcut that must still be bounded. If an application assumes the requestor identity attached by Tailscale is sufficient to drive OAuth behaviour, the risk is not that the model is broken but that it can become overextended. The governance challenge is to define where tailnet assertion ends and application authorisation begins. Teams should treat that boundary as a reviewable design decision, not an implementation convenience.
What this signals
Embedded identity governance is becoming a design choice in networked applications. When an IdP can read identity from the connectivity layer, the control point moves closer to runtime. That makes it harder to rely on static IAM boundaries alone, because the authorisation decision is happening where the application and the network meet.
Grant-driven application behaviour needs lifecycle ownership. If per-user or per-group capability grants can register clients, shape claims, or unlock admin functions, then those grants need named owners, review cycles, and revocation paths. The governance burden is no longer just access provisioning, but the continuing oversight of what the application is allowed to do with that access.
For practitioners
- Map identity decisions to the tailnet boundary Document where request identity is consumed from the tailnet and where the application makes its own authorisation decision. This keeps the governance boundary visible when token issuance, client registration, and UI access all depend on the same upstream context.
- Review application capability grants as policy Treat per-user and per-group grants as governed authorisation logic. Identify who can enable the admin UI, who can register OAuth clients, and which claims can be injected into tokens, then make those choices reviewable like any other access policy.
- Separate public and private endpoints Keep the /authorize endpoint and other sensitive identity functions private to the tailnet unless there is a deliberate, documented reason to expose them. Public exposure should be limited to the minimum SaaS-facing surface needed for the login flow.
- Audit token-shaping logic for scope creep Check whether custom claims, dynamic client registration, and user filtering are being used as convenience features or as lasting governance decisions. Anything that affects token contents or registration rights should have an owner and a review cycle.
- Test failure modes in mixed-trust access flows Validate what happens when tailnet identity is unavailable, a grant is misapplied, or the public-facing route reaches the wrong endpoint. Identity services that bridge private and public access need explicit fallback and containment behaviour.
Key takeaways
- Tailscale-aware identity providers merge connectivity context with OAuth governance, which changes where authorisation decisions are made and reviewed.
- Application capability grants are effectively policy when they control UI access, client registration, and token claims, so they need lifecycle governance.
- Private control-plane endpoints and public application endpoints should be separated deliberately when identity logic spans both trust zones.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 addresses the attack and risk surface, while NIST CSF 2.0 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-04 — Insecure Authentication | The article relies on tailnet-attached identity as an auth input for OAuth flows. |
| NHI-05 — Overprivileged NHI | Capability grants can expose admin UI, client registration, and claims with broad authority. | |
| NHI-08 — Environment Isolation | Funnel separates private authorization endpoints from public-facing application routes. | |
| Recommendation — Validate that network-derived identity signals are authenticated before using them in token issuance. Limit grant scope to the minimum OAuth functions each identity context requires. Segregate private identity endpoints from public exposure and verify the boundary regularly. | ||
| NIST CSF 2.0 | PR.AA-05 — Access Permissions, Entitlements and Authorizations | The article is fundamentally about entitlement decisions carried through application grants. |
| Recommendation — Review application grants as governed entitlements and certify who can change them. | ||
| NIST Zero Trust (SP 800-207) | 4.1 — Access enforcement and decisions | The design applies network context to access decisions at runtime across trust zones. |
| Recommendation — Ensure access decisions are enforced at the application boundary and not assumed from connectivity alone. | ||
Key terms
- Tailnet identity: The identity a device, workload, or program presents after joining a private network. In practice, it becomes a control point for admission and request handling, but only if the organisation treats network membership as governed access rather than simple connectivity.
- 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.
- Private Authorization Endpoint: An identity or token issuance endpoint intentionally kept inside a trusted network boundary. It reduces exposure, but it also requires clear separation from any public-facing application surface so that authorisation logic does not become reachable from the wrong trust zone.
- Network-Attached Authorisation: An access model where the application uses request context from the network layer as a direct input to its access decision. This can improve usability and consistency, but it also narrows the gap between connectivity trust and identity governance.
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.
Published by the NHIMG editorial team on August 2, 2026.
Updated on October 12, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org