[{"data":1,"prerenderedAt":1056},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fquick-start":94,"\u002Fgetting-started\u002Fquick-start-surround":1051},[4,33,52],{"title":5,"path":6,"stem":7,"children":8,"icon":32},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17,22,27],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-play",{"title":23,"path":24,"stem":25,"icon":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":28,"path":29,"stem":30,"icon":31},"Production","\u002Fgetting-started\u002Fproduction","1.getting-started\u002F5.production","i-lucide-shield-check","i-lucide-rocket",{"title":34,"path":35,"stem":36,"children":37,"icon":51},"Composable Endpoints","\u002Fcomposables","2.composables\u002F1.index",[38,41,46],{"title":39,"path":35,"stem":36,"icon":40},"Overview","i-lucide-layout-grid",{"title":42,"path":43,"stem":44,"icon":45},"Requirements","\u002Fcomposables\u002Frequirements","2.composables\u002F2.requirements","i-lucide-list-checks",{"title":47,"path":48,"stem":49,"icon":50},"Recipes","\u002Fcomposables\u002Frecipes","2.composables\u002F3.recipes","i-lucide-book-marked","i-lucide-blocks",{"title":53,"icon":54,"path":55,"stem":56,"children":57,"page":93},"Modules","i-lucide-package","\u002Fmodules","3.modules",[58,63,68,73,78,83,88],{"title":59,"path":60,"stem":61,"icon":62},"Identity management","\u002Fmodules\u002Fidentity-management","3.modules\u002F1.identity-management","i-lucide-user-cog",{"title":64,"path":65,"stem":66,"icon":67},"Cookie auth","\u002Fmodules\u002Fcookie-auth","3.modules\u002F2.cookie-auth","i-lucide-cookie",{"title":69,"path":70,"stem":71,"icon":72},"Bearer auth","\u002Fmodules\u002Fbearer-auth","3.modules\u002F3.bearer-auth","i-lucide-key",{"title":74,"path":75,"stem":76,"icon":77},"JWT","\u002Fmodules\u002Fjwt","3.modules\u002F4.jwt","i-lucide-fingerprint",{"title":79,"path":80,"stem":81,"icon":82},"Passkeys","\u002Fmodules\u002Fpasskeys","3.modules\u002F5.passkeys","i-lucide-scan-face",{"title":84,"path":85,"stem":86,"icon":87},"ReAuth","\u002Fmodules\u002Freauth","3.modules\u002F6.reauth","i-lucide-shield-alert",{"title":89,"path":90,"stem":91,"icon":92},"External OAuth","\u002Fmodules\u002Fexternal-oauth","3.modules\u002F7.external-oauth","i-lucide-log-in",false,{"id":95,"title":18,"body":96,"description":1044,"extension":1045,"links":1046,"meta":1047,"navigation":1048,"path":19,"seo":1049,"stem":20,"__hash__":1050},"docs\u002F1.getting-started\u002F3.quick-start.md",{"type":97,"value":98,"toc":1032},"minimark",[99,103,108,379,388,393,413,480,502,506,598,602,606,645,649,677,681,687,783,786,996,1003,1007,1028],[100,101,102],"p",{},"Your frontend is a separate SPA that calls these routes on the ASP.NET Core API.",[104,105,107],"h2",{"id":106},"minimal-host","Minimal host",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-cs shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Program.cs\nbuilder.Services.AddDbContext\u003CAppDbContext>(\u002F* your provider *\u002F);\n\nbuilder.Services.AddAuthEndpoints\u003CAppUser, AppDbContext>(o =>\n{\n    o.Passkeys.ServerDomain = \"example.com\"; \u002F\u002F required in Production\n});\n\n\u002F\u002F Required in Production (Identity's no-op sender is rejected).\nbuilder.Services.AddTransient\u003CIEmailSender\u003CAppUser>, MyEmailSender>();\n\nvar app = builder.Build();\n\napp.UseAuthEndpoints(); \u002F\u002F authentication, authorization, rate limiting, antiforgery\napp.MapAuthEndpoints\u003CAppUser>(); \u002F\u002F \u002Fidentity (management + cookie) + \u002Faccount (passkeys)\n\napp.Run();\n","cs","",[116,117,118,127,163,170,203,209,243,249,254,260,292,297,320,325,342,362,367],"code",{"__ignoreMap":114},[119,120,123],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sHwdD","\u002F\u002F Program.cs\n",[119,128,130,134,138,141,143,147,150,154,157,160],{"class":121,"line":129},2,[119,131,133],{"class":132},"sTEyZ","builder",[119,135,137],{"class":136},"sMK4o",".",[119,139,140],{"class":132},"Services",[119,142,137],{"class":136},[119,144,146],{"class":145},"s2Zo4","AddDbContext",[119,148,149],{"class":136},"\u003C",[119,151,153],{"class":152},"sBMFI","AppDbContext",[119,155,156],{"class":136},">(",[119,158,159],{"class":125},"\u002F* your provider *\u002F",[119,161,162],{"class":136},");\n",[119,164,166],{"class":121,"line":165},3,[119,167,169],{"emptyLinePlaceholder":168},true,"\n",[119,171,173,175,177,179,181,184,186,189,192,195,197,200],{"class":121,"line":172},4,[119,174,133],{"class":132},[119,176,137],{"class":136},[119,178,140],{"class":132},[119,180,137],{"class":136},[119,182,183],{"class":145},"AddAuthEndpoints",[119,185,149],{"class":136},[119,187,188],{"class":152},"AppUser",[119,190,191],{"class":136},",",[119,193,194],{"class":152}," AppDbContext",[119,196,156],{"class":136},[119,198,199],{"class":152},"o",[119,201,202],{"class":136}," =>\n",[119,204,206],{"class":121,"line":205},5,[119,207,208],{"class":136},"{\n",[119,210,212,215,217,219,221,224,227,230,234,237,240],{"class":121,"line":211},6,[119,213,214],{"class":132},"    o",[119,216,137],{"class":136},[119,218,79],{"class":132},[119,220,137],{"class":136},[119,222,223],{"class":132},"ServerDomain ",[119,225,226],{"class":136},"=",[119,228,229],{"class":136}," \"",[119,231,233],{"class":232},"sfazB","example.com",[119,235,236],{"class":136},"\"",[119,238,239],{"class":136},";",[119,241,242],{"class":125}," \u002F\u002F required in Production\n",[119,244,246],{"class":121,"line":245},7,[119,247,248],{"class":136},"});\n",[119,250,252],{"class":121,"line":251},8,[119,253,169],{"emptyLinePlaceholder":168},[119,255,257],{"class":121,"line":256},9,[119,258,259],{"class":125},"\u002F\u002F Required in Production (Identity's no-op sender is rejected).\n",[119,261,263,265,267,269,271,274,276,279,281,283,286,289],{"class":121,"line":262},10,[119,264,133],{"class":132},[119,266,137],{"class":136},[119,268,140],{"class":132},[119,270,137],{"class":136},[119,272,273],{"class":145},"AddTransient",[119,275,149],{"class":136},[119,277,278],{"class":152},"IEmailSender",[119,280,149],{"class":136},[119,282,188],{"class":152},[119,284,285],{"class":136},">,",[119,287,288],{"class":152}," MyEmailSender",[119,290,291],{"class":136},">();\n",[119,293,295],{"class":121,"line":294},11,[119,296,169],{"emptyLinePlaceholder":168},[119,298,300,303,306,309,312,314,317],{"class":121,"line":299},12,[119,301,302],{"class":152},"var",[119,304,305],{"class":152}," app",[119,307,308],{"class":136}," =",[119,310,311],{"class":132}," builder",[119,313,137],{"class":136},[119,315,316],{"class":145},"Build",[119,318,319],{"class":136},"();\n",[119,321,323],{"class":121,"line":322},13,[119,324,169],{"emptyLinePlaceholder":168},[119,326,328,331,333,336,339],{"class":121,"line":327},14,[119,329,330],{"class":132},"app",[119,332,137],{"class":136},[119,334,335],{"class":145},"UseAuthEndpoints",[119,337,338],{"class":136},"();",[119,340,341],{"class":125}," \u002F\u002F authentication, authorization, rate limiting, antiforgery\n",[119,343,345,347,349,352,354,356,359],{"class":121,"line":344},15,[119,346,330],{"class":132},[119,348,137],{"class":136},[119,350,351],{"class":145},"MapAuthEndpoints",[119,353,149],{"class":136},[119,355,188],{"class":152},[119,357,358],{"class":136},">();",[119,360,361],{"class":125}," \u002F\u002F \u002Fidentity (management + cookie) + \u002Faccount (passkeys)\n",[119,363,365],{"class":121,"line":364},16,[119,366,169],{"emptyLinePlaceholder":168},[119,368,370,372,374,377],{"class":121,"line":369},17,[119,371,330],{"class":132},[119,373,137],{"class":136},[119,375,376],{"class":145},"Run",[119,378,319],{"class":136},[100,380,381,383,384,387],{},[116,382,183],{}," returns an ",[116,385,386],{},"IdentityBuilder"," for optional Identity chaining.",[389,390,392],"h3",{"id":391},"roles","Roles",[100,394,395,396,399,400,403,404,408,409,412],{},"Use the three-type overload so EF registers ",[116,397,398],{},"IRoleStore"," correctly (",[116,401,402],{},"AddRoles"," must run ",[405,406,407],"strong",{},"before"," ",[116,410,411],{},"AddEntityFrameworkStores","):",[109,414,416],{"className":111,"code":415,"language":113,"meta":114,"style":114},"builder.Services.AddAuthEndpoints\u003CAppUser, AppRole, AppDbContext>(o =>\n{\n    o.Passkeys.ServerDomain = \"example.com\";\n});\n",[116,417,418,449,453,476],{"__ignoreMap":114},[119,419,420,422,424,426,428,430,432,434,436,439,441,443,445,447],{"class":121,"line":122},[119,421,133],{"class":132},[119,423,137],{"class":136},[119,425,140],{"class":132},[119,427,137],{"class":136},[119,429,183],{"class":145},[119,431,149],{"class":136},[119,433,188],{"class":152},[119,435,191],{"class":136},[119,437,438],{"class":152}," AppRole",[119,440,191],{"class":136},[119,442,194],{"class":152},[119,444,156],{"class":136},[119,446,199],{"class":152},[119,448,202],{"class":136},[119,450,451],{"class":121,"line":129},[119,452,208],{"class":136},[119,454,455,457,459,461,463,465,467,469,471,473],{"class":121,"line":165},[119,456,214],{"class":132},[119,458,137],{"class":136},[119,460,79],{"class":132},[119,462,137],{"class":136},[119,464,223],{"class":132},[119,466,226],{"class":136},[119,468,229],{"class":136},[119,470,233],{"class":232},[119,472,236],{"class":136},[119,474,475],{"class":136},";\n",[119,477,478],{"class":121,"line":172},[119,479,248],{"class":136},[100,481,482,483,486,487,490,491,494,495,498,499,501],{},"Your ",[116,484,485],{},"DbContext"," should be ",[116,488,489],{},"IdentityDbContext\u003CAppUser, AppRole, TKey>"," (or equivalent). Do ",[405,492,493],{},"not"," chain bare ",[116,496,497],{},".AddRoles\u003CTRole>()"," after the two-type overload — that leaves ",[116,500,398],{}," unregistered.",[104,503,505],{"id":504},"default-routes-facade","Default routes (facade)",[507,508,509,525],"table",{},[510,511,512],"thead",{},[513,514,515,519,522],"tr",{},[516,517,518],"th",{},"Area",[516,520,521],{},"Path prefix",[516,523,524],{},"Main routes",[526,527,528,561,573],"tbody",{},[513,529,530,534,539],{},[531,532,533],"td",{},"Management + cookie",[531,535,536],{},[116,537,538],{},"\u002Fidentity",[531,540,541,544,545,544,548,544,551,554,555,544,558],{},[116,542,543],{},"register",", ",[116,546,547],{},"login",[116,549,550],{},"logout",[116,552,553],{},"csrfToken",", confirm\u002Fforgot\u002Freset, ",[116,556,557],{},"manage\u002F*",[116,559,560],{},"confirmIdentity",[513,562,563,565,570],{},[531,564,79],{},[531,566,567],{},[116,568,569],{},"\u002Faccount",[531,571,572],{},"passkeys register\u002Flogin options + complete, credential CRUD",[513,574,575,578,583],{},[531,576,577],{},"JWT (if enabled)",[531,579,580],{},[116,581,582],{},"\u002Fauth",[531,584,585,544,588,544,591,544,594,544,596],{},[116,586,587],{},"create",[116,589,590],{},"refresh",[116,592,593],{},"verify",[116,595,550],{},[116,597,553],{},[104,599,601],{"id":600},"spa-usage-notes","SPA usage notes",[389,603,605],{"id":604},"cookie-stack","Cookie stack",[607,608,609,621],"ul",{},[610,611,612,613,616,617,620],"li",{},"Send cookies with credentials (",[116,614,615],{},"credentials: \"include\""," \u002F Axios ",[116,618,619],{},"withCredentials",").",[610,622,623,624,627,628,631,632,635,636,635,639,635,642,620],{},"Call ",[116,625,626],{},"GET \u002Fidentity\u002FcsrfToken",", then send the token as ",[116,629,630],{},"RequestVerificationToken"," on unsafe methods (",[116,633,634],{},"POST"," \u002F ",[116,637,638],{},"PUT",[116,640,641],{},"PATCH",[116,643,644],{},"DELETE",[389,646,648],{"id":647},"jwt-stack-when-enabled","JWT stack (when enabled)",[607,650,651,660],{},[610,652,653,656,657,137],{},[116,654,655],{},"POST \u002Fauth\u002Fcreate"," returns an access token; send it as ",[116,658,659],{},"Authorization: Bearer …",[610,661,662,663,666,667,670,671,674,675,620],{},"Refresh token is an HttpOnly cookie; ",[116,664,665],{},"POST \u002Fauth\u002Frefresh"," and ",[116,668,669],{},"POST \u002Fauth\u002Flogout"," need CSRF (",[116,672,673],{},"GET \u002Fauth\u002FcsrfToken"," + ",[116,676,630],{},[104,678,680],{"id":679},"enable-jwt-facade-opt-in","Enable JWT (facade opt-in)",[100,682,683,684,686],{},"Map the refresh-token entity on your ",[116,685,485],{},":",[109,688,690],{"className":111,"code":689,"language":113,"meta":114,"style":114},"\u002F\u002F AppDbContext.cs\nusing AuthEndpoints.Jwt;\n\nprotected override void OnModelCreating(ModelBuilder builder)\n{\n    base.OnModelCreating(builder);\n    builder.UseRefreshToken(); \u002F\u002F AuthEndpointsRefreshTokens table\n}\n",[116,691,692,697,713,717,743,747,763,778],{"__ignoreMap":114},[119,693,694],{"class":121,"line":122},[119,695,696],{"class":125},"\u002F\u002F AppDbContext.cs\n",[119,698,699,703,706,708,711],{"class":121,"line":129},[119,700,702],{"class":701},"sbssI","using",[119,704,705],{"class":132}," AuthEndpoints",[119,707,137],{"class":136},[119,709,710],{"class":132},"Jwt",[119,712,475],{"class":136},[119,714,715],{"class":121,"line":165},[119,716,169],{"emptyLinePlaceholder":168},[119,718,719,723,726,729,732,735,738,740],{"class":121,"line":172},[119,720,722],{"class":721},"spNyl","protected",[119,724,725],{"class":721}," override",[119,727,728],{"class":136}," void",[119,730,731],{"class":145}," OnModelCreating",[119,733,734],{"class":136},"(",[119,736,737],{"class":152},"ModelBuilder",[119,739,311],{"class":152},[119,741,742],{"class":136},")\n",[119,744,745],{"class":121,"line":205},[119,746,208],{"class":136},[119,748,749,752,754,757,759,761],{"class":121,"line":211},[119,750,751],{"class":132},"    base",[119,753,137],{"class":136},[119,755,756],{"class":145},"OnModelCreating",[119,758,734],{"class":136},[119,760,133],{"class":132},[119,762,162],{"class":136},[119,764,765,768,770,773,775],{"class":121,"line":245},[119,766,767],{"class":132},"    builder",[119,769,137],{"class":136},[119,771,772],{"class":145},"UseRefreshToken",[119,774,338],{"class":136},[119,776,777],{"class":125}," \u002F\u002F AuthEndpointsRefreshTokens table\n",[119,779,780],{"class":121,"line":251},[119,781,782],{"class":136},"}\n",[100,784,785],{},"Then enable JWT on the facade:",[109,787,789],{"className":111,"code":788,"language":113,"meta":114,"style":114},"builder.Services.AddAuthEndpoints\u003CAppUser, AppDbContext>(o =>\n{\n    o.Passkeys.ServerDomain = \"example.com\";\n    o.Jwt.Enabled = true;\n    o.Jwt.Path = \"\u002Fauth\";\n    o.Jwt.Configure = jwt =>\n    {\n        jwt.Issuer = \"https:\u002F\u002Fexample.com\";\n        jwt.Audience = \"https:\u002F\u002Fexample.com\";\n        jwt.SigningOptions.SymmetricKey = builder.Configuration[\"Jwt:SymmetricKey\"];\n    };\n});\n",[116,790,791,817,821,843,864,887,907,912,933,952,987,992],{"__ignoreMap":114},[119,792,793,795,797,799,801,803,805,807,809,811,813,815],{"class":121,"line":122},[119,794,133],{"class":132},[119,796,137],{"class":136},[119,798,140],{"class":132},[119,800,137],{"class":136},[119,802,183],{"class":145},[119,804,149],{"class":136},[119,806,188],{"class":152},[119,808,191],{"class":136},[119,810,194],{"class":152},[119,812,156],{"class":136},[119,814,199],{"class":152},[119,816,202],{"class":136},[119,818,819],{"class":121,"line":129},[119,820,208],{"class":136},[119,822,823,825,827,829,831,833,835,837,839,841],{"class":121,"line":165},[119,824,214],{"class":132},[119,826,137],{"class":136},[119,828,79],{"class":132},[119,830,137],{"class":136},[119,832,223],{"class":132},[119,834,226],{"class":136},[119,836,229],{"class":136},[119,838,233],{"class":232},[119,840,236],{"class":136},[119,842,475],{"class":136},[119,844,845,847,849,851,853,856,858,862],{"class":121,"line":172},[119,846,214],{"class":132},[119,848,137],{"class":136},[119,850,710],{"class":132},[119,852,137],{"class":136},[119,854,855],{"class":132},"Enabled ",[119,857,226],{"class":136},[119,859,861],{"class":860},"sfNiH"," true",[119,863,475],{"class":136},[119,865,866,868,870,872,874,877,879,881,883,885],{"class":121,"line":205},[119,867,214],{"class":132},[119,869,137],{"class":136},[119,871,710],{"class":132},[119,873,137],{"class":136},[119,875,876],{"class":132},"Path ",[119,878,226],{"class":136},[119,880,229],{"class":136},[119,882,582],{"class":232},[119,884,236],{"class":136},[119,886,475],{"class":136},[119,888,889,891,893,895,897,900,902,905],{"class":121,"line":211},[119,890,214],{"class":132},[119,892,137],{"class":136},[119,894,710],{"class":132},[119,896,137],{"class":136},[119,898,899],{"class":132},"Configure ",[119,901,226],{"class":136},[119,903,904],{"class":152}," jwt",[119,906,202],{"class":136},[119,908,909],{"class":121,"line":245},[119,910,911],{"class":136},"    {\n",[119,913,914,917,919,922,924,926,929,931],{"class":121,"line":251},[119,915,916],{"class":132},"        jwt",[119,918,137],{"class":136},[119,920,921],{"class":132},"Issuer ",[119,923,226],{"class":136},[119,925,229],{"class":136},[119,927,928],{"class":232},"https:\u002F\u002Fexample.com",[119,930,236],{"class":136},[119,932,475],{"class":136},[119,934,935,937,939,942,944,946,948,950],{"class":121,"line":256},[119,936,916],{"class":132},[119,938,137],{"class":136},[119,940,941],{"class":132},"Audience ",[119,943,226],{"class":136},[119,945,229],{"class":136},[119,947,928],{"class":232},[119,949,236],{"class":136},[119,951,475],{"class":136},[119,953,954,956,958,961,963,966,968,970,972,974,977,979,982,984],{"class":121,"line":262},[119,955,916],{"class":132},[119,957,137],{"class":136},[119,959,960],{"class":132},"SigningOptions",[119,962,137],{"class":136},[119,964,965],{"class":132},"SymmetricKey ",[119,967,226],{"class":136},[119,969,311],{"class":132},[119,971,137],{"class":136},[119,973,23],{"class":132},[119,975,976],{"class":136},"[",[119,978,236],{"class":136},[119,980,981],{"class":232},"Jwt:SymmetricKey",[119,983,236],{"class":136},[119,985,986],{"class":136},"];\n",[119,988,989],{"class":121,"line":294},[119,990,991],{"class":136},"    };\n",[119,993,994],{"class":121,"line":299},[119,995,248],{"class":136},[100,997,998,999,1002],{},"Add a migration (or recreate the database) so ",[116,1000,1001],{},"AuthEndpoints.AuthEndpointsRefreshTokens"," exists. Tokens are stored hashed; recreate that table if upgrading from plaintext refresh-token storage.",[104,1004,1006],{"id":1005},"next-steps","Next steps",[607,1008,1009,1015,1021],{},[610,1010,1011,1012],{},"Tune ",[1013,1014,23],"a",{"href":24},[610,1016,1017,1018],{},"Follow the ",[1013,1019,1020],{"href":29},"Production checklist",[610,1022,1023,1024,1027],{},"Or ",[1013,1025,1026],{"href":35},"compose modules"," yourself for bearer\u002FJWT-only stacks",[1029,1030,1031],"style",{},"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 pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":114,"searchDepth":122,"depth":129,"links":1033},[1034,1037,1038,1042,1043],{"id":106,"depth":129,"text":107,"children":1035},[1036],{"id":391,"depth":165,"text":392},{"id":504,"depth":129,"text":505},{"id":600,"depth":129,"text":601,"children":1039},[1040,1041],{"id":604,"depth":165,"text":605},{"id":647,"depth":165,"text":648},{"id":679,"depth":129,"text":680},{"id":1005,"depth":129,"text":1006},"Wire the opinionated AuthEndpoints facade for cookie Identity and passkeys.","md",null,{},{"icon":21},{"title":18,"description":1044},"0n0zcwHT7sITPqizCSqAVNuODxPq-DjR4-jUDcEq9sE",[1052,1054],{"title":13,"path":14,"stem":15,"description":1053,"icon":16,"children":-1},"Add the AuthEndpoints NuGet package to your ASP.NET Core project.",{"title":23,"path":24,"stem":25,"description":1055,"icon":26,"children":-1},"Reference for AuthEndpointsOptions and nested passkey\u002FJWT settings.",1785399439560]