[{"data":1,"prerenderedAt":539},["ShallowReactive",2],{"navigation":3,"\u002Fecosystem\u002Fauth":89,"\u002Fecosystem\u002Fauth-surround":534},[4,40,63,76],{"title":5,"path":6,"stem":7,"children":8,"icon":39},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11,15,19,23,27,31,35],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Quick Start: Service Provider","\u002Fgetting-started\u002Fquickstart-sp","1.getting-started\u002F2.quickstart-sp",{"title":16,"path":17,"stem":18},"Quick Start: Identity Provider","\u002Fgetting-started\u002Fquickstart-idp","1.getting-started\u002F3.quickstart-idp",{"title":20,"path":21,"stem":22},"Quick Start: Agent","\u002Fgetting-started\u002Fquickstart-agent","1.getting-started\u002F4.quickstart-agent",{"title":24,"path":25,"stem":26},"Quick Start","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F5.installation",{"title":28,"path":29,"stem":30},"How It Works","\u002Fgetting-started\u002Fhow-it-works","1.getting-started\u002F6.how-it-works",{"title":32,"path":33,"stem":34},"For Service Providers","\u002Fgetting-started\u002Ffor-service-providers","1.getting-started\u002F7.for-service-providers",{"title":36,"path":37,"stem":38},"CLI (apes & ape-shell)","\u002Fgetting-started\u002Fcli","1.getting-started\u002F8.cli",false,{"title":41,"path":42,"stem":43,"children":44,"icon":39},"Ecosystem","\u002Fecosystem","2.ecosystem\u002F1.index",[45,47,51,55,59],{"title":46,"path":42,"stem":43},"Overview",{"title":48,"path":49,"stem":50},"OpenApe Auth","\u002Fecosystem\u002Fauth","2.ecosystem\u002F2.auth",{"title":52,"path":53,"stem":54},"OpenApe Grants","\u002Fecosystem\u002Fgrants","2.ecosystem\u002F3.grants",{"title":56,"path":57,"stem":58},"nuxt-auth-sp","\u002Fecosystem\u002Fnuxt-auth-sp","2.ecosystem\u002F4.nuxt-auth-sp",{"title":60,"path":61,"stem":62},"escapes","\u002Fecosystem\u002Fescapes","2.ecosystem\u002F5.escapes",{"title":64,"icon":39,"path":65,"stem":66,"children":67,"page":39},"Security","\u002Fsecurity","3.security",[68,72],{"title":69,"path":70,"stem":71},"Compliance","\u002Fsecurity\u002Fcompliance","3.security\u002F1.compliance",{"title":73,"path":74,"stem":75},"Threat Model","\u002Fsecurity\u002Fthreat-model","3.security\u002F2.threat-model",{"title":77,"icon":39,"path":78,"stem":79,"children":80,"page":39},"Guides","\u002Fguides","4.guides",[81,85],{"title":82,"path":83,"stem":84},"Capabilities & Grants","\u002Fguides\u002Fcapabilities","4.guides\u002F1.capabilities",{"title":86,"path":87,"stem":88},"Delegation","\u002Fguides\u002Fdelegation","4.guides\u002F2.delegation",{"id":90,"title":48,"body":91,"description":527,"extension":528,"links":529,"meta":530,"navigation":531,"path":49,"seo":532,"stem":50,"__hash__":533},"docs\u002F2.ecosystem\u002F2.auth.md",{"type":92,"value":93,"toc":518},"minimark",[94,98,103,107,152,156,159,164,205,209,229,233,236,241,288,301,444,448,451,455,487,497,506,514],[95,96,48],"h1",{"id":97},"openape-auth",[99,100,102],"h2",{"id":101},"openapecore","@openape\u002Fcore",[104,105,106],"p",{},"The foundation package. Framework-agnostic, zero dependencies.",[108,109,110,123,129,135],"ul",{},[111,112,113,117,118,122],"li",{},[114,115,116],"strong",{},"DNS Discovery"," — resolve ",[119,120,121],"code",{},"_ddisa.{domain}"," TXT records to find the IdP",[111,124,125,128],{},[114,126,127],{},"PKCE"," — code challenge\u002Fverifier generation for secure OAuth flows",[111,130,131,134],{},[114,132,133],{},"JWT"," — sign, verify, and validate DDISA assertion tokens",[111,136,137,140,141,144,145,144,148,151],{},[114,138,139],{},"Types"," — ",[119,142,143],{},"DDISAAssertionClaims",", ",[119,146,147],{},"ActorType",[119,149,150],{},"AuthFlowState",", etc.",[99,153,155],{"id":154},"openapeauth","@openape\u002Fauth",[104,157,158],{},"Complete OIDC login protocol logic — both sides in one package.",[160,161,163],"h3",{"id":162},"idp-side","IdP Side",[108,165,166,172,178,188],{},[111,167,168,171],{},[119,169,170],{},"handleAuthorize()"," — validate authorization requests",[111,173,174,177],{},[119,175,176],{},"handleTokenExchange()"," — exchange codes for signed assertions",[111,179,180,183,184,187],{},[119,181,182],{},"issueAssertion()"," — create minimal AuthN-JWTs with ",[119,185,186],{},"act"," claim",[111,189,190,140,193,144,196,144,199,144,202],{},[114,191,192],{},"WebAuthn",[119,194,195],{},"createRegistrationOptions()",[119,197,198],{},"verifyRegistration()",[119,200,201],{},"createAuthenticationOptions()",[119,203,204],{},"verifyAuthentication()",[160,206,208],{"id":207},"sp-side","SP Side",[108,210,211,217,223],{},[111,212,213,216],{},[119,214,215],{},"discoverIdP()"," — DNS-based IdP discovery via DoH",[111,218,219,222],{},[119,220,221],{},"createAuthorizationURL()"," — build OAuth redirect with PKCE",[111,224,225,228],{},[119,226,227],{},"handleCallback()"," — exchange code, validate assertion",[99,230,232],{"id":231},"openapenuxt-auth-idp","@openape\u002Fnuxt-auth-idp",[104,234,235],{},"Drop-in Nuxt module. Add it, configure it, you're an IdP.",[104,237,238],{},[114,239,240],{},"Auto-registered routes:",[108,242,243,255,261,270,276,282],{},[111,244,245,144,248,144,251,254],{},[119,246,247],{},"\u002Flogin",[119,249,250],{},"\u002Fregister",[119,252,253],{},"\u002Faccount"," — Passkey-based UI (overridable)",[111,256,257,260],{},[119,258,259],{},"\u002Fadmin"," — User and agent management",[111,262,263,144,266,269],{},[119,264,265],{},"\u002Fauthorize",[119,267,268],{},"\u002Ftoken"," — OAuth endpoints",[111,271,272,275],{},[119,273,274],{},"\u002F.well-known\u002Fjwks.json"," — Public key discovery",[111,277,278,281],{},[119,279,280],{},"\u002Fapi\u002Fwebauthn\u002F*"," — Registration and login flows",[111,283,284,287],{},[119,285,286],{},"\u002Fapi\u002Fadmin\u002F*"," — User, agent, and registration URL management",[104,289,290],{},[114,291,292,293,296,297,300],{},"Configuration via ",[119,294,295],{},"openapeIdp"," in ",[119,298,299],{},"nuxt.config.ts",":",[302,303,308],"pre",{"className":304,"code":305,"language":306,"meta":307,"style":307},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","openapeIdp: {\n  rpName: 'My IdP',\n  rpID: 'id.example.com',\n  rpOrigin: 'https:\u002F\u002Fid.example.com',\n  requireUserVerification: true,  \u002F\u002F NIS2 strict mode\n  residentKey: 'required',        \u002F\u002F true passkey experience\n  attestationType: 'none',        \u002F\u002F or 'direct' for enterprise\n}\n","ts","",[119,309,310,324,345,362,379,398,418,438],{"__ignoreMap":307},[311,312,315,318,321],"span",{"class":313,"line":314},"line",1,[311,316,295],{"class":317},"sBMFI",[311,319,300],{"class":320},"sMK4o",[311,322,323],{"class":320}," {\n",[311,325,327,330,332,335,339,342],{"class":313,"line":326},2,[311,328,329],{"class":317},"  rpName",[311,331,300],{"class":320},[311,333,334],{"class":320}," '",[311,336,338],{"class":337},"sfazB","My IdP",[311,340,341],{"class":320},"'",[311,343,344],{"class":320},",\n",[311,346,348,351,353,355,358,360],{"class":313,"line":347},3,[311,349,350],{"class":317},"  rpID",[311,352,300],{"class":320},[311,354,334],{"class":320},[311,356,357],{"class":337},"id.example.com",[311,359,341],{"class":320},[311,361,344],{"class":320},[311,363,365,368,370,372,375,377],{"class":313,"line":364},4,[311,366,367],{"class":317},"  rpOrigin",[311,369,300],{"class":320},[311,371,334],{"class":320},[311,373,374],{"class":337},"https:\u002F\u002Fid.example.com",[311,376,341],{"class":320},[311,378,344],{"class":320},[311,380,382,385,387,391,394],{"class":313,"line":381},5,[311,383,384],{"class":317},"  requireUserVerification",[311,386,300],{"class":320},[311,388,390],{"class":389},"sfNiH"," true",[311,392,393],{"class":320},",",[311,395,397],{"class":396},"sHwdD","  \u002F\u002F NIS2 strict mode\n",[311,399,401,404,406,408,411,413,415],{"class":313,"line":400},6,[311,402,403],{"class":317},"  residentKey",[311,405,300],{"class":320},[311,407,334],{"class":320},[311,409,410],{"class":337},"required",[311,412,341],{"class":320},[311,414,393],{"class":320},[311,416,417],{"class":396},"        \u002F\u002F true passkey experience\n",[311,419,421,424,426,428,431,433,435],{"class":313,"line":420},7,[311,422,423],{"class":317},"  attestationType",[311,425,300],{"class":320},[311,427,334],{"class":320},[311,429,430],{"class":337},"none",[311,432,341],{"class":320},[311,434,393],{"class":320},[311,436,437],{"class":396},"        \u002F\u002F or 'direct' for enterprise\n",[311,439,441],{"class":313,"line":440},8,[311,442,443],{"class":320},"}\n",[99,445,447],{"id":446},"openapenuxt-auth-sp","@openape\u002Fnuxt-auth-sp",[104,449,450],{},"Drop-in Nuxt module. Stateless. Zero server storage.",[104,452,453],{},[114,454,240],{},[108,456,457,463,469,475,481],{},[111,458,459,462],{},[119,460,461],{},"\u002Fapi\u002Flogin"," — initiate DDISA login flow",[111,464,465,468],{},[119,466,467],{},"\u002Fapi\u002Fcallback"," — handle OAuth callback",[111,470,471,474],{},[119,472,473],{},"\u002Fapi\u002Flogout"," — destroy session",[111,476,477,480],{},[119,478,479],{},"\u002Fapi\u002Fme"," — current user info",[111,482,483,486],{},[119,484,485],{},"\u002F.well-known\u002Fsp-manifest.json"," — SP metadata",[104,488,489,492,493,496],{},[114,490,491],{},"Composable:"," ",[119,494,495],{},"useOpenApeAuth()"," for client-side auth state.",[104,498,499,492,502,505],{},[114,500,501],{},"Component:",[119,503,504],{},"\u003COpenApeAuth \u002F>"," — prebuilt login form with customizable slots and CSS variables.",[104,507,508,509,513],{},"See the ",[510,511,512],"a",{"href":57},"dedicated nuxt-auth-sp docs"," for full API reference.",[515,516,517],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":307,"searchDepth":314,"depth":326,"links":519},[520,521,525,526],{"id":101,"depth":326,"text":102},{"id":154,"depth":326,"text":155,"children":522},[523,524],{"id":162,"depth":347,"text":163},{"id":207,"depth":347,"text":208},{"id":231,"depth":326,"text":232},{"id":446,"depth":326,"text":447},"DNS-based identity for humans and agents.","md",null,{},true,{"title":48,"description":527},"FA4V-MehsmnUT-Knc6upVtYWbgyLOpuSGAfkrFB6MKs",[535,537],{"title":46,"path":42,"stem":43,"description":536,"children":-1},"The OpenApe package ecosystem.",{"title":52,"path":53,"stem":54,"description":538,"children":-1},"Human-in-the-loop permissions for agents.",1776885317056]