[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-labs-microsoft":3,"mdc--kagvf5-key":35,"related-repo-vercel-labs-microsoft":5388,"related-org-vercel-labs-microsoft":5489},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"microsoft","emulate Microsoft Entra ID for local development","Emulated Microsoft Entra ID (Azure AD) OAuth 2.0 \u002F OpenID Connect for local development and testing. Use when the user needs to test Microsoft sign-in locally, emulate Entra ID OIDC discovery, handle Microsoft token exchange, configure Azure AD OAuth clients, work with Microsoft Graph \u002Fme, or test PKCE\u002Fclient credentials flows without hitting real Microsoft APIs. Triggers include \"Microsoft OAuth\", \"Entra ID\", \"Azure AD\", \"emulate Microsoft\", \"mock Microsoft login\", \"test Microsoft sign-in\", \"Microsoft OIDC\", \"local Microsoft auth\", or any task requiring a local Microsoft OAuth\u002FOIDC provider.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel-labs","Vercel Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel-labs.png",[12,16,19,21],{"name":13,"slug":14,"type":15},"Auth","auth","tag",{"name":17,"slug":18,"type":15},"Local Development","local-development",{"name":20,"slug":4,"type":15},"Microsoft",{"name":22,"slug":23,"type":15},"OAuth","oauth",1511,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Femulate","2026-07-17T06:08:55.822349",null,95,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Local API emulation for CI and no-network sandboxes","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Femulate\u002Ftree\u002FHEAD\u002Fskills\u002Fmicrosoft","---\nname: microsoft\ndescription: Emulated Microsoft Entra ID (Azure AD) OAuth 2.0 \u002F OpenID Connect for local development and testing. Use when the user needs to test Microsoft sign-in locally, emulate Entra ID OIDC discovery, handle Microsoft token exchange, configure Azure AD OAuth clients, work with Microsoft Graph \u002Fme, or test PKCE\u002Fclient credentials flows without hitting real Microsoft APIs. Triggers include \"Microsoft OAuth\", \"Entra ID\", \"Azure AD\", \"emulate Microsoft\", \"mock Microsoft login\", \"test Microsoft sign-in\", \"Microsoft OIDC\", \"local Microsoft auth\", or any task requiring a local Microsoft OAuth\u002FOIDC provider.\nallowed-tools: Bash(npx emulate:*), Bash(emulate:*), Bash(curl:*)\n---\n\n# Microsoft Entra ID Emulator\n\nMicrosoft Entra ID (Azure AD) v2.0 OAuth 2.0 and OpenID Connect emulation with authorization code flow, PKCE, client credentials, RS256 ID tokens, OIDC discovery, and a Microsoft Graph `\u002Fv1.0\u002Fme` endpoint.\n\n## Start\n\n```bash\n# Microsoft only\nnpx emulate --service microsoft\n\n# Default port (when run alone)\n# http:\u002F\u002Flocalhost:4000\n```\n\nOr programmatically:\n\n```typescript\nimport { createEmulator } from 'emulate'\n\nconst microsoft = await createEmulator({ service: 'microsoft', port: 4005 })\n\u002F\u002F microsoft.url === 'http:\u002F\u002Flocalhost:4005'\n```\n\n## Pointing Your App at the Emulator\n\n### Environment Variable\n\n```bash\nMICROSOFT_EMULATOR_URL=http:\u002F\u002Flocalhost:4005\n```\n\n### OAuth URL Mapping\n\n| Real Microsoft URL | Emulator URL |\n|--------------------|-------------|\n| `https:\u002F\u002Flogin.microsoftonline.com\u002F{tenant}\u002Fv2.0\u002F.well-known\u002Fopenid-configuration` | `$MICROSOFT_EMULATOR_URL\u002F{tenant}\u002Fv2.0\u002F.well-known\u002Fopenid-configuration` |\n| `https:\u002F\u002Flogin.microsoftonline.com\u002F.well-known\u002Fopenid-configuration` | `$MICROSOFT_EMULATOR_URL\u002F.well-known\u002Fopenid-configuration` |\n| `https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Foauth2\u002Fv2.0\u002Fauthorize` | `$MICROSOFT_EMULATOR_URL\u002Foauth2\u002Fv2.0\u002Fauthorize` |\n| `https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Foauth2\u002Fv2.0\u002Ftoken` | `$MICROSOFT_EMULATOR_URL\u002Foauth2\u002Fv2.0\u002Ftoken` |\n| `https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Fdiscovery\u002Fv2.0\u002Fkeys` | `$MICROSOFT_EMULATOR_URL\u002Fdiscovery\u002Fv2.0\u002Fkeys` |\n| `https:\u002F\u002Fgraph.microsoft.com\u002Foidc\u002Fuserinfo` | `$MICROSOFT_EMULATOR_URL\u002Foidc\u002Fuserinfo` |\n| `https:\u002F\u002Fgraph.microsoft.com\u002Fv1.0\u002Fme` | `$MICROSOFT_EMULATOR_URL\u002Fv1.0\u002Fme` |\n\n### Auth.js \u002F NextAuth.js\n\n```typescript\nimport MicrosoftEntraId from '@auth\u002Fcore\u002Fproviders\u002Fmicrosoft-entra-id'\n\nMicrosoftEntraId({\n  clientId: process.env.MICROSOFT_CLIENT_ID,\n  clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n  authorization: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foauth2\u002Fv2.0\u002Fauthorize`,\n    params: { scope: 'openid email profile User.Read' },\n  },\n  token: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foauth2\u002Fv2.0\u002Ftoken`,\n  },\n  userinfo: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foidc\u002Fuserinfo`,\n  },\n  issuer: process.env.MICROSOFT_EMULATOR_URL,\n})\n```\n\n### Passport.js\n\n```typescript\nimport { OIDCStrategy } from 'passport-azure-ad'\n\nconst MICROSOFT_URL = process.env.MICROSOFT_EMULATOR_URL ?? 'https:\u002F\u002Flogin.microsoftonline.com'\n\nnew OIDCStrategy({\n  identityMetadata: `${MICROSOFT_URL}\u002F.well-known\u002Fopenid-configuration`,\n  clientID: process.env.MICROSOFT_CLIENT_ID,\n  clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n  redirectUrl: 'http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id',\n  responseType: 'code',\n  responseMode: 'query',\n  scope: ['openid', 'email', 'profile'],\n}, verifyCallback)\n```\n\n### MSAL.js\n\n```typescript\nimport { ConfidentialClientApplication } from '@azure\u002Fmsal-node'\n\nconst msalConfig = {\n  auth: {\n    clientId: process.env.MICROSOFT_CLIENT_ID,\n    clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n    authority: process.env.MICROSOFT_EMULATOR_URL,\n    knownAuthorities: [process.env.MICROSOFT_EMULATOR_URL],\n  },\n}\n\nconst cca = new ConfidentialClientApplication(msalConfig)\n```\n\n## Seed Config\n\n```yaml\nmicrosoft:\n  users:\n    - email: testuser@outlook.com\n      name: Test User\n      given_name: Test\n      family_name: User\n      tenant_id: 9188040d-6c67-4c5b-b112-36a304b66dad\n  oauth_clients:\n    - client_id: example-client-id\n      client_secret: example-client-secret\n      name: My Microsoft App\n      redirect_uris:\n        - http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id\n      tenant_id: 9188040d-6c67-4c5b-b112-36a304b66dad\n```\n\nWhen no OAuth clients are configured, the emulator accepts any `client_id`. With clients configured, strict validation is enforced for `client_id`, `client_secret`, and `redirect_uri`.\n\n## API Endpoints\n\n### OIDC Discovery\n\n```bash\n# Default tenant\ncurl http:\u002F\u002Flocalhost:4005\u002F.well-known\u002Fopenid-configuration\n\n# Tenant-scoped (common, organizations, consumers, or specific tenant ID)\ncurl http:\u002F\u002Flocalhost:4005\u002Fcommon\u002Fv2.0\u002F.well-known\u002Fopenid-configuration\n```\n\nReturns the standard OIDC discovery document:\n\n```json\n{\n  \"issuer\": \"http:\u002F\u002Flocalhost:4005\u002F{tenant}\u002Fv2.0\",\n  \"authorization_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize\",\n  \"token_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken\",\n  \"userinfo_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo\",\n  \"end_session_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout\",\n  \"jwks_uri\": \"http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys\",\n  \"response_types_supported\": [\"code\"],\n  \"subject_types_supported\": [\"pairwise\"],\n  \"id_token_signing_alg_values_supported\": [\"RS256\"],\n  \"scopes_supported\": [\"openid\", \"email\", \"profile\", \"User.Read\", \"offline_access\"],\n  \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"client_secret_basic\"]\n}\n```\n\n### JWKS\n\n```bash\ncurl http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys\n```\n\nReturns an RSA public key (`kid`: `emulate-microsoft-1`) for verifying `id_token` signatures.\n\n### Authorization\n\n```bash\n# Browser flow: redirects to a user picker page\ncurl -v \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize?\\\nclient_id=example-client-id&\\\nredirect_uri=http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id&\\\nscope=openid+email+profile&\\\nresponse_type=code&\\\nstate=random-state&\\\nnonce=random-nonce\"\n```\n\nQuery parameters:\n\n| Param | Description |\n|-------|-------------|\n| `client_id` | OAuth client ID |\n| `redirect_uri` | Callback URL |\n| `scope` | Space-separated scopes (`openid email profile User.Read`) |\n| `state` | Opaque state for CSRF protection |\n| `nonce` | Nonce for ID token (optional) |\n| `response_mode` | `query` (default) or `form_post` |\n| `code_challenge` | PKCE challenge (optional) |\n| `code_challenge_method` | `plain` or `S256` (optional) |\n\n### Token Exchange\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Cauthorization_code>&\\\nclient_id=example-client-id&\\\nclient_secret=example-client-secret&\\\nredirect_uri=http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id&\\\ngrant_type=authorization_code\"\n```\n\nReturns:\n\n```json\n{\n  \"access_token\": \"microsoft_...\",\n  \"refresh_token\": \"r_microsoft_...\",\n  \"id_token\": \"\u003Cjwt>\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"openid email profile\"\n}\n```\n\nThe `id_token` is an RS256 JWT containing `sub`, `oid`, `tid` (tenant ID), `email`, `name`, `preferred_username`, `ver` (\"2.0\"), and optional `nonce`.\n\nFor PKCE, include `code_verifier` in the token request.\n\nSupports `Authorization: Basic` header with base64-encoded `client_id:client_secret` as an alternative to body parameters.\n\n### Client Credentials\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"client_id=example-client-id&\\\nclient_secret=example-client-secret&\\\ngrant_type=client_credentials&\\\nscope=https:\u002F\u002Fgraph.microsoft.com\u002F.default\"\n```\n\nReturns an `access_token` only (no `refresh_token` or `id_token`).\n\n### Refresh Token\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"refresh_token=r_microsoft_...&\\\nclient_id=example-client-id&\\\ngrant_type=refresh_token\"\n```\n\nReturns a new `access_token`, rotated `refresh_token`, and new `id_token`.\n\n### User Info\n\n```bash\ncurl http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo \\\n  -H \"Authorization: Bearer microsoft_...\"\n```\n\nReturns:\n\n```json\n{\n  \"sub\": \"\u003Coid>\",\n  \"email\": \"testuser@outlook.com\",\n  \"name\": \"Test User\",\n  \"given_name\": \"Test\",\n  \"family_name\": \"User\",\n  \"preferred_username\": \"testuser@outlook.com\"\n}\n```\n\n### Microsoft Graph \u002Fme\n\n```bash\ncurl http:\u002F\u002Flocalhost:4005\u002Fv1.0\u002Fme \\\n  -H \"Authorization: Bearer microsoft_...\"\n```\n\nReturns an OData-style response:\n\n```json\n{\n  \"@odata.context\": \"https:\u002F\u002Fgraph.microsoft.com\u002Fv1.0\u002F$metadata#users\u002F$entity\",\n  \"displayName\": \"Test User\",\n  \"mail\": \"testuser@outlook.com\",\n  \"userPrincipalName\": \"testuser@outlook.com\",\n  \"id\": \"\u003Coid>\"\n}\n```\n\n### Logout\n\n```bash\ncurl \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout?post_logout_redirect_uri=http:\u002F\u002Flocalhost:3000\"\n```\n\nRedirects to the `post_logout_redirect_uri` if provided and valid.\n\n### Token Revocation\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Frevoke \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"token=microsoft_...\"\n```\n\nReturns `200 OK`. The token is removed from the emulator's token map.\n\n## Common Patterns\n\n### Full Authorization Code Flow\n\n```bash\nMICROSOFT_URL=\"http:\u002F\u002Flocalhost:4005\"\nCLIENT_ID=\"example-client-id\"\nCLIENT_SECRET=\"example-client-secret\"\nREDIRECT_URI=\"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id\"\n\n# 1. Open in browser (user picks a seeded account)\n#    $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=openid+email+profile&response_type=code&state=abc\n\n# 2. After user selection, emulator redirects to:\n#    $REDIRECT_URI?code=\u003Ccode>&state=abc\n\n# 3. Exchange code for tokens\ncurl -X POST $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Ccode>&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&redirect_uri=$REDIRECT_URI&grant_type=authorization_code\"\n\n# 4. Fetch user info with the access_token\ncurl $MICROSOFT_URL\u002Foidc\u002Fuserinfo \\\n  -H \"Authorization: Bearer \u003Caccess_token>\"\n```\n\n### PKCE Flow\n\n```bash\nCODE_VERIFIER=$(openssl rand -base64 32 | tr -d '=+\u002F' | cut -c1-43)\nCODE_CHALLENGE=$(echo -n $CODE_VERIFIER | openssl dgst -sha256 -binary | base64 | tr -d '=' | tr '+\u002F' '-_')\n\n# 1. Authorize with challenge\n# $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?...&code_challenge=$CODE_CHALLENGE&code_challenge_method=S256\n\n# 2. Token exchange with verifier\ncurl -X POST $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Ccode>&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&redirect_uri=$REDIRECT_URI&grant_type=authorization_code&code_verifier=$CODE_VERIFIER\"\n```\n\n### OIDC Discovery-Based Setup\n\nLibraries that support OIDC discovery can auto-configure from the discovery document:\n\n```typescript\nimport { Issuer } from 'openid-client'\n\nconst microsoftIssuer = await Issuer.discover(\n  process.env.MICROSOFT_EMULATOR_URL ?? 'https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Fv2.0'\n)\n\nconst client = new microsoftIssuer.Client({\n  client_id: process.env.MICROSOFT_CLIENT_ID,\n  client_secret: process.env.MICROSOFT_CLIENT_SECRET,\n  redirect_uris: ['http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id'],\n})\n```\n",{"data":36,"body":38},{"name":4,"description":6,"allowed-tools":37},"Bash(npx emulate:*), Bash(emulate:*), Bash(curl:*)",{"type":39,"children":40},"root",[41,50,65,72,149,154,316,322,329,353,359,534,540,1013,1019,1433,1439,1724,1730,1959,1994,2000,2006,2061,2066,2602,2608,2627,2656,2662,2776,2781,2969,2975,3101,3106,3335,3403,3416,3437,3443,3550,3575,3581,3677,3702,3708,3751,3755,3989,3995,4037,4042,4240,4246,4273,4286,4292,4366,4379,4385,4391,4714,4720,5066,5072,5077,5382],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"microsoft-entra-id-emulator",[47],{"type":48,"value":49},"text","Microsoft Entra ID Emulator",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54,56,63],{"type":48,"value":55},"Microsoft Entra ID (Azure AD) v2.0 OAuth 2.0 and OpenID Connect emulation with authorization code flow, PKCE, client credentials, RS256 ID tokens, OIDC discovery, and a Microsoft Graph ",{"type":42,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":48,"value":62},"\u002Fv1.0\u002Fme",{"type":48,"value":64}," endpoint.",{"type":42,"tag":66,"props":67,"children":69},"h2",{"id":68},"start",[70],{"type":48,"value":71},"Start",{"type":42,"tag":73,"props":74,"children":79},"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Microsoft only\nnpx emulate --service microsoft\n\n# Default port (when run alone)\n# http:\u002F\u002Flocalhost:4000\n","bash","",[80],{"type":42,"tag":57,"props":81,"children":82},{"__ignoreMap":78},[83,95,121,131,140],{"type":42,"tag":84,"props":85,"children":88},"span",{"class":86,"line":87},"line",1,[89],{"type":42,"tag":84,"props":90,"children":92},{"style":91},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[93],{"type":48,"value":94},"# Microsoft only\n",{"type":42,"tag":84,"props":96,"children":98},{"class":86,"line":97},2,[99,105,111,116],{"type":42,"tag":84,"props":100,"children":102},{"style":101},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[103],{"type":48,"value":104},"npx",{"type":42,"tag":84,"props":106,"children":108},{"style":107},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[109],{"type":48,"value":110}," emulate",{"type":42,"tag":84,"props":112,"children":113},{"style":107},[114],{"type":48,"value":115}," --service",{"type":42,"tag":84,"props":117,"children":118},{"style":107},[119],{"type":48,"value":120}," microsoft\n",{"type":42,"tag":84,"props":122,"children":124},{"class":86,"line":123},3,[125],{"type":42,"tag":84,"props":126,"children":128},{"emptyLinePlaceholder":127},true,[129],{"type":48,"value":130},"\n",{"type":42,"tag":84,"props":132,"children":134},{"class":86,"line":133},4,[135],{"type":42,"tag":84,"props":136,"children":137},{"style":91},[138],{"type":48,"value":139},"# Default port (when run alone)\n",{"type":42,"tag":84,"props":141,"children":143},{"class":86,"line":142},5,[144],{"type":42,"tag":84,"props":145,"children":146},{"style":91},[147],{"type":48,"value":148},"# http:\u002F\u002Flocalhost:4000\n",{"type":42,"tag":51,"props":150,"children":151},{},[152],{"type":48,"value":153},"Or programmatically:",{"type":42,"tag":73,"props":155,"children":159},{"className":156,"code":157,"language":158,"meta":78,"style":78},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createEmulator } from 'emulate'\n\nconst microsoft = await createEmulator({ service: 'microsoft', port: 4005 })\n\u002F\u002F microsoft.url === 'http:\u002F\u002Flocalhost:4005'\n","typescript",[160],{"type":42,"tag":57,"props":161,"children":162},{"__ignoreMap":78},[163,209,216,308],{"type":42,"tag":84,"props":164,"children":165},{"class":86,"line":87},[166,172,178,184,189,194,199,204],{"type":42,"tag":84,"props":167,"children":169},{"style":168},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[170],{"type":48,"value":171},"import",{"type":42,"tag":84,"props":173,"children":175},{"style":174},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[176],{"type":48,"value":177}," {",{"type":42,"tag":84,"props":179,"children":181},{"style":180},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[182],{"type":48,"value":183}," createEmulator",{"type":42,"tag":84,"props":185,"children":186},{"style":174},[187],{"type":48,"value":188}," }",{"type":42,"tag":84,"props":190,"children":191},{"style":168},[192],{"type":48,"value":193}," from",{"type":42,"tag":84,"props":195,"children":196},{"style":174},[197],{"type":48,"value":198}," '",{"type":42,"tag":84,"props":200,"children":201},{"style":107},[202],{"type":48,"value":203},"emulate",{"type":42,"tag":84,"props":205,"children":206},{"style":174},[207],{"type":48,"value":208},"'\n",{"type":42,"tag":84,"props":210,"children":211},{"class":86,"line":97},[212],{"type":42,"tag":84,"props":213,"children":214},{"emptyLinePlaceholder":127},[215],{"type":48,"value":130},{"type":42,"tag":84,"props":217,"children":218},{"class":86,"line":123},[219,225,230,235,240,245,250,255,261,266,270,274,279,284,289,293,299,303],{"type":42,"tag":84,"props":220,"children":222},{"style":221},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[223],{"type":48,"value":224},"const",{"type":42,"tag":84,"props":226,"children":227},{"style":180},[228],{"type":48,"value":229}," microsoft ",{"type":42,"tag":84,"props":231,"children":232},{"style":174},[233],{"type":48,"value":234},"=",{"type":42,"tag":84,"props":236,"children":237},{"style":168},[238],{"type":48,"value":239}," await",{"type":42,"tag":84,"props":241,"children":243},{"style":242},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[244],{"type":48,"value":183},{"type":42,"tag":84,"props":246,"children":247},{"style":180},[248],{"type":48,"value":249},"(",{"type":42,"tag":84,"props":251,"children":252},{"style":174},[253],{"type":48,"value":254},"{",{"type":42,"tag":84,"props":256,"children":258},{"style":257},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[259],{"type":48,"value":260}," service",{"type":42,"tag":84,"props":262,"children":263},{"style":174},[264],{"type":48,"value":265},":",{"type":42,"tag":84,"props":267,"children":268},{"style":174},[269],{"type":48,"value":198},{"type":42,"tag":84,"props":271,"children":272},{"style":107},[273],{"type":48,"value":4},{"type":42,"tag":84,"props":275,"children":276},{"style":174},[277],{"type":48,"value":278},"'",{"type":42,"tag":84,"props":280,"children":281},{"style":174},[282],{"type":48,"value":283},",",{"type":42,"tag":84,"props":285,"children":286},{"style":257},[287],{"type":48,"value":288}," port",{"type":42,"tag":84,"props":290,"children":291},{"style":174},[292],{"type":48,"value":265},{"type":42,"tag":84,"props":294,"children":296},{"style":295},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[297],{"type":48,"value":298}," 4005",{"type":42,"tag":84,"props":300,"children":301},{"style":174},[302],{"type":48,"value":188},{"type":42,"tag":84,"props":304,"children":305},{"style":180},[306],{"type":48,"value":307},")\n",{"type":42,"tag":84,"props":309,"children":310},{"class":86,"line":133},[311],{"type":42,"tag":84,"props":312,"children":313},{"style":91},[314],{"type":48,"value":315},"\u002F\u002F microsoft.url === 'http:\u002F\u002Flocalhost:4005'\n",{"type":42,"tag":66,"props":317,"children":319},{"id":318},"pointing-your-app-at-the-emulator",[320],{"type":48,"value":321},"Pointing Your App at the Emulator",{"type":42,"tag":323,"props":324,"children":326},"h3",{"id":325},"environment-variable",[327],{"type":48,"value":328},"Environment Variable",{"type":42,"tag":73,"props":330,"children":332},{"className":75,"code":331,"language":77,"meta":78,"style":78},"MICROSOFT_EMULATOR_URL=http:\u002F\u002Flocalhost:4005\n",[333],{"type":42,"tag":57,"props":334,"children":335},{"__ignoreMap":78},[336],{"type":42,"tag":84,"props":337,"children":338},{"class":86,"line":87},[339,344,348],{"type":42,"tag":84,"props":340,"children":341},{"style":180},[342],{"type":48,"value":343},"MICROSOFT_EMULATOR_URL",{"type":42,"tag":84,"props":345,"children":346},{"style":174},[347],{"type":48,"value":234},{"type":42,"tag":84,"props":349,"children":350},{"style":107},[351],{"type":48,"value":352},"http:\u002F\u002Flocalhost:4005\n",{"type":42,"tag":323,"props":354,"children":356},{"id":355},"oauth-url-mapping",[357],{"type":48,"value":358},"OAuth URL Mapping",{"type":42,"tag":360,"props":361,"children":362},"table",{},[363,382],{"type":42,"tag":364,"props":365,"children":366},"thead",{},[367],{"type":42,"tag":368,"props":369,"children":370},"tr",{},[371,377],{"type":42,"tag":372,"props":373,"children":374},"th",{},[375],{"type":48,"value":376},"Real Microsoft URL",{"type":42,"tag":372,"props":378,"children":379},{},[380],{"type":48,"value":381},"Emulator URL",{"type":42,"tag":383,"props":384,"children":385},"tbody",{},[386,408,429,450,471,492,513],{"type":42,"tag":368,"props":387,"children":388},{},[389,399],{"type":42,"tag":390,"props":391,"children":392},"td",{},[393],{"type":42,"tag":57,"props":394,"children":396},{"className":395},[],[397],{"type":48,"value":398},"https:\u002F\u002Flogin.microsoftonline.com\u002F{tenant}\u002Fv2.0\u002F.well-known\u002Fopenid-configuration",{"type":42,"tag":390,"props":400,"children":401},{},[402],{"type":42,"tag":57,"props":403,"children":405},{"className":404},[],[406],{"type":48,"value":407},"$MICROSOFT_EMULATOR_URL\u002F{tenant}\u002Fv2.0\u002F.well-known\u002Fopenid-configuration",{"type":42,"tag":368,"props":409,"children":410},{},[411,420],{"type":42,"tag":390,"props":412,"children":413},{},[414],{"type":42,"tag":57,"props":415,"children":417},{"className":416},[],[418],{"type":48,"value":419},"https:\u002F\u002Flogin.microsoftonline.com\u002F.well-known\u002Fopenid-configuration",{"type":42,"tag":390,"props":421,"children":422},{},[423],{"type":42,"tag":57,"props":424,"children":426},{"className":425},[],[427],{"type":48,"value":428},"$MICROSOFT_EMULATOR_URL\u002F.well-known\u002Fopenid-configuration",{"type":42,"tag":368,"props":430,"children":431},{},[432,441],{"type":42,"tag":390,"props":433,"children":434},{},[435],{"type":42,"tag":57,"props":436,"children":438},{"className":437},[],[439],{"type":48,"value":440},"https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Foauth2\u002Fv2.0\u002Fauthorize",{"type":42,"tag":390,"props":442,"children":443},{},[444],{"type":42,"tag":57,"props":445,"children":447},{"className":446},[],[448],{"type":48,"value":449},"$MICROSOFT_EMULATOR_URL\u002Foauth2\u002Fv2.0\u002Fauthorize",{"type":42,"tag":368,"props":451,"children":452},{},[453,462],{"type":42,"tag":390,"props":454,"children":455},{},[456],{"type":42,"tag":57,"props":457,"children":459},{"className":458},[],[460],{"type":48,"value":461},"https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Foauth2\u002Fv2.0\u002Ftoken",{"type":42,"tag":390,"props":463,"children":464},{},[465],{"type":42,"tag":57,"props":466,"children":468},{"className":467},[],[469],{"type":48,"value":470},"$MICROSOFT_EMULATOR_URL\u002Foauth2\u002Fv2.0\u002Ftoken",{"type":42,"tag":368,"props":472,"children":473},{},[474,483],{"type":42,"tag":390,"props":475,"children":476},{},[477],{"type":42,"tag":57,"props":478,"children":480},{"className":479},[],[481],{"type":48,"value":482},"https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Fdiscovery\u002Fv2.0\u002Fkeys",{"type":42,"tag":390,"props":484,"children":485},{},[486],{"type":42,"tag":57,"props":487,"children":489},{"className":488},[],[490],{"type":48,"value":491},"$MICROSOFT_EMULATOR_URL\u002Fdiscovery\u002Fv2.0\u002Fkeys",{"type":42,"tag":368,"props":493,"children":494},{},[495,504],{"type":42,"tag":390,"props":496,"children":497},{},[498],{"type":42,"tag":57,"props":499,"children":501},{"className":500},[],[502],{"type":48,"value":503},"https:\u002F\u002Fgraph.microsoft.com\u002Foidc\u002Fuserinfo",{"type":42,"tag":390,"props":505,"children":506},{},[507],{"type":42,"tag":57,"props":508,"children":510},{"className":509},[],[511],{"type":48,"value":512},"$MICROSOFT_EMULATOR_URL\u002Foidc\u002Fuserinfo",{"type":42,"tag":368,"props":514,"children":515},{},[516,525],{"type":42,"tag":390,"props":517,"children":518},{},[519],{"type":42,"tag":57,"props":520,"children":522},{"className":521},[],[523],{"type":48,"value":524},"https:\u002F\u002Fgraph.microsoft.com\u002Fv1.0\u002Fme",{"type":42,"tag":390,"props":526,"children":527},{},[528],{"type":42,"tag":57,"props":529,"children":531},{"className":530},[],[532],{"type":48,"value":533},"$MICROSOFT_EMULATOR_URL\u002Fv1.0\u002Fme",{"type":42,"tag":323,"props":535,"children":537},{"id":536},"authjs-nextauthjs",[538],{"type":48,"value":539},"Auth.js \u002F NextAuth.js",{"type":42,"tag":73,"props":541,"children":543},{"className":156,"code":542,"language":158,"meta":78,"style":78},"import MicrosoftEntraId from '@auth\u002Fcore\u002Fproviders\u002Fmicrosoft-entra-id'\n\nMicrosoftEntraId({\n  clientId: process.env.MICROSOFT_CLIENT_ID,\n  clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n  authorization: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foauth2\u002Fv2.0\u002Fauthorize`,\n    params: { scope: 'openid email profile User.Read' },\n  },\n  token: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foauth2\u002Fv2.0\u002Ftoken`,\n  },\n  userinfo: {\n    url: `${process.env.MICROSOFT_EMULATOR_URL}\u002Foidc\u002Fuserinfo`,\n  },\n  issuer: process.env.MICROSOFT_EMULATOR_URL,\n})\n",[544],{"type":42,"tag":57,"props":545,"children":546},{"__ignoreMap":78},[547,577,584,601,642,679,697,755,799,808,825,878,886,903,956,964,1001],{"type":42,"tag":84,"props":548,"children":549},{"class":86,"line":87},[550,554,559,564,568,573],{"type":42,"tag":84,"props":551,"children":552},{"style":168},[553],{"type":48,"value":171},{"type":42,"tag":84,"props":555,"children":556},{"style":180},[557],{"type":48,"value":558}," MicrosoftEntraId ",{"type":42,"tag":84,"props":560,"children":561},{"style":168},[562],{"type":48,"value":563},"from",{"type":42,"tag":84,"props":565,"children":566},{"style":174},[567],{"type":48,"value":198},{"type":42,"tag":84,"props":569,"children":570},{"style":107},[571],{"type":48,"value":572},"@auth\u002Fcore\u002Fproviders\u002Fmicrosoft-entra-id",{"type":42,"tag":84,"props":574,"children":575},{"style":174},[576],{"type":48,"value":208},{"type":42,"tag":84,"props":578,"children":579},{"class":86,"line":97},[580],{"type":42,"tag":84,"props":581,"children":582},{"emptyLinePlaceholder":127},[583],{"type":48,"value":130},{"type":42,"tag":84,"props":585,"children":586},{"class":86,"line":123},[587,592,596],{"type":42,"tag":84,"props":588,"children":589},{"style":242},[590],{"type":48,"value":591},"MicrosoftEntraId",{"type":42,"tag":84,"props":593,"children":594},{"style":180},[595],{"type":48,"value":249},{"type":42,"tag":84,"props":597,"children":598},{"style":174},[599],{"type":48,"value":600},"{\n",{"type":42,"tag":84,"props":602,"children":603},{"class":86,"line":133},[604,609,613,618,623,628,632,637],{"type":42,"tag":84,"props":605,"children":606},{"style":257},[607],{"type":48,"value":608},"  clientId",{"type":42,"tag":84,"props":610,"children":611},{"style":174},[612],{"type":48,"value":265},{"type":42,"tag":84,"props":614,"children":615},{"style":180},[616],{"type":48,"value":617}," process",{"type":42,"tag":84,"props":619,"children":620},{"style":174},[621],{"type":48,"value":622},".",{"type":42,"tag":84,"props":624,"children":625},{"style":180},[626],{"type":48,"value":627},"env",{"type":42,"tag":84,"props":629,"children":630},{"style":174},[631],{"type":48,"value":622},{"type":42,"tag":84,"props":633,"children":634},{"style":180},[635],{"type":48,"value":636},"MICROSOFT_CLIENT_ID",{"type":42,"tag":84,"props":638,"children":639},{"style":174},[640],{"type":48,"value":641},",\n",{"type":42,"tag":84,"props":643,"children":644},{"class":86,"line":142},[645,650,654,658,662,666,670,675],{"type":42,"tag":84,"props":646,"children":647},{"style":257},[648],{"type":48,"value":649},"  clientSecret",{"type":42,"tag":84,"props":651,"children":652},{"style":174},[653],{"type":48,"value":265},{"type":42,"tag":84,"props":655,"children":656},{"style":180},[657],{"type":48,"value":617},{"type":42,"tag":84,"props":659,"children":660},{"style":174},[661],{"type":48,"value":622},{"type":42,"tag":84,"props":663,"children":664},{"style":180},[665],{"type":48,"value":627},{"type":42,"tag":84,"props":667,"children":668},{"style":174},[669],{"type":48,"value":622},{"type":42,"tag":84,"props":671,"children":672},{"style":180},[673],{"type":48,"value":674},"MICROSOFT_CLIENT_SECRET",{"type":42,"tag":84,"props":676,"children":677},{"style":174},[678],{"type":48,"value":641},{"type":42,"tag":84,"props":680,"children":682},{"class":86,"line":681},6,[683,688,692],{"type":42,"tag":84,"props":684,"children":685},{"style":257},[686],{"type":48,"value":687},"  authorization",{"type":42,"tag":84,"props":689,"children":690},{"style":174},[691],{"type":48,"value":265},{"type":42,"tag":84,"props":693,"children":694},{"style":174},[695],{"type":48,"value":696}," {\n",{"type":42,"tag":84,"props":698,"children":700},{"class":86,"line":699},7,[701,706,710,715,720,724,728,732,736,741,746,751],{"type":42,"tag":84,"props":702,"children":703},{"style":257},[704],{"type":48,"value":705},"    url",{"type":42,"tag":84,"props":707,"children":708},{"style":174},[709],{"type":48,"value":265},{"type":42,"tag":84,"props":711,"children":712},{"style":174},[713],{"type":48,"value":714}," `${",{"type":42,"tag":84,"props":716,"children":717},{"style":180},[718],{"type":48,"value":719},"process",{"type":42,"tag":84,"props":721,"children":722},{"style":174},[723],{"type":48,"value":622},{"type":42,"tag":84,"props":725,"children":726},{"style":180},[727],{"type":48,"value":627},{"type":42,"tag":84,"props":729,"children":730},{"style":174},[731],{"type":48,"value":622},{"type":42,"tag":84,"props":733,"children":734},{"style":180},[735],{"type":48,"value":343},{"type":42,"tag":84,"props":737,"children":738},{"style":174},[739],{"type":48,"value":740},"}",{"type":42,"tag":84,"props":742,"children":743},{"style":107},[744],{"type":48,"value":745},"\u002Foauth2\u002Fv2.0\u002Fauthorize",{"type":42,"tag":84,"props":747,"children":748},{"style":174},[749],{"type":48,"value":750},"`",{"type":42,"tag":84,"props":752,"children":753},{"style":174},[754],{"type":48,"value":641},{"type":42,"tag":84,"props":756,"children":758},{"class":86,"line":757},8,[759,764,768,772,777,781,785,790,794],{"type":42,"tag":84,"props":760,"children":761},{"style":257},[762],{"type":48,"value":763},"    params",{"type":42,"tag":84,"props":765,"children":766},{"style":174},[767],{"type":48,"value":265},{"type":42,"tag":84,"props":769,"children":770},{"style":174},[771],{"type":48,"value":177},{"type":42,"tag":84,"props":773,"children":774},{"style":257},[775],{"type":48,"value":776}," scope",{"type":42,"tag":84,"props":778,"children":779},{"style":174},[780],{"type":48,"value":265},{"type":42,"tag":84,"props":782,"children":783},{"style":174},[784],{"type":48,"value":198},{"type":42,"tag":84,"props":786,"children":787},{"style":107},[788],{"type":48,"value":789},"openid email profile User.Read",{"type":42,"tag":84,"props":791,"children":792},{"style":174},[793],{"type":48,"value":278},{"type":42,"tag":84,"props":795,"children":796},{"style":174},[797],{"type":48,"value":798}," },\n",{"type":42,"tag":84,"props":800,"children":802},{"class":86,"line":801},9,[803],{"type":42,"tag":84,"props":804,"children":805},{"style":174},[806],{"type":48,"value":807},"  },\n",{"type":42,"tag":84,"props":809,"children":811},{"class":86,"line":810},10,[812,817,821],{"type":42,"tag":84,"props":813,"children":814},{"style":257},[815],{"type":48,"value":816},"  token",{"type":42,"tag":84,"props":818,"children":819},{"style":174},[820],{"type":48,"value":265},{"type":42,"tag":84,"props":822,"children":823},{"style":174},[824],{"type":48,"value":696},{"type":42,"tag":84,"props":826,"children":828},{"class":86,"line":827},11,[829,833,837,841,845,849,853,857,861,865,870,874],{"type":42,"tag":84,"props":830,"children":831},{"style":257},[832],{"type":48,"value":705},{"type":42,"tag":84,"props":834,"children":835},{"style":174},[836],{"type":48,"value":265},{"type":42,"tag":84,"props":838,"children":839},{"style":174},[840],{"type":48,"value":714},{"type":42,"tag":84,"props":842,"children":843},{"style":180},[844],{"type":48,"value":719},{"type":42,"tag":84,"props":846,"children":847},{"style":174},[848],{"type":48,"value":622},{"type":42,"tag":84,"props":850,"children":851},{"style":180},[852],{"type":48,"value":627},{"type":42,"tag":84,"props":854,"children":855},{"style":174},[856],{"type":48,"value":622},{"type":42,"tag":84,"props":858,"children":859},{"style":180},[860],{"type":48,"value":343},{"type":42,"tag":84,"props":862,"children":863},{"style":174},[864],{"type":48,"value":740},{"type":42,"tag":84,"props":866,"children":867},{"style":107},[868],{"type":48,"value":869},"\u002Foauth2\u002Fv2.0\u002Ftoken",{"type":42,"tag":84,"props":871,"children":872},{"style":174},[873],{"type":48,"value":750},{"type":42,"tag":84,"props":875,"children":876},{"style":174},[877],{"type":48,"value":641},{"type":42,"tag":84,"props":879,"children":881},{"class":86,"line":880},12,[882],{"type":42,"tag":84,"props":883,"children":884},{"style":174},[885],{"type":48,"value":807},{"type":42,"tag":84,"props":887,"children":889},{"class":86,"line":888},13,[890,895,899],{"type":42,"tag":84,"props":891,"children":892},{"style":257},[893],{"type":48,"value":894},"  userinfo",{"type":42,"tag":84,"props":896,"children":897},{"style":174},[898],{"type":48,"value":265},{"type":42,"tag":84,"props":900,"children":901},{"style":174},[902],{"type":48,"value":696},{"type":42,"tag":84,"props":904,"children":906},{"class":86,"line":905},14,[907,911,915,919,923,927,931,935,939,943,948,952],{"type":42,"tag":84,"props":908,"children":909},{"style":257},[910],{"type":48,"value":705},{"type":42,"tag":84,"props":912,"children":913},{"style":174},[914],{"type":48,"value":265},{"type":42,"tag":84,"props":916,"children":917},{"style":174},[918],{"type":48,"value":714},{"type":42,"tag":84,"props":920,"children":921},{"style":180},[922],{"type":48,"value":719},{"type":42,"tag":84,"props":924,"children":925},{"style":174},[926],{"type":48,"value":622},{"type":42,"tag":84,"props":928,"children":929},{"style":180},[930],{"type":48,"value":627},{"type":42,"tag":84,"props":932,"children":933},{"style":174},[934],{"type":48,"value":622},{"type":42,"tag":84,"props":936,"children":937},{"style":180},[938],{"type":48,"value":343},{"type":42,"tag":84,"props":940,"children":941},{"style":174},[942],{"type":48,"value":740},{"type":42,"tag":84,"props":944,"children":945},{"style":107},[946],{"type":48,"value":947},"\u002Foidc\u002Fuserinfo",{"type":42,"tag":84,"props":949,"children":950},{"style":174},[951],{"type":48,"value":750},{"type":42,"tag":84,"props":953,"children":954},{"style":174},[955],{"type":48,"value":641},{"type":42,"tag":84,"props":957,"children":959},{"class":86,"line":958},15,[960],{"type":42,"tag":84,"props":961,"children":962},{"style":174},[963],{"type":48,"value":807},{"type":42,"tag":84,"props":965,"children":967},{"class":86,"line":966},16,[968,973,977,981,985,989,993,997],{"type":42,"tag":84,"props":969,"children":970},{"style":257},[971],{"type":48,"value":972},"  issuer",{"type":42,"tag":84,"props":974,"children":975},{"style":174},[976],{"type":48,"value":265},{"type":42,"tag":84,"props":978,"children":979},{"style":180},[980],{"type":48,"value":617},{"type":42,"tag":84,"props":982,"children":983},{"style":174},[984],{"type":48,"value":622},{"type":42,"tag":84,"props":986,"children":987},{"style":180},[988],{"type":48,"value":627},{"type":42,"tag":84,"props":990,"children":991},{"style":174},[992],{"type":48,"value":622},{"type":42,"tag":84,"props":994,"children":995},{"style":180},[996],{"type":48,"value":343},{"type":42,"tag":84,"props":998,"children":999},{"style":174},[1000],{"type":48,"value":641},{"type":42,"tag":84,"props":1002,"children":1004},{"class":86,"line":1003},17,[1005,1009],{"type":42,"tag":84,"props":1006,"children":1007},{"style":174},[1008],{"type":48,"value":740},{"type":42,"tag":84,"props":1010,"children":1011},{"style":180},[1012],{"type":48,"value":307},{"type":42,"tag":323,"props":1014,"children":1016},{"id":1015},"passportjs",[1017],{"type":48,"value":1018},"Passport.js",{"type":42,"tag":73,"props":1020,"children":1022},{"className":156,"code":1021,"language":158,"meta":78,"style":78},"import { OIDCStrategy } from 'passport-azure-ad'\n\nconst MICROSOFT_URL = process.env.MICROSOFT_EMULATOR_URL ?? 'https:\u002F\u002Flogin.microsoftonline.com'\n\nnew OIDCStrategy({\n  identityMetadata: `${MICROSOFT_URL}\u002F.well-known\u002Fopenid-configuration`,\n  clientID: process.env.MICROSOFT_CLIENT_ID,\n  clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n  redirectUrl: 'http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id',\n  responseType: 'code',\n  responseMode: 'query',\n  scope: ['openid', 'email', 'profile'],\n}, verifyCallback)\n",[1023],{"type":42,"tag":57,"props":1024,"children":1025},{"__ignoreMap":78},[1026,1063,1070,1125,1132,1152,1190,1226,1261,1290,1318,1347,1420],{"type":42,"tag":84,"props":1027,"children":1028},{"class":86,"line":87},[1029,1033,1037,1042,1046,1050,1054,1059],{"type":42,"tag":84,"props":1030,"children":1031},{"style":168},[1032],{"type":48,"value":171},{"type":42,"tag":84,"props":1034,"children":1035},{"style":174},[1036],{"type":48,"value":177},{"type":42,"tag":84,"props":1038,"children":1039},{"style":180},[1040],{"type":48,"value":1041}," OIDCStrategy",{"type":42,"tag":84,"props":1043,"children":1044},{"style":174},[1045],{"type":48,"value":188},{"type":42,"tag":84,"props":1047,"children":1048},{"style":168},[1049],{"type":48,"value":193},{"type":42,"tag":84,"props":1051,"children":1052},{"style":174},[1053],{"type":48,"value":198},{"type":42,"tag":84,"props":1055,"children":1056},{"style":107},[1057],{"type":48,"value":1058},"passport-azure-ad",{"type":42,"tag":84,"props":1060,"children":1061},{"style":174},[1062],{"type":48,"value":208},{"type":42,"tag":84,"props":1064,"children":1065},{"class":86,"line":97},[1066],{"type":42,"tag":84,"props":1067,"children":1068},{"emptyLinePlaceholder":127},[1069],{"type":48,"value":130},{"type":42,"tag":84,"props":1071,"children":1072},{"class":86,"line":123},[1073,1077,1082,1086,1090,1094,1098,1102,1107,1112,1116,1121],{"type":42,"tag":84,"props":1074,"children":1075},{"style":221},[1076],{"type":48,"value":224},{"type":42,"tag":84,"props":1078,"children":1079},{"style":180},[1080],{"type":48,"value":1081}," MICROSOFT_URL ",{"type":42,"tag":84,"props":1083,"children":1084},{"style":174},[1085],{"type":48,"value":234},{"type":42,"tag":84,"props":1087,"children":1088},{"style":180},[1089],{"type":48,"value":617},{"type":42,"tag":84,"props":1091,"children":1092},{"style":174},[1093],{"type":48,"value":622},{"type":42,"tag":84,"props":1095,"children":1096},{"style":180},[1097],{"type":48,"value":627},{"type":42,"tag":84,"props":1099,"children":1100},{"style":174},[1101],{"type":48,"value":622},{"type":42,"tag":84,"props":1103,"children":1104},{"style":180},[1105],{"type":48,"value":1106},"MICROSOFT_EMULATOR_URL ",{"type":42,"tag":84,"props":1108,"children":1109},{"style":174},[1110],{"type":48,"value":1111},"??",{"type":42,"tag":84,"props":1113,"children":1114},{"style":174},[1115],{"type":48,"value":198},{"type":42,"tag":84,"props":1117,"children":1118},{"style":107},[1119],{"type":48,"value":1120},"https:\u002F\u002Flogin.microsoftonline.com",{"type":42,"tag":84,"props":1122,"children":1123},{"style":174},[1124],{"type":48,"value":208},{"type":42,"tag":84,"props":1126,"children":1127},{"class":86,"line":133},[1128],{"type":42,"tag":84,"props":1129,"children":1130},{"emptyLinePlaceholder":127},[1131],{"type":48,"value":130},{"type":42,"tag":84,"props":1133,"children":1134},{"class":86,"line":142},[1135,1140,1144,1148],{"type":42,"tag":84,"props":1136,"children":1137},{"style":174},[1138],{"type":48,"value":1139},"new",{"type":42,"tag":84,"props":1141,"children":1142},{"style":242},[1143],{"type":48,"value":1041},{"type":42,"tag":84,"props":1145,"children":1146},{"style":180},[1147],{"type":48,"value":249},{"type":42,"tag":84,"props":1149,"children":1150},{"style":174},[1151],{"type":48,"value":600},{"type":42,"tag":84,"props":1153,"children":1154},{"class":86,"line":681},[1155,1160,1164,1168,1173,1177,1182,1186],{"type":42,"tag":84,"props":1156,"children":1157},{"style":257},[1158],{"type":48,"value":1159},"  identityMetadata",{"type":42,"tag":84,"props":1161,"children":1162},{"style":174},[1163],{"type":48,"value":265},{"type":42,"tag":84,"props":1165,"children":1166},{"style":174},[1167],{"type":48,"value":714},{"type":42,"tag":84,"props":1169,"children":1170},{"style":180},[1171],{"type":48,"value":1172},"MICROSOFT_URL",{"type":42,"tag":84,"props":1174,"children":1175},{"style":174},[1176],{"type":48,"value":740},{"type":42,"tag":84,"props":1178,"children":1179},{"style":107},[1180],{"type":48,"value":1181},"\u002F.well-known\u002Fopenid-configuration",{"type":42,"tag":84,"props":1183,"children":1184},{"style":174},[1185],{"type":48,"value":750},{"type":42,"tag":84,"props":1187,"children":1188},{"style":174},[1189],{"type":48,"value":641},{"type":42,"tag":84,"props":1191,"children":1192},{"class":86,"line":699},[1193,1198,1202,1206,1210,1214,1218,1222],{"type":42,"tag":84,"props":1194,"children":1195},{"style":257},[1196],{"type":48,"value":1197},"  clientID",{"type":42,"tag":84,"props":1199,"children":1200},{"style":174},[1201],{"type":48,"value":265},{"type":42,"tag":84,"props":1203,"children":1204},{"style":180},[1205],{"type":48,"value":617},{"type":42,"tag":84,"props":1207,"children":1208},{"style":174},[1209],{"type":48,"value":622},{"type":42,"tag":84,"props":1211,"children":1212},{"style":180},[1213],{"type":48,"value":627},{"type":42,"tag":84,"props":1215,"children":1216},{"style":174},[1217],{"type":48,"value":622},{"type":42,"tag":84,"props":1219,"children":1220},{"style":180},[1221],{"type":48,"value":636},{"type":42,"tag":84,"props":1223,"children":1224},{"style":174},[1225],{"type":48,"value":641},{"type":42,"tag":84,"props":1227,"children":1228},{"class":86,"line":757},[1229,1233,1237,1241,1245,1249,1253,1257],{"type":42,"tag":84,"props":1230,"children":1231},{"style":257},[1232],{"type":48,"value":649},{"type":42,"tag":84,"props":1234,"children":1235},{"style":174},[1236],{"type":48,"value":265},{"type":42,"tag":84,"props":1238,"children":1239},{"style":180},[1240],{"type":48,"value":617},{"type":42,"tag":84,"props":1242,"children":1243},{"style":174},[1244],{"type":48,"value":622},{"type":42,"tag":84,"props":1246,"children":1247},{"style":180},[1248],{"type":48,"value":627},{"type":42,"tag":84,"props":1250,"children":1251},{"style":174},[1252],{"type":48,"value":622},{"type":42,"tag":84,"props":1254,"children":1255},{"style":180},[1256],{"type":48,"value":674},{"type":42,"tag":84,"props":1258,"children":1259},{"style":174},[1260],{"type":48,"value":641},{"type":42,"tag":84,"props":1262,"children":1263},{"class":86,"line":801},[1264,1269,1273,1277,1282,1286],{"type":42,"tag":84,"props":1265,"children":1266},{"style":257},[1267],{"type":48,"value":1268},"  redirectUrl",{"type":42,"tag":84,"props":1270,"children":1271},{"style":174},[1272],{"type":48,"value":265},{"type":42,"tag":84,"props":1274,"children":1275},{"style":174},[1276],{"type":48,"value":198},{"type":42,"tag":84,"props":1278,"children":1279},{"style":107},[1280],{"type":48,"value":1281},"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id",{"type":42,"tag":84,"props":1283,"children":1284},{"style":174},[1285],{"type":48,"value":278},{"type":42,"tag":84,"props":1287,"children":1288},{"style":174},[1289],{"type":48,"value":641},{"type":42,"tag":84,"props":1291,"children":1292},{"class":86,"line":810},[1293,1298,1302,1306,1310,1314],{"type":42,"tag":84,"props":1294,"children":1295},{"style":257},[1296],{"type":48,"value":1297},"  responseType",{"type":42,"tag":84,"props":1299,"children":1300},{"style":174},[1301],{"type":48,"value":265},{"type":42,"tag":84,"props":1303,"children":1304},{"style":174},[1305],{"type":48,"value":198},{"type":42,"tag":84,"props":1307,"children":1308},{"style":107},[1309],{"type":48,"value":57},{"type":42,"tag":84,"props":1311,"children":1312},{"style":174},[1313],{"type":48,"value":278},{"type":42,"tag":84,"props":1315,"children":1316},{"style":174},[1317],{"type":48,"value":641},{"type":42,"tag":84,"props":1319,"children":1320},{"class":86,"line":827},[1321,1326,1330,1334,1339,1343],{"type":42,"tag":84,"props":1322,"children":1323},{"style":257},[1324],{"type":48,"value":1325},"  responseMode",{"type":42,"tag":84,"props":1327,"children":1328},{"style":174},[1329],{"type":48,"value":265},{"type":42,"tag":84,"props":1331,"children":1332},{"style":174},[1333],{"type":48,"value":198},{"type":42,"tag":84,"props":1335,"children":1336},{"style":107},[1337],{"type":48,"value":1338},"query",{"type":42,"tag":84,"props":1340,"children":1341},{"style":174},[1342],{"type":48,"value":278},{"type":42,"tag":84,"props":1344,"children":1345},{"style":174},[1346],{"type":48,"value":641},{"type":42,"tag":84,"props":1348,"children":1349},{"class":86,"line":880},[1350,1355,1359,1364,1368,1373,1377,1381,1385,1390,1394,1398,1402,1407,1411,1416],{"type":42,"tag":84,"props":1351,"children":1352},{"style":257},[1353],{"type":48,"value":1354},"  scope",{"type":42,"tag":84,"props":1356,"children":1357},{"style":174},[1358],{"type":48,"value":265},{"type":42,"tag":84,"props":1360,"children":1361},{"style":180},[1362],{"type":48,"value":1363}," [",{"type":42,"tag":84,"props":1365,"children":1366},{"style":174},[1367],{"type":48,"value":278},{"type":42,"tag":84,"props":1369,"children":1370},{"style":107},[1371],{"type":48,"value":1372},"openid",{"type":42,"tag":84,"props":1374,"children":1375},{"style":174},[1376],{"type":48,"value":278},{"type":42,"tag":84,"props":1378,"children":1379},{"style":174},[1380],{"type":48,"value":283},{"type":42,"tag":84,"props":1382,"children":1383},{"style":174},[1384],{"type":48,"value":198},{"type":42,"tag":84,"props":1386,"children":1387},{"style":107},[1388],{"type":48,"value":1389},"email",{"type":42,"tag":84,"props":1391,"children":1392},{"style":174},[1393],{"type":48,"value":278},{"type":42,"tag":84,"props":1395,"children":1396},{"style":174},[1397],{"type":48,"value":283},{"type":42,"tag":84,"props":1399,"children":1400},{"style":174},[1401],{"type":48,"value":198},{"type":42,"tag":84,"props":1403,"children":1404},{"style":107},[1405],{"type":48,"value":1406},"profile",{"type":42,"tag":84,"props":1408,"children":1409},{"style":174},[1410],{"type":48,"value":278},{"type":42,"tag":84,"props":1412,"children":1413},{"style":180},[1414],{"type":48,"value":1415},"]",{"type":42,"tag":84,"props":1417,"children":1418},{"style":174},[1419],{"type":48,"value":641},{"type":42,"tag":84,"props":1421,"children":1422},{"class":86,"line":888},[1423,1428],{"type":42,"tag":84,"props":1424,"children":1425},{"style":174},[1426],{"type":48,"value":1427},"},",{"type":42,"tag":84,"props":1429,"children":1430},{"style":180},[1431],{"type":48,"value":1432}," verifyCallback)\n",{"type":42,"tag":323,"props":1434,"children":1436},{"id":1435},"msaljs",[1437],{"type":48,"value":1438},"MSAL.js",{"type":42,"tag":73,"props":1440,"children":1442},{"className":156,"code":1441,"language":158,"meta":78,"style":78},"import { ConfidentialClientApplication } from '@azure\u002Fmsal-node'\n\nconst msalConfig = {\n  auth: {\n    clientId: process.env.MICROSOFT_CLIENT_ID,\n    clientSecret: process.env.MICROSOFT_CLIENT_SECRET,\n    authority: process.env.MICROSOFT_EMULATOR_URL,\n    knownAuthorities: [process.env.MICROSOFT_EMULATOR_URL],\n  },\n}\n\nconst cca = new ConfidentialClientApplication(msalConfig)\n",[1443],{"type":42,"tag":57,"props":1444,"children":1445},{"__ignoreMap":78},[1446,1483,1490,1510,1526,1562,1598,1634,1672,1679,1687,1694],{"type":42,"tag":84,"props":1447,"children":1448},{"class":86,"line":87},[1449,1453,1457,1462,1466,1470,1474,1479],{"type":42,"tag":84,"props":1450,"children":1451},{"style":168},[1452],{"type":48,"value":171},{"type":42,"tag":84,"props":1454,"children":1455},{"style":174},[1456],{"type":48,"value":177},{"type":42,"tag":84,"props":1458,"children":1459},{"style":180},[1460],{"type":48,"value":1461}," ConfidentialClientApplication",{"type":42,"tag":84,"props":1463,"children":1464},{"style":174},[1465],{"type":48,"value":188},{"type":42,"tag":84,"props":1467,"children":1468},{"style":168},[1469],{"type":48,"value":193},{"type":42,"tag":84,"props":1471,"children":1472},{"style":174},[1473],{"type":48,"value":198},{"type":42,"tag":84,"props":1475,"children":1476},{"style":107},[1477],{"type":48,"value":1478},"@azure\u002Fmsal-node",{"type":42,"tag":84,"props":1480,"children":1481},{"style":174},[1482],{"type":48,"value":208},{"type":42,"tag":84,"props":1484,"children":1485},{"class":86,"line":97},[1486],{"type":42,"tag":84,"props":1487,"children":1488},{"emptyLinePlaceholder":127},[1489],{"type":48,"value":130},{"type":42,"tag":84,"props":1491,"children":1492},{"class":86,"line":123},[1493,1497,1502,1506],{"type":42,"tag":84,"props":1494,"children":1495},{"style":221},[1496],{"type":48,"value":224},{"type":42,"tag":84,"props":1498,"children":1499},{"style":180},[1500],{"type":48,"value":1501}," msalConfig ",{"type":42,"tag":84,"props":1503,"children":1504},{"style":174},[1505],{"type":48,"value":234},{"type":42,"tag":84,"props":1507,"children":1508},{"style":174},[1509],{"type":48,"value":696},{"type":42,"tag":84,"props":1511,"children":1512},{"class":86,"line":133},[1513,1518,1522],{"type":42,"tag":84,"props":1514,"children":1515},{"style":257},[1516],{"type":48,"value":1517},"  auth",{"type":42,"tag":84,"props":1519,"children":1520},{"style":174},[1521],{"type":48,"value":265},{"type":42,"tag":84,"props":1523,"children":1524},{"style":174},[1525],{"type":48,"value":696},{"type":42,"tag":84,"props":1527,"children":1528},{"class":86,"line":142},[1529,1534,1538,1542,1546,1550,1554,1558],{"type":42,"tag":84,"props":1530,"children":1531},{"style":257},[1532],{"type":48,"value":1533},"    clientId",{"type":42,"tag":84,"props":1535,"children":1536},{"style":174},[1537],{"type":48,"value":265},{"type":42,"tag":84,"props":1539,"children":1540},{"style":180},[1541],{"type":48,"value":617},{"type":42,"tag":84,"props":1543,"children":1544},{"style":174},[1545],{"type":48,"value":622},{"type":42,"tag":84,"props":1547,"children":1548},{"style":180},[1549],{"type":48,"value":627},{"type":42,"tag":84,"props":1551,"children":1552},{"style":174},[1553],{"type":48,"value":622},{"type":42,"tag":84,"props":1555,"children":1556},{"style":180},[1557],{"type":48,"value":636},{"type":42,"tag":84,"props":1559,"children":1560},{"style":174},[1561],{"type":48,"value":641},{"type":42,"tag":84,"props":1563,"children":1564},{"class":86,"line":681},[1565,1570,1574,1578,1582,1586,1590,1594],{"type":42,"tag":84,"props":1566,"children":1567},{"style":257},[1568],{"type":48,"value":1569},"    clientSecret",{"type":42,"tag":84,"props":1571,"children":1572},{"style":174},[1573],{"type":48,"value":265},{"type":42,"tag":84,"props":1575,"children":1576},{"style":180},[1577],{"type":48,"value":617},{"type":42,"tag":84,"props":1579,"children":1580},{"style":174},[1581],{"type":48,"value":622},{"type":42,"tag":84,"props":1583,"children":1584},{"style":180},[1585],{"type":48,"value":627},{"type":42,"tag":84,"props":1587,"children":1588},{"style":174},[1589],{"type":48,"value":622},{"type":42,"tag":84,"props":1591,"children":1592},{"style":180},[1593],{"type":48,"value":674},{"type":42,"tag":84,"props":1595,"children":1596},{"style":174},[1597],{"type":48,"value":641},{"type":42,"tag":84,"props":1599,"children":1600},{"class":86,"line":699},[1601,1606,1610,1614,1618,1622,1626,1630],{"type":42,"tag":84,"props":1602,"children":1603},{"style":257},[1604],{"type":48,"value":1605},"    authority",{"type":42,"tag":84,"props":1607,"children":1608},{"style":174},[1609],{"type":48,"value":265},{"type":42,"tag":84,"props":1611,"children":1612},{"style":180},[1613],{"type":48,"value":617},{"type":42,"tag":84,"props":1615,"children":1616},{"style":174},[1617],{"type":48,"value":622},{"type":42,"tag":84,"props":1619,"children":1620},{"style":180},[1621],{"type":48,"value":627},{"type":42,"tag":84,"props":1623,"children":1624},{"style":174},[1625],{"type":48,"value":622},{"type":42,"tag":84,"props":1627,"children":1628},{"style":180},[1629],{"type":48,"value":343},{"type":42,"tag":84,"props":1631,"children":1632},{"style":174},[1633],{"type":48,"value":641},{"type":42,"tag":84,"props":1635,"children":1636},{"class":86,"line":757},[1637,1642,1646,1651,1655,1659,1663,1668],{"type":42,"tag":84,"props":1638,"children":1639},{"style":257},[1640],{"type":48,"value":1641},"    knownAuthorities",{"type":42,"tag":84,"props":1643,"children":1644},{"style":174},[1645],{"type":48,"value":265},{"type":42,"tag":84,"props":1647,"children":1648},{"style":180},[1649],{"type":48,"value":1650}," [process",{"type":42,"tag":84,"props":1652,"children":1653},{"style":174},[1654],{"type":48,"value":622},{"type":42,"tag":84,"props":1656,"children":1657},{"style":180},[1658],{"type":48,"value":627},{"type":42,"tag":84,"props":1660,"children":1661},{"style":174},[1662],{"type":48,"value":622},{"type":42,"tag":84,"props":1664,"children":1665},{"style":180},[1666],{"type":48,"value":1667},"MICROSOFT_EMULATOR_URL]",{"type":42,"tag":84,"props":1669,"children":1670},{"style":174},[1671],{"type":48,"value":641},{"type":42,"tag":84,"props":1673,"children":1674},{"class":86,"line":801},[1675],{"type":42,"tag":84,"props":1676,"children":1677},{"style":174},[1678],{"type":48,"value":807},{"type":42,"tag":84,"props":1680,"children":1681},{"class":86,"line":810},[1682],{"type":42,"tag":84,"props":1683,"children":1684},{"style":174},[1685],{"type":48,"value":1686},"}\n",{"type":42,"tag":84,"props":1688,"children":1689},{"class":86,"line":827},[1690],{"type":42,"tag":84,"props":1691,"children":1692},{"emptyLinePlaceholder":127},[1693],{"type":48,"value":130},{"type":42,"tag":84,"props":1695,"children":1696},{"class":86,"line":880},[1697,1701,1706,1710,1715,1719],{"type":42,"tag":84,"props":1698,"children":1699},{"style":221},[1700],{"type":48,"value":224},{"type":42,"tag":84,"props":1702,"children":1703},{"style":180},[1704],{"type":48,"value":1705}," cca ",{"type":42,"tag":84,"props":1707,"children":1708},{"style":174},[1709],{"type":48,"value":234},{"type":42,"tag":84,"props":1711,"children":1712},{"style":174},[1713],{"type":48,"value":1714}," new",{"type":42,"tag":84,"props":1716,"children":1717},{"style":242},[1718],{"type":48,"value":1461},{"type":42,"tag":84,"props":1720,"children":1721},{"style":180},[1722],{"type":48,"value":1723},"(msalConfig)\n",{"type":42,"tag":66,"props":1725,"children":1727},{"id":1726},"seed-config",[1728],{"type":48,"value":1729},"Seed Config",{"type":42,"tag":73,"props":1731,"children":1735},{"className":1732,"code":1733,"language":1734,"meta":78,"style":78},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","microsoft:\n  users:\n    - email: testuser@outlook.com\n      name: Test User\n      given_name: Test\n      family_name: User\n      tenant_id: 9188040d-6c67-4c5b-b112-36a304b66dad\n  oauth_clients:\n    - client_id: example-client-id\n      client_secret: example-client-secret\n      name: My Microsoft App\n      redirect_uris:\n        - http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id\n      tenant_id: 9188040d-6c67-4c5b-b112-36a304b66dad\n","yaml",[1736],{"type":42,"tag":57,"props":1737,"children":1738},{"__ignoreMap":78},[1739,1751,1763,1785,1802,1819,1836,1853,1865,1886,1903,1919,1931,1944],{"type":42,"tag":84,"props":1740,"children":1741},{"class":86,"line":87},[1742,1746],{"type":42,"tag":84,"props":1743,"children":1744},{"style":257},[1745],{"type":48,"value":4},{"type":42,"tag":84,"props":1747,"children":1748},{"style":174},[1749],{"type":48,"value":1750},":\n",{"type":42,"tag":84,"props":1752,"children":1753},{"class":86,"line":97},[1754,1759],{"type":42,"tag":84,"props":1755,"children":1756},{"style":257},[1757],{"type":48,"value":1758},"  users",{"type":42,"tag":84,"props":1760,"children":1761},{"style":174},[1762],{"type":48,"value":1750},{"type":42,"tag":84,"props":1764,"children":1765},{"class":86,"line":123},[1766,1771,1776,1780],{"type":42,"tag":84,"props":1767,"children":1768},{"style":174},[1769],{"type":48,"value":1770},"    -",{"type":42,"tag":84,"props":1772,"children":1773},{"style":257},[1774],{"type":48,"value":1775}," email",{"type":42,"tag":84,"props":1777,"children":1778},{"style":174},[1779],{"type":48,"value":265},{"type":42,"tag":84,"props":1781,"children":1782},{"style":107},[1783],{"type":48,"value":1784}," testuser@outlook.com\n",{"type":42,"tag":84,"props":1786,"children":1787},{"class":86,"line":133},[1788,1793,1797],{"type":42,"tag":84,"props":1789,"children":1790},{"style":257},[1791],{"type":48,"value":1792},"      name",{"type":42,"tag":84,"props":1794,"children":1795},{"style":174},[1796],{"type":48,"value":265},{"type":42,"tag":84,"props":1798,"children":1799},{"style":107},[1800],{"type":48,"value":1801}," Test User\n",{"type":42,"tag":84,"props":1803,"children":1804},{"class":86,"line":142},[1805,1810,1814],{"type":42,"tag":84,"props":1806,"children":1807},{"style":257},[1808],{"type":48,"value":1809},"      given_name",{"type":42,"tag":84,"props":1811,"children":1812},{"style":174},[1813],{"type":48,"value":265},{"type":42,"tag":84,"props":1815,"children":1816},{"style":107},[1817],{"type":48,"value":1818}," Test\n",{"type":42,"tag":84,"props":1820,"children":1821},{"class":86,"line":681},[1822,1827,1831],{"type":42,"tag":84,"props":1823,"children":1824},{"style":257},[1825],{"type":48,"value":1826},"      family_name",{"type":42,"tag":84,"props":1828,"children":1829},{"style":174},[1830],{"type":48,"value":265},{"type":42,"tag":84,"props":1832,"children":1833},{"style":107},[1834],{"type":48,"value":1835}," User\n",{"type":42,"tag":84,"props":1837,"children":1838},{"class":86,"line":699},[1839,1844,1848],{"type":42,"tag":84,"props":1840,"children":1841},{"style":257},[1842],{"type":48,"value":1843},"      tenant_id",{"type":42,"tag":84,"props":1845,"children":1846},{"style":174},[1847],{"type":48,"value":265},{"type":42,"tag":84,"props":1849,"children":1850},{"style":107},[1851],{"type":48,"value":1852}," 9188040d-6c67-4c5b-b112-36a304b66dad\n",{"type":42,"tag":84,"props":1854,"children":1855},{"class":86,"line":757},[1856,1861],{"type":42,"tag":84,"props":1857,"children":1858},{"style":257},[1859],{"type":48,"value":1860},"  oauth_clients",{"type":42,"tag":84,"props":1862,"children":1863},{"style":174},[1864],{"type":48,"value":1750},{"type":42,"tag":84,"props":1866,"children":1867},{"class":86,"line":801},[1868,1872,1877,1881],{"type":42,"tag":84,"props":1869,"children":1870},{"style":174},[1871],{"type":48,"value":1770},{"type":42,"tag":84,"props":1873,"children":1874},{"style":257},[1875],{"type":48,"value":1876}," client_id",{"type":42,"tag":84,"props":1878,"children":1879},{"style":174},[1880],{"type":48,"value":265},{"type":42,"tag":84,"props":1882,"children":1883},{"style":107},[1884],{"type":48,"value":1885}," example-client-id\n",{"type":42,"tag":84,"props":1887,"children":1888},{"class":86,"line":810},[1889,1894,1898],{"type":42,"tag":84,"props":1890,"children":1891},{"style":257},[1892],{"type":48,"value":1893},"      client_secret",{"type":42,"tag":84,"props":1895,"children":1896},{"style":174},[1897],{"type":48,"value":265},{"type":42,"tag":84,"props":1899,"children":1900},{"style":107},[1901],{"type":48,"value":1902}," example-client-secret\n",{"type":42,"tag":84,"props":1904,"children":1905},{"class":86,"line":827},[1906,1910,1914],{"type":42,"tag":84,"props":1907,"children":1908},{"style":257},[1909],{"type":48,"value":1792},{"type":42,"tag":84,"props":1911,"children":1912},{"style":174},[1913],{"type":48,"value":265},{"type":42,"tag":84,"props":1915,"children":1916},{"style":107},[1917],{"type":48,"value":1918}," My Microsoft App\n",{"type":42,"tag":84,"props":1920,"children":1921},{"class":86,"line":880},[1922,1927],{"type":42,"tag":84,"props":1923,"children":1924},{"style":257},[1925],{"type":48,"value":1926},"      redirect_uris",{"type":42,"tag":84,"props":1928,"children":1929},{"style":174},[1930],{"type":48,"value":1750},{"type":42,"tag":84,"props":1932,"children":1933},{"class":86,"line":888},[1934,1939],{"type":42,"tag":84,"props":1935,"children":1936},{"style":174},[1937],{"type":48,"value":1938},"        -",{"type":42,"tag":84,"props":1940,"children":1941},{"style":107},[1942],{"type":48,"value":1943}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id\n",{"type":42,"tag":84,"props":1945,"children":1946},{"class":86,"line":905},[1947,1951,1955],{"type":42,"tag":84,"props":1948,"children":1949},{"style":257},[1950],{"type":48,"value":1843},{"type":42,"tag":84,"props":1952,"children":1953},{"style":174},[1954],{"type":48,"value":265},{"type":42,"tag":84,"props":1956,"children":1957},{"style":107},[1958],{"type":48,"value":1852},{"type":42,"tag":51,"props":1960,"children":1961},{},[1962,1964,1970,1972,1977,1979,1985,1987,1993],{"type":48,"value":1963},"When no OAuth clients are configured, the emulator accepts any ",{"type":42,"tag":57,"props":1965,"children":1967},{"className":1966},[],[1968],{"type":48,"value":1969},"client_id",{"type":48,"value":1971},". With clients configured, strict validation is enforced for ",{"type":42,"tag":57,"props":1973,"children":1975},{"className":1974},[],[1976],{"type":48,"value":1969},{"type":48,"value":1978},", ",{"type":42,"tag":57,"props":1980,"children":1982},{"className":1981},[],[1983],{"type":48,"value":1984},"client_secret",{"type":48,"value":1986},", and ",{"type":42,"tag":57,"props":1988,"children":1990},{"className":1989},[],[1991],{"type":48,"value":1992},"redirect_uri",{"type":48,"value":622},{"type":42,"tag":66,"props":1995,"children":1997},{"id":1996},"api-endpoints",[1998],{"type":48,"value":1999},"API Endpoints",{"type":42,"tag":323,"props":2001,"children":2003},{"id":2002},"oidc-discovery",[2004],{"type":48,"value":2005},"OIDC Discovery",{"type":42,"tag":73,"props":2007,"children":2009},{"className":75,"code":2008,"language":77,"meta":78,"style":78},"# Default tenant\ncurl http:\u002F\u002Flocalhost:4005\u002F.well-known\u002Fopenid-configuration\n\n# Tenant-scoped (common, organizations, consumers, or specific tenant ID)\ncurl http:\u002F\u002Flocalhost:4005\u002Fcommon\u002Fv2.0\u002F.well-known\u002Fopenid-configuration\n",[2010],{"type":42,"tag":57,"props":2011,"children":2012},{"__ignoreMap":78},[2013,2021,2034,2041,2049],{"type":42,"tag":84,"props":2014,"children":2015},{"class":86,"line":87},[2016],{"type":42,"tag":84,"props":2017,"children":2018},{"style":91},[2019],{"type":48,"value":2020},"# Default tenant\n",{"type":42,"tag":84,"props":2022,"children":2023},{"class":86,"line":97},[2024,2029],{"type":42,"tag":84,"props":2025,"children":2026},{"style":101},[2027],{"type":48,"value":2028},"curl",{"type":42,"tag":84,"props":2030,"children":2031},{"style":107},[2032],{"type":48,"value":2033}," http:\u002F\u002Flocalhost:4005\u002F.well-known\u002Fopenid-configuration\n",{"type":42,"tag":84,"props":2035,"children":2036},{"class":86,"line":123},[2037],{"type":42,"tag":84,"props":2038,"children":2039},{"emptyLinePlaceholder":127},[2040],{"type":48,"value":130},{"type":42,"tag":84,"props":2042,"children":2043},{"class":86,"line":133},[2044],{"type":42,"tag":84,"props":2045,"children":2046},{"style":91},[2047],{"type":48,"value":2048},"# Tenant-scoped (common, organizations, consumers, or specific tenant ID)\n",{"type":42,"tag":84,"props":2050,"children":2051},{"class":86,"line":142},[2052,2056],{"type":42,"tag":84,"props":2053,"children":2054},{"style":101},[2055],{"type":48,"value":2028},{"type":42,"tag":84,"props":2057,"children":2058},{"style":107},[2059],{"type":48,"value":2060}," http:\u002F\u002Flocalhost:4005\u002Fcommon\u002Fv2.0\u002F.well-known\u002Fopenid-configuration\n",{"type":42,"tag":51,"props":2062,"children":2063},{},[2064],{"type":48,"value":2065},"Returns the standard OIDC discovery document:",{"type":42,"tag":73,"props":2067,"children":2071},{"className":2068,"code":2069,"language":2070,"meta":78,"style":78},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"issuer\": \"http:\u002F\u002Flocalhost:4005\u002F{tenant}\u002Fv2.0\",\n  \"authorization_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize\",\n  \"token_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken\",\n  \"userinfo_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo\",\n  \"end_session_endpoint\": \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout\",\n  \"jwks_uri\": \"http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys\",\n  \"response_types_supported\": [\"code\"],\n  \"subject_types_supported\": [\"pairwise\"],\n  \"id_token_signing_alg_values_supported\": [\"RS256\"],\n  \"scopes_supported\": [\"openid\", \"email\", \"profile\", \"User.Read\", \"offline_access\"],\n  \"token_endpoint_auth_methods_supported\": [\"client_secret_post\", \"client_secret_basic\"]\n}\n","json",[2072],{"type":42,"tag":57,"props":2073,"children":2074},{"__ignoreMap":78},[2075,2082,2122,2159,2196,2233,2270,2307,2348,2389,2430,2536,2595],{"type":42,"tag":84,"props":2076,"children":2077},{"class":86,"line":87},[2078],{"type":42,"tag":84,"props":2079,"children":2080},{"style":174},[2081],{"type":48,"value":600},{"type":42,"tag":84,"props":2083,"children":2084},{"class":86,"line":97},[2085,2090,2095,2100,2104,2109,2114,2118],{"type":42,"tag":84,"props":2086,"children":2087},{"style":174},[2088],{"type":48,"value":2089},"  \"",{"type":42,"tag":84,"props":2091,"children":2092},{"style":221},[2093],{"type":48,"value":2094},"issuer",{"type":42,"tag":84,"props":2096,"children":2097},{"style":174},[2098],{"type":48,"value":2099},"\"",{"type":42,"tag":84,"props":2101,"children":2102},{"style":174},[2103],{"type":48,"value":265},{"type":42,"tag":84,"props":2105,"children":2106},{"style":174},[2107],{"type":48,"value":2108}," \"",{"type":42,"tag":84,"props":2110,"children":2111},{"style":107},[2112],{"type":48,"value":2113},"http:\u002F\u002Flocalhost:4005\u002F{tenant}\u002Fv2.0",{"type":42,"tag":84,"props":2115,"children":2116},{"style":174},[2117],{"type":48,"value":2099},{"type":42,"tag":84,"props":2119,"children":2120},{"style":174},[2121],{"type":48,"value":641},{"type":42,"tag":84,"props":2123,"children":2124},{"class":86,"line":123},[2125,2129,2134,2138,2142,2146,2151,2155],{"type":42,"tag":84,"props":2126,"children":2127},{"style":174},[2128],{"type":48,"value":2089},{"type":42,"tag":84,"props":2130,"children":2131},{"style":221},[2132],{"type":48,"value":2133},"authorization_endpoint",{"type":42,"tag":84,"props":2135,"children":2136},{"style":174},[2137],{"type":48,"value":2099},{"type":42,"tag":84,"props":2139,"children":2140},{"style":174},[2141],{"type":48,"value":265},{"type":42,"tag":84,"props":2143,"children":2144},{"style":174},[2145],{"type":48,"value":2108},{"type":42,"tag":84,"props":2147,"children":2148},{"style":107},[2149],{"type":48,"value":2150},"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize",{"type":42,"tag":84,"props":2152,"children":2153},{"style":174},[2154],{"type":48,"value":2099},{"type":42,"tag":84,"props":2156,"children":2157},{"style":174},[2158],{"type":48,"value":641},{"type":42,"tag":84,"props":2160,"children":2161},{"class":86,"line":133},[2162,2166,2171,2175,2179,2183,2188,2192],{"type":42,"tag":84,"props":2163,"children":2164},{"style":174},[2165],{"type":48,"value":2089},{"type":42,"tag":84,"props":2167,"children":2168},{"style":221},[2169],{"type":48,"value":2170},"token_endpoint",{"type":42,"tag":84,"props":2172,"children":2173},{"style":174},[2174],{"type":48,"value":2099},{"type":42,"tag":84,"props":2176,"children":2177},{"style":174},[2178],{"type":48,"value":265},{"type":42,"tag":84,"props":2180,"children":2181},{"style":174},[2182],{"type":48,"value":2108},{"type":42,"tag":84,"props":2184,"children":2185},{"style":107},[2186],{"type":48,"value":2187},"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken",{"type":42,"tag":84,"props":2189,"children":2190},{"style":174},[2191],{"type":48,"value":2099},{"type":42,"tag":84,"props":2193,"children":2194},{"style":174},[2195],{"type":48,"value":641},{"type":42,"tag":84,"props":2197,"children":2198},{"class":86,"line":142},[2199,2203,2208,2212,2216,2220,2225,2229],{"type":42,"tag":84,"props":2200,"children":2201},{"style":174},[2202],{"type":48,"value":2089},{"type":42,"tag":84,"props":2204,"children":2205},{"style":221},[2206],{"type":48,"value":2207},"userinfo_endpoint",{"type":42,"tag":84,"props":2209,"children":2210},{"style":174},[2211],{"type":48,"value":2099},{"type":42,"tag":84,"props":2213,"children":2214},{"style":174},[2215],{"type":48,"value":265},{"type":42,"tag":84,"props":2217,"children":2218},{"style":174},[2219],{"type":48,"value":2108},{"type":42,"tag":84,"props":2221,"children":2222},{"style":107},[2223],{"type":48,"value":2224},"http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo",{"type":42,"tag":84,"props":2226,"children":2227},{"style":174},[2228],{"type":48,"value":2099},{"type":42,"tag":84,"props":2230,"children":2231},{"style":174},[2232],{"type":48,"value":641},{"type":42,"tag":84,"props":2234,"children":2235},{"class":86,"line":681},[2236,2240,2245,2249,2253,2257,2262,2266],{"type":42,"tag":84,"props":2237,"children":2238},{"style":174},[2239],{"type":48,"value":2089},{"type":42,"tag":84,"props":2241,"children":2242},{"style":221},[2243],{"type":48,"value":2244},"end_session_endpoint",{"type":42,"tag":84,"props":2246,"children":2247},{"style":174},[2248],{"type":48,"value":2099},{"type":42,"tag":84,"props":2250,"children":2251},{"style":174},[2252],{"type":48,"value":265},{"type":42,"tag":84,"props":2254,"children":2255},{"style":174},[2256],{"type":48,"value":2108},{"type":42,"tag":84,"props":2258,"children":2259},{"style":107},[2260],{"type":48,"value":2261},"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout",{"type":42,"tag":84,"props":2263,"children":2264},{"style":174},[2265],{"type":48,"value":2099},{"type":42,"tag":84,"props":2267,"children":2268},{"style":174},[2269],{"type":48,"value":641},{"type":42,"tag":84,"props":2271,"children":2272},{"class":86,"line":699},[2273,2277,2282,2286,2290,2294,2299,2303],{"type":42,"tag":84,"props":2274,"children":2275},{"style":174},[2276],{"type":48,"value":2089},{"type":42,"tag":84,"props":2278,"children":2279},{"style":221},[2280],{"type":48,"value":2281},"jwks_uri",{"type":42,"tag":84,"props":2283,"children":2284},{"style":174},[2285],{"type":48,"value":2099},{"type":42,"tag":84,"props":2287,"children":2288},{"style":174},[2289],{"type":48,"value":265},{"type":42,"tag":84,"props":2291,"children":2292},{"style":174},[2293],{"type":48,"value":2108},{"type":42,"tag":84,"props":2295,"children":2296},{"style":107},[2297],{"type":48,"value":2298},"http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys",{"type":42,"tag":84,"props":2300,"children":2301},{"style":174},[2302],{"type":48,"value":2099},{"type":42,"tag":84,"props":2304,"children":2305},{"style":174},[2306],{"type":48,"value":641},{"type":42,"tag":84,"props":2308,"children":2309},{"class":86,"line":757},[2310,2314,2319,2323,2327,2331,2335,2339,2343],{"type":42,"tag":84,"props":2311,"children":2312},{"style":174},[2313],{"type":48,"value":2089},{"type":42,"tag":84,"props":2315,"children":2316},{"style":221},[2317],{"type":48,"value":2318},"response_types_supported",{"type":42,"tag":84,"props":2320,"children":2321},{"style":174},[2322],{"type":48,"value":2099},{"type":42,"tag":84,"props":2324,"children":2325},{"style":174},[2326],{"type":48,"value":265},{"type":42,"tag":84,"props":2328,"children":2329},{"style":174},[2330],{"type":48,"value":1363},{"type":42,"tag":84,"props":2332,"children":2333},{"style":174},[2334],{"type":48,"value":2099},{"type":42,"tag":84,"props":2336,"children":2337},{"style":107},[2338],{"type":48,"value":57},{"type":42,"tag":84,"props":2340,"children":2341},{"style":174},[2342],{"type":48,"value":2099},{"type":42,"tag":84,"props":2344,"children":2345},{"style":174},[2346],{"type":48,"value":2347},"],\n",{"type":42,"tag":84,"props":2349,"children":2350},{"class":86,"line":801},[2351,2355,2360,2364,2368,2372,2376,2381,2385],{"type":42,"tag":84,"props":2352,"children":2353},{"style":174},[2354],{"type":48,"value":2089},{"type":42,"tag":84,"props":2356,"children":2357},{"style":221},[2358],{"type":48,"value":2359},"subject_types_supported",{"type":42,"tag":84,"props":2361,"children":2362},{"style":174},[2363],{"type":48,"value":2099},{"type":42,"tag":84,"props":2365,"children":2366},{"style":174},[2367],{"type":48,"value":265},{"type":42,"tag":84,"props":2369,"children":2370},{"style":174},[2371],{"type":48,"value":1363},{"type":42,"tag":84,"props":2373,"children":2374},{"style":174},[2375],{"type":48,"value":2099},{"type":42,"tag":84,"props":2377,"children":2378},{"style":107},[2379],{"type":48,"value":2380},"pairwise",{"type":42,"tag":84,"props":2382,"children":2383},{"style":174},[2384],{"type":48,"value":2099},{"type":42,"tag":84,"props":2386,"children":2387},{"style":174},[2388],{"type":48,"value":2347},{"type":42,"tag":84,"props":2390,"children":2391},{"class":86,"line":810},[2392,2396,2401,2405,2409,2413,2417,2422,2426],{"type":42,"tag":84,"props":2393,"children":2394},{"style":174},[2395],{"type":48,"value":2089},{"type":42,"tag":84,"props":2397,"children":2398},{"style":221},[2399],{"type":48,"value":2400},"id_token_signing_alg_values_supported",{"type":42,"tag":84,"props":2402,"children":2403},{"style":174},[2404],{"type":48,"value":2099},{"type":42,"tag":84,"props":2406,"children":2407},{"style":174},[2408],{"type":48,"value":265},{"type":42,"tag":84,"props":2410,"children":2411},{"style":174},[2412],{"type":48,"value":1363},{"type":42,"tag":84,"props":2414,"children":2415},{"style":174},[2416],{"type":48,"value":2099},{"type":42,"tag":84,"props":2418,"children":2419},{"style":107},[2420],{"type":48,"value":2421},"RS256",{"type":42,"tag":84,"props":2423,"children":2424},{"style":174},[2425],{"type":48,"value":2099},{"type":42,"tag":84,"props":2427,"children":2428},{"style":174},[2429],{"type":48,"value":2347},{"type":42,"tag":84,"props":2431,"children":2432},{"class":86,"line":827},[2433,2437,2442,2446,2450,2454,2458,2462,2466,2470,2474,2478,2482,2486,2490,2494,2498,2502,2506,2511,2515,2519,2523,2528,2532],{"type":42,"tag":84,"props":2434,"children":2435},{"style":174},[2436],{"type":48,"value":2089},{"type":42,"tag":84,"props":2438,"children":2439},{"style":221},[2440],{"type":48,"value":2441},"scopes_supported",{"type":42,"tag":84,"props":2443,"children":2444},{"style":174},[2445],{"type":48,"value":2099},{"type":42,"tag":84,"props":2447,"children":2448},{"style":174},[2449],{"type":48,"value":265},{"type":42,"tag":84,"props":2451,"children":2452},{"style":174},[2453],{"type":48,"value":1363},{"type":42,"tag":84,"props":2455,"children":2456},{"style":174},[2457],{"type":48,"value":2099},{"type":42,"tag":84,"props":2459,"children":2460},{"style":107},[2461],{"type":48,"value":1372},{"type":42,"tag":84,"props":2463,"children":2464},{"style":174},[2465],{"type":48,"value":2099},{"type":42,"tag":84,"props":2467,"children":2468},{"style":174},[2469],{"type":48,"value":283},{"type":42,"tag":84,"props":2471,"children":2472},{"style":174},[2473],{"type":48,"value":2108},{"type":42,"tag":84,"props":2475,"children":2476},{"style":107},[2477],{"type":48,"value":1389},{"type":42,"tag":84,"props":2479,"children":2480},{"style":174},[2481],{"type":48,"value":2099},{"type":42,"tag":84,"props":2483,"children":2484},{"style":174},[2485],{"type":48,"value":283},{"type":42,"tag":84,"props":2487,"children":2488},{"style":174},[2489],{"type":48,"value":2108},{"type":42,"tag":84,"props":2491,"children":2492},{"style":107},[2493],{"type":48,"value":1406},{"type":42,"tag":84,"props":2495,"children":2496},{"style":174},[2497],{"type":48,"value":2099},{"type":42,"tag":84,"props":2499,"children":2500},{"style":174},[2501],{"type":48,"value":283},{"type":42,"tag":84,"props":2503,"children":2504},{"style":174},[2505],{"type":48,"value":2108},{"type":42,"tag":84,"props":2507,"children":2508},{"style":107},[2509],{"type":48,"value":2510},"User.Read",{"type":42,"tag":84,"props":2512,"children":2513},{"style":174},[2514],{"type":48,"value":2099},{"type":42,"tag":84,"props":2516,"children":2517},{"style":174},[2518],{"type":48,"value":283},{"type":42,"tag":84,"props":2520,"children":2521},{"style":174},[2522],{"type":48,"value":2108},{"type":42,"tag":84,"props":2524,"children":2525},{"style":107},[2526],{"type":48,"value":2527},"offline_access",{"type":42,"tag":84,"props":2529,"children":2530},{"style":174},[2531],{"type":48,"value":2099},{"type":42,"tag":84,"props":2533,"children":2534},{"style":174},[2535],{"type":48,"value":2347},{"type":42,"tag":84,"props":2537,"children":2538},{"class":86,"line":880},[2539,2543,2548,2552,2556,2560,2564,2569,2573,2577,2581,2586,2590],{"type":42,"tag":84,"props":2540,"children":2541},{"style":174},[2542],{"type":48,"value":2089},{"type":42,"tag":84,"props":2544,"children":2545},{"style":221},[2546],{"type":48,"value":2547},"token_endpoint_auth_methods_supported",{"type":42,"tag":84,"props":2549,"children":2550},{"style":174},[2551],{"type":48,"value":2099},{"type":42,"tag":84,"props":2553,"children":2554},{"style":174},[2555],{"type":48,"value":265},{"type":42,"tag":84,"props":2557,"children":2558},{"style":174},[2559],{"type":48,"value":1363},{"type":42,"tag":84,"props":2561,"children":2562},{"style":174},[2563],{"type":48,"value":2099},{"type":42,"tag":84,"props":2565,"children":2566},{"style":107},[2567],{"type":48,"value":2568},"client_secret_post",{"type":42,"tag":84,"props":2570,"children":2571},{"style":174},[2572],{"type":48,"value":2099},{"type":42,"tag":84,"props":2574,"children":2575},{"style":174},[2576],{"type":48,"value":283},{"type":42,"tag":84,"props":2578,"children":2579},{"style":174},[2580],{"type":48,"value":2108},{"type":42,"tag":84,"props":2582,"children":2583},{"style":107},[2584],{"type":48,"value":2585},"client_secret_basic",{"type":42,"tag":84,"props":2587,"children":2588},{"style":174},[2589],{"type":48,"value":2099},{"type":42,"tag":84,"props":2591,"children":2592},{"style":174},[2593],{"type":48,"value":2594},"]\n",{"type":42,"tag":84,"props":2596,"children":2597},{"class":86,"line":888},[2598],{"type":42,"tag":84,"props":2599,"children":2600},{"style":174},[2601],{"type":48,"value":1686},{"type":42,"tag":323,"props":2603,"children":2605},{"id":2604},"jwks",[2606],{"type":48,"value":2607},"JWKS",{"type":42,"tag":73,"props":2609,"children":2611},{"className":75,"code":2610,"language":77,"meta":78,"style":78},"curl http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys\n",[2612],{"type":42,"tag":57,"props":2613,"children":2614},{"__ignoreMap":78},[2615],{"type":42,"tag":84,"props":2616,"children":2617},{"class":86,"line":87},[2618,2622],{"type":42,"tag":84,"props":2619,"children":2620},{"style":101},[2621],{"type":48,"value":2028},{"type":42,"tag":84,"props":2623,"children":2624},{"style":107},[2625],{"type":48,"value":2626}," http:\u002F\u002Flocalhost:4005\u002Fdiscovery\u002Fv2.0\u002Fkeys\n",{"type":42,"tag":51,"props":2628,"children":2629},{},[2630,2632,2638,2640,2646,2648,2654],{"type":48,"value":2631},"Returns an RSA public key (",{"type":42,"tag":57,"props":2633,"children":2635},{"className":2634},[],[2636],{"type":48,"value":2637},"kid",{"type":48,"value":2639},": ",{"type":42,"tag":57,"props":2641,"children":2643},{"className":2642},[],[2644],{"type":48,"value":2645},"emulate-microsoft-1",{"type":48,"value":2647},") for verifying ",{"type":42,"tag":57,"props":2649,"children":2651},{"className":2650},[],[2652],{"type":48,"value":2653},"id_token",{"type":48,"value":2655}," signatures.",{"type":42,"tag":323,"props":2657,"children":2659},{"id":2658},"authorization",[2660],{"type":48,"value":2661},"Authorization",{"type":42,"tag":73,"props":2663,"children":2665},{"className":75,"code":2664,"language":77,"meta":78,"style":78},"# Browser flow: redirects to a user picker page\ncurl -v \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize?\\\nclient_id=example-client-id&\\\nredirect_uri=http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id&\\\nscope=openid+email+profile&\\\nresponse_type=code&\\\nstate=random-state&\\\nnonce=random-nonce\"\n",[2666],{"type":42,"tag":57,"props":2667,"children":2668},{"__ignoreMap":78},[2669,2677,2703,2715,2727,2739,2751,2763],{"type":42,"tag":84,"props":2670,"children":2671},{"class":86,"line":87},[2672],{"type":42,"tag":84,"props":2673,"children":2674},{"style":91},[2675],{"type":48,"value":2676},"# Browser flow: redirects to a user picker page\n",{"type":42,"tag":84,"props":2678,"children":2679},{"class":86,"line":97},[2680,2684,2689,2693,2698],{"type":42,"tag":84,"props":2681,"children":2682},{"style":101},[2683],{"type":48,"value":2028},{"type":42,"tag":84,"props":2685,"children":2686},{"style":107},[2687],{"type":48,"value":2688}," -v",{"type":42,"tag":84,"props":2690,"children":2691},{"style":174},[2692],{"type":48,"value":2108},{"type":42,"tag":84,"props":2694,"children":2695},{"style":107},[2696],{"type":48,"value":2697},"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Fauthorize?",{"type":42,"tag":84,"props":2699,"children":2700},{"style":180},[2701],{"type":48,"value":2702},"\\\n",{"type":42,"tag":84,"props":2704,"children":2705},{"class":86,"line":123},[2706,2711],{"type":42,"tag":84,"props":2707,"children":2708},{"style":107},[2709],{"type":48,"value":2710},"client_id=example-client-id&",{"type":42,"tag":84,"props":2712,"children":2713},{"style":180},[2714],{"type":48,"value":2702},{"type":42,"tag":84,"props":2716,"children":2717},{"class":86,"line":133},[2718,2723],{"type":42,"tag":84,"props":2719,"children":2720},{"style":107},[2721],{"type":48,"value":2722},"redirect_uri=http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id&",{"type":42,"tag":84,"props":2724,"children":2725},{"style":180},[2726],{"type":48,"value":2702},{"type":42,"tag":84,"props":2728,"children":2729},{"class":86,"line":142},[2730,2735],{"type":42,"tag":84,"props":2731,"children":2732},{"style":107},[2733],{"type":48,"value":2734},"scope=openid+email+profile&",{"type":42,"tag":84,"props":2736,"children":2737},{"style":180},[2738],{"type":48,"value":2702},{"type":42,"tag":84,"props":2740,"children":2741},{"class":86,"line":681},[2742,2747],{"type":42,"tag":84,"props":2743,"children":2744},{"style":107},[2745],{"type":48,"value":2746},"response_type=code&",{"type":42,"tag":84,"props":2748,"children":2749},{"style":180},[2750],{"type":48,"value":2702},{"type":42,"tag":84,"props":2752,"children":2753},{"class":86,"line":699},[2754,2759],{"type":42,"tag":84,"props":2755,"children":2756},{"style":107},[2757],{"type":48,"value":2758},"state=random-state&",{"type":42,"tag":84,"props":2760,"children":2761},{"style":180},[2762],{"type":48,"value":2702},{"type":42,"tag":84,"props":2764,"children":2765},{"class":86,"line":757},[2766,2771],{"type":42,"tag":84,"props":2767,"children":2768},{"style":107},[2769],{"type":48,"value":2770},"nonce=random-nonce",{"type":42,"tag":84,"props":2772,"children":2773},{"style":174},[2774],{"type":48,"value":2775},"\"\n",{"type":42,"tag":51,"props":2777,"children":2778},{},[2779],{"type":48,"value":2780},"Query parameters:",{"type":42,"tag":360,"props":2782,"children":2783},{},[2784,2800],{"type":42,"tag":364,"props":2785,"children":2786},{},[2787],{"type":42,"tag":368,"props":2788,"children":2789},{},[2790,2795],{"type":42,"tag":372,"props":2791,"children":2792},{},[2793],{"type":48,"value":2794},"Param",{"type":42,"tag":372,"props":2796,"children":2797},{},[2798],{"type":48,"value":2799},"Description",{"type":42,"tag":383,"props":2801,"children":2802},{},[2803,2819,2835,2859,2876,2893,2921,2938],{"type":42,"tag":368,"props":2804,"children":2805},{},[2806,2814],{"type":42,"tag":390,"props":2807,"children":2808},{},[2809],{"type":42,"tag":57,"props":2810,"children":2812},{"className":2811},[],[2813],{"type":48,"value":1969},{"type":42,"tag":390,"props":2815,"children":2816},{},[2817],{"type":48,"value":2818},"OAuth client ID",{"type":42,"tag":368,"props":2820,"children":2821},{},[2822,2830],{"type":42,"tag":390,"props":2823,"children":2824},{},[2825],{"type":42,"tag":57,"props":2826,"children":2828},{"className":2827},[],[2829],{"type":48,"value":1992},{"type":42,"tag":390,"props":2831,"children":2832},{},[2833],{"type":48,"value":2834},"Callback URL",{"type":42,"tag":368,"props":2836,"children":2837},{},[2838,2847],{"type":42,"tag":390,"props":2839,"children":2840},{},[2841],{"type":42,"tag":57,"props":2842,"children":2844},{"className":2843},[],[2845],{"type":48,"value":2846},"scope",{"type":42,"tag":390,"props":2848,"children":2849},{},[2850,2852,2857],{"type":48,"value":2851},"Space-separated scopes (",{"type":42,"tag":57,"props":2853,"children":2855},{"className":2854},[],[2856],{"type":48,"value":789},{"type":48,"value":2858},")",{"type":42,"tag":368,"props":2860,"children":2861},{},[2862,2871],{"type":42,"tag":390,"props":2863,"children":2864},{},[2865],{"type":42,"tag":57,"props":2866,"children":2868},{"className":2867},[],[2869],{"type":48,"value":2870},"state",{"type":42,"tag":390,"props":2872,"children":2873},{},[2874],{"type":48,"value":2875},"Opaque state for CSRF protection",{"type":42,"tag":368,"props":2877,"children":2878},{},[2879,2888],{"type":42,"tag":390,"props":2880,"children":2881},{},[2882],{"type":42,"tag":57,"props":2883,"children":2885},{"className":2884},[],[2886],{"type":48,"value":2887},"nonce",{"type":42,"tag":390,"props":2889,"children":2890},{},[2891],{"type":48,"value":2892},"Nonce for ID token (optional)",{"type":42,"tag":368,"props":2894,"children":2895},{},[2896,2905],{"type":42,"tag":390,"props":2897,"children":2898},{},[2899],{"type":42,"tag":57,"props":2900,"children":2902},{"className":2901},[],[2903],{"type":48,"value":2904},"response_mode",{"type":42,"tag":390,"props":2906,"children":2907},{},[2908,2913,2915],{"type":42,"tag":57,"props":2909,"children":2911},{"className":2910},[],[2912],{"type":48,"value":1338},{"type":48,"value":2914}," (default) or ",{"type":42,"tag":57,"props":2916,"children":2918},{"className":2917},[],[2919],{"type":48,"value":2920},"form_post",{"type":42,"tag":368,"props":2922,"children":2923},{},[2924,2933],{"type":42,"tag":390,"props":2925,"children":2926},{},[2927],{"type":42,"tag":57,"props":2928,"children":2930},{"className":2929},[],[2931],{"type":48,"value":2932},"code_challenge",{"type":42,"tag":390,"props":2934,"children":2935},{},[2936],{"type":48,"value":2937},"PKCE challenge (optional)",{"type":42,"tag":368,"props":2939,"children":2940},{},[2941,2950],{"type":42,"tag":390,"props":2942,"children":2943},{},[2944],{"type":42,"tag":57,"props":2945,"children":2947},{"className":2946},[],[2948],{"type":48,"value":2949},"code_challenge_method",{"type":42,"tag":390,"props":2951,"children":2952},{},[2953,2959,2961,2967],{"type":42,"tag":57,"props":2954,"children":2956},{"className":2955},[],[2957],{"type":48,"value":2958},"plain",{"type":48,"value":2960}," or ",{"type":42,"tag":57,"props":2962,"children":2964},{"className":2963},[],[2965],{"type":48,"value":2966},"S256",{"type":48,"value":2968}," (optional)",{"type":42,"tag":323,"props":2970,"children":2972},{"id":2971},"token-exchange",[2973],{"type":48,"value":2974},"Token Exchange",{"type":42,"tag":73,"props":2976,"children":2978},{"className":75,"code":2977,"language":77,"meta":78,"style":78},"curl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Cauthorization_code>&\\\nclient_id=example-client-id&\\\nclient_secret=example-client-secret&\\\nredirect_uri=http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id&\\\ngrant_type=authorization_code\"\n",[2979],{"type":42,"tag":57,"props":2980,"children":2981},{"__ignoreMap":78},[2982,3009,3034,3055,3066,3078,3089],{"type":42,"tag":84,"props":2983,"children":2984},{"class":86,"line":87},[2985,2989,2994,2999,3004],{"type":42,"tag":84,"props":2986,"children":2987},{"style":101},[2988],{"type":48,"value":2028},{"type":42,"tag":84,"props":2990,"children":2991},{"style":107},[2992],{"type":48,"value":2993}," -X",{"type":42,"tag":84,"props":2995,"children":2996},{"style":107},[2997],{"type":48,"value":2998}," POST",{"type":42,"tag":84,"props":3000,"children":3001},{"style":107},[3002],{"type":48,"value":3003}," http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken",{"type":42,"tag":84,"props":3005,"children":3006},{"style":180},[3007],{"type":48,"value":3008}," \\\n",{"type":42,"tag":84,"props":3010,"children":3011},{"class":86,"line":97},[3012,3017,3021,3026,3030],{"type":42,"tag":84,"props":3013,"children":3014},{"style":107},[3015],{"type":48,"value":3016},"  -H",{"type":42,"tag":84,"props":3018,"children":3019},{"style":174},[3020],{"type":48,"value":2108},{"type":42,"tag":84,"props":3022,"children":3023},{"style":107},[3024],{"type":48,"value":3025},"Content-Type: application\u002Fx-www-form-urlencoded",{"type":42,"tag":84,"props":3027,"children":3028},{"style":174},[3029],{"type":48,"value":2099},{"type":42,"tag":84,"props":3031,"children":3032},{"style":180},[3033],{"type":48,"value":3008},{"type":42,"tag":84,"props":3035,"children":3036},{"class":86,"line":123},[3037,3042,3046,3051],{"type":42,"tag":84,"props":3038,"children":3039},{"style":107},[3040],{"type":48,"value":3041},"  -d",{"type":42,"tag":84,"props":3043,"children":3044},{"style":174},[3045],{"type":48,"value":2108},{"type":42,"tag":84,"props":3047,"children":3048},{"style":107},[3049],{"type":48,"value":3050},"code=\u003Cauthorization_code>&",{"type":42,"tag":84,"props":3052,"children":3053},{"style":180},[3054],{"type":48,"value":2702},{"type":42,"tag":84,"props":3056,"children":3057},{"class":86,"line":133},[3058,3062],{"type":42,"tag":84,"props":3059,"children":3060},{"style":107},[3061],{"type":48,"value":2710},{"type":42,"tag":84,"props":3063,"children":3064},{"style":180},[3065],{"type":48,"value":2702},{"type":42,"tag":84,"props":3067,"children":3068},{"class":86,"line":142},[3069,3074],{"type":42,"tag":84,"props":3070,"children":3071},{"style":107},[3072],{"type":48,"value":3073},"client_secret=example-client-secret&",{"type":42,"tag":84,"props":3075,"children":3076},{"style":180},[3077],{"type":48,"value":2702},{"type":42,"tag":84,"props":3079,"children":3080},{"class":86,"line":681},[3081,3085],{"type":42,"tag":84,"props":3082,"children":3083},{"style":107},[3084],{"type":48,"value":2722},{"type":42,"tag":84,"props":3086,"children":3087},{"style":180},[3088],{"type":48,"value":2702},{"type":42,"tag":84,"props":3090,"children":3091},{"class":86,"line":699},[3092,3097],{"type":42,"tag":84,"props":3093,"children":3094},{"style":107},[3095],{"type":48,"value":3096},"grant_type=authorization_code",{"type":42,"tag":84,"props":3098,"children":3099},{"style":174},[3100],{"type":48,"value":2775},{"type":42,"tag":51,"props":3102,"children":3103},{},[3104],{"type":48,"value":3105},"Returns:",{"type":42,"tag":73,"props":3107,"children":3109},{"className":2068,"code":3108,"language":2070,"meta":78,"style":78},"{\n  \"access_token\": \"microsoft_...\",\n  \"refresh_token\": \"r_microsoft_...\",\n  \"id_token\": \"\u003Cjwt>\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"openid email profile\"\n}\n",[3110],{"type":42,"tag":57,"props":3111,"children":3112},{"__ignoreMap":78},[3113,3120,3157,3194,3230,3267,3296,3328],{"type":42,"tag":84,"props":3114,"children":3115},{"class":86,"line":87},[3116],{"type":42,"tag":84,"props":3117,"children":3118},{"style":174},[3119],{"type":48,"value":600},{"type":42,"tag":84,"props":3121,"children":3122},{"class":86,"line":97},[3123,3127,3132,3136,3140,3144,3149,3153],{"type":42,"tag":84,"props":3124,"children":3125},{"style":174},[3126],{"type":48,"value":2089},{"type":42,"tag":84,"props":3128,"children":3129},{"style":221},[3130],{"type":48,"value":3131},"access_token",{"type":42,"tag":84,"props":3133,"children":3134},{"style":174},[3135],{"type":48,"value":2099},{"type":42,"tag":84,"props":3137,"children":3138},{"style":174},[3139],{"type":48,"value":265},{"type":42,"tag":84,"props":3141,"children":3142},{"style":174},[3143],{"type":48,"value":2108},{"type":42,"tag":84,"props":3145,"children":3146},{"style":107},[3147],{"type":48,"value":3148},"microsoft_...",{"type":42,"tag":84,"props":3150,"children":3151},{"style":174},[3152],{"type":48,"value":2099},{"type":42,"tag":84,"props":3154,"children":3155},{"style":174},[3156],{"type":48,"value":641},{"type":42,"tag":84,"props":3158,"children":3159},{"class":86,"line":123},[3160,3164,3169,3173,3177,3181,3186,3190],{"type":42,"tag":84,"props":3161,"children":3162},{"style":174},[3163],{"type":48,"value":2089},{"type":42,"tag":84,"props":3165,"children":3166},{"style":221},[3167],{"type":48,"value":3168},"refresh_token",{"type":42,"tag":84,"props":3170,"children":3171},{"style":174},[3172],{"type":48,"value":2099},{"type":42,"tag":84,"props":3174,"children":3175},{"style":174},[3176],{"type":48,"value":265},{"type":42,"tag":84,"props":3178,"children":3179},{"style":174},[3180],{"type":48,"value":2108},{"type":42,"tag":84,"props":3182,"children":3183},{"style":107},[3184],{"type":48,"value":3185},"r_microsoft_...",{"type":42,"tag":84,"props":3187,"children":3188},{"style":174},[3189],{"type":48,"value":2099},{"type":42,"tag":84,"props":3191,"children":3192},{"style":174},[3193],{"type":48,"value":641},{"type":42,"tag":84,"props":3195,"children":3196},{"class":86,"line":133},[3197,3201,3205,3209,3213,3217,3222,3226],{"type":42,"tag":84,"props":3198,"children":3199},{"style":174},[3200],{"type":48,"value":2089},{"type":42,"tag":84,"props":3202,"children":3203},{"style":221},[3204],{"type":48,"value":2653},{"type":42,"tag":84,"props":3206,"children":3207},{"style":174},[3208],{"type":48,"value":2099},{"type":42,"tag":84,"props":3210,"children":3211},{"style":174},[3212],{"type":48,"value":265},{"type":42,"tag":84,"props":3214,"children":3215},{"style":174},[3216],{"type":48,"value":2108},{"type":42,"tag":84,"props":3218,"children":3219},{"style":107},[3220],{"type":48,"value":3221},"\u003Cjwt>",{"type":42,"tag":84,"props":3223,"children":3224},{"style":174},[3225],{"type":48,"value":2099},{"type":42,"tag":84,"props":3227,"children":3228},{"style":174},[3229],{"type":48,"value":641},{"type":42,"tag":84,"props":3231,"children":3232},{"class":86,"line":142},[3233,3237,3242,3246,3250,3254,3259,3263],{"type":42,"tag":84,"props":3234,"children":3235},{"style":174},[3236],{"type":48,"value":2089},{"type":42,"tag":84,"props":3238,"children":3239},{"style":221},[3240],{"type":48,"value":3241},"token_type",{"type":42,"tag":84,"props":3243,"children":3244},{"style":174},[3245],{"type":48,"value":2099},{"type":42,"tag":84,"props":3247,"children":3248},{"style":174},[3249],{"type":48,"value":265},{"type":42,"tag":84,"props":3251,"children":3252},{"style":174},[3253],{"type":48,"value":2108},{"type":42,"tag":84,"props":3255,"children":3256},{"style":107},[3257],{"type":48,"value":3258},"Bearer",{"type":42,"tag":84,"props":3260,"children":3261},{"style":174},[3262],{"type":48,"value":2099},{"type":42,"tag":84,"props":3264,"children":3265},{"style":174},[3266],{"type":48,"value":641},{"type":42,"tag":84,"props":3268,"children":3269},{"class":86,"line":681},[3270,3274,3279,3283,3287,3292],{"type":42,"tag":84,"props":3271,"children":3272},{"style":174},[3273],{"type":48,"value":2089},{"type":42,"tag":84,"props":3275,"children":3276},{"style":221},[3277],{"type":48,"value":3278},"expires_in",{"type":42,"tag":84,"props":3280,"children":3281},{"style":174},[3282],{"type":48,"value":2099},{"type":42,"tag":84,"props":3284,"children":3285},{"style":174},[3286],{"type":48,"value":265},{"type":42,"tag":84,"props":3288,"children":3289},{"style":295},[3290],{"type":48,"value":3291}," 3600",{"type":42,"tag":84,"props":3293,"children":3294},{"style":174},[3295],{"type":48,"value":641},{"type":42,"tag":84,"props":3297,"children":3298},{"class":86,"line":699},[3299,3303,3307,3311,3315,3319,3324],{"type":42,"tag":84,"props":3300,"children":3301},{"style":174},[3302],{"type":48,"value":2089},{"type":42,"tag":84,"props":3304,"children":3305},{"style":221},[3306],{"type":48,"value":2846},{"type":42,"tag":84,"props":3308,"children":3309},{"style":174},[3310],{"type":48,"value":2099},{"type":42,"tag":84,"props":3312,"children":3313},{"style":174},[3314],{"type":48,"value":265},{"type":42,"tag":84,"props":3316,"children":3317},{"style":174},[3318],{"type":48,"value":2108},{"type":42,"tag":84,"props":3320,"children":3321},{"style":107},[3322],{"type":48,"value":3323},"openid email profile",{"type":42,"tag":84,"props":3325,"children":3326},{"style":174},[3327],{"type":48,"value":2775},{"type":42,"tag":84,"props":3329,"children":3330},{"class":86,"line":757},[3331],{"type":42,"tag":84,"props":3332,"children":3333},{"style":174},[3334],{"type":48,"value":1686},{"type":42,"tag":51,"props":3336,"children":3337},{},[3338,3340,3345,3347,3353,3354,3360,3361,3367,3369,3374,3375,3381,3382,3388,3389,3395,3397,3402],{"type":48,"value":3339},"The ",{"type":42,"tag":57,"props":3341,"children":3343},{"className":3342},[],[3344],{"type":48,"value":2653},{"type":48,"value":3346}," is an RS256 JWT containing ",{"type":42,"tag":57,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":48,"value":3352},"sub",{"type":48,"value":1978},{"type":42,"tag":57,"props":3355,"children":3357},{"className":3356},[],[3358],{"type":48,"value":3359},"oid",{"type":48,"value":1978},{"type":42,"tag":57,"props":3362,"children":3364},{"className":3363},[],[3365],{"type":48,"value":3366},"tid",{"type":48,"value":3368}," (tenant ID), ",{"type":42,"tag":57,"props":3370,"children":3372},{"className":3371},[],[3373],{"type":48,"value":1389},{"type":48,"value":1978},{"type":42,"tag":57,"props":3376,"children":3378},{"className":3377},[],[3379],{"type":48,"value":3380},"name",{"type":48,"value":1978},{"type":42,"tag":57,"props":3383,"children":3385},{"className":3384},[],[3386],{"type":48,"value":3387},"preferred_username",{"type":48,"value":1978},{"type":42,"tag":57,"props":3390,"children":3392},{"className":3391},[],[3393],{"type":48,"value":3394},"ver",{"type":48,"value":3396}," (\"2.0\"), and optional ",{"type":42,"tag":57,"props":3398,"children":3400},{"className":3399},[],[3401],{"type":48,"value":2887},{"type":48,"value":622},{"type":42,"tag":51,"props":3404,"children":3405},{},[3406,3408,3414],{"type":48,"value":3407},"For PKCE, include ",{"type":42,"tag":57,"props":3409,"children":3411},{"className":3410},[],[3412],{"type":48,"value":3413},"code_verifier",{"type":48,"value":3415}," in the token request.",{"type":42,"tag":51,"props":3417,"children":3418},{},[3419,3421,3427,3429,3435],{"type":48,"value":3420},"Supports ",{"type":42,"tag":57,"props":3422,"children":3424},{"className":3423},[],[3425],{"type":48,"value":3426},"Authorization: Basic",{"type":48,"value":3428}," header with base64-encoded ",{"type":42,"tag":57,"props":3430,"children":3432},{"className":3431},[],[3433],{"type":48,"value":3434},"client_id:client_secret",{"type":48,"value":3436}," as an alternative to body parameters.",{"type":42,"tag":323,"props":3438,"children":3440},{"id":3439},"client-credentials",[3441],{"type":48,"value":3442},"Client Credentials",{"type":42,"tag":73,"props":3444,"children":3446},{"className":75,"code":3445,"language":77,"meta":78,"style":78},"curl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"client_id=example-client-id&\\\nclient_secret=example-client-secret&\\\ngrant_type=client_credentials&\\\nscope=https:\u002F\u002Fgraph.microsoft.com\u002F.default\"\n",[3447],{"type":42,"tag":57,"props":3448,"children":3449},{"__ignoreMap":78},[3450,3473,3496,3515,3526,3538],{"type":42,"tag":84,"props":3451,"children":3452},{"class":86,"line":87},[3453,3457,3461,3465,3469],{"type":42,"tag":84,"props":3454,"children":3455},{"style":101},[3456],{"type":48,"value":2028},{"type":42,"tag":84,"props":3458,"children":3459},{"style":107},[3460],{"type":48,"value":2993},{"type":42,"tag":84,"props":3462,"children":3463},{"style":107},[3464],{"type":48,"value":2998},{"type":42,"tag":84,"props":3466,"children":3467},{"style":107},[3468],{"type":48,"value":3003},{"type":42,"tag":84,"props":3470,"children":3471},{"style":180},[3472],{"type":48,"value":3008},{"type":42,"tag":84,"props":3474,"children":3475},{"class":86,"line":97},[3476,3480,3484,3488,3492],{"type":42,"tag":84,"props":3477,"children":3478},{"style":107},[3479],{"type":48,"value":3016},{"type":42,"tag":84,"props":3481,"children":3482},{"style":174},[3483],{"type":48,"value":2108},{"type":42,"tag":84,"props":3485,"children":3486},{"style":107},[3487],{"type":48,"value":3025},{"type":42,"tag":84,"props":3489,"children":3490},{"style":174},[3491],{"type":48,"value":2099},{"type":42,"tag":84,"props":3493,"children":3494},{"style":180},[3495],{"type":48,"value":3008},{"type":42,"tag":84,"props":3497,"children":3498},{"class":86,"line":123},[3499,3503,3507,3511],{"type":42,"tag":84,"props":3500,"children":3501},{"style":107},[3502],{"type":48,"value":3041},{"type":42,"tag":84,"props":3504,"children":3505},{"style":174},[3506],{"type":48,"value":2108},{"type":42,"tag":84,"props":3508,"children":3509},{"style":107},[3510],{"type":48,"value":2710},{"type":42,"tag":84,"props":3512,"children":3513},{"style":180},[3514],{"type":48,"value":2702},{"type":42,"tag":84,"props":3516,"children":3517},{"class":86,"line":133},[3518,3522],{"type":42,"tag":84,"props":3519,"children":3520},{"style":107},[3521],{"type":48,"value":3073},{"type":42,"tag":84,"props":3523,"children":3524},{"style":180},[3525],{"type":48,"value":2702},{"type":42,"tag":84,"props":3527,"children":3528},{"class":86,"line":142},[3529,3534],{"type":42,"tag":84,"props":3530,"children":3531},{"style":107},[3532],{"type":48,"value":3533},"grant_type=client_credentials&",{"type":42,"tag":84,"props":3535,"children":3536},{"style":180},[3537],{"type":48,"value":2702},{"type":42,"tag":84,"props":3539,"children":3540},{"class":86,"line":681},[3541,3546],{"type":42,"tag":84,"props":3542,"children":3543},{"style":107},[3544],{"type":48,"value":3545},"scope=https:\u002F\u002Fgraph.microsoft.com\u002F.default",{"type":42,"tag":84,"props":3547,"children":3548},{"style":174},[3549],{"type":48,"value":2775},{"type":42,"tag":51,"props":3551,"children":3552},{},[3553,3555,3560,3562,3567,3568,3573],{"type":48,"value":3554},"Returns an ",{"type":42,"tag":57,"props":3556,"children":3558},{"className":3557},[],[3559],{"type":48,"value":3131},{"type":48,"value":3561}," only (no ",{"type":42,"tag":57,"props":3563,"children":3565},{"className":3564},[],[3566],{"type":48,"value":3168},{"type":48,"value":2960},{"type":42,"tag":57,"props":3569,"children":3571},{"className":3570},[],[3572],{"type":48,"value":2653},{"type":48,"value":3574},").",{"type":42,"tag":323,"props":3576,"children":3578},{"id":3577},"refresh-token",[3579],{"type":48,"value":3580},"Refresh Token",{"type":42,"tag":73,"props":3582,"children":3584},{"className":75,"code":3583,"language":77,"meta":78,"style":78},"curl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"refresh_token=r_microsoft_...&\\\nclient_id=example-client-id&\\\ngrant_type=refresh_token\"\n",[3585],{"type":42,"tag":57,"props":3586,"children":3587},{"__ignoreMap":78},[3588,3611,3634,3654,3665],{"type":42,"tag":84,"props":3589,"children":3590},{"class":86,"line":87},[3591,3595,3599,3603,3607],{"type":42,"tag":84,"props":3592,"children":3593},{"style":101},[3594],{"type":48,"value":2028},{"type":42,"tag":84,"props":3596,"children":3597},{"style":107},[3598],{"type":48,"value":2993},{"type":42,"tag":84,"props":3600,"children":3601},{"style":107},[3602],{"type":48,"value":2998},{"type":42,"tag":84,"props":3604,"children":3605},{"style":107},[3606],{"type":48,"value":3003},{"type":42,"tag":84,"props":3608,"children":3609},{"style":180},[3610],{"type":48,"value":3008},{"type":42,"tag":84,"props":3612,"children":3613},{"class":86,"line":97},[3614,3618,3622,3626,3630],{"type":42,"tag":84,"props":3615,"children":3616},{"style":107},[3617],{"type":48,"value":3016},{"type":42,"tag":84,"props":3619,"children":3620},{"style":174},[3621],{"type":48,"value":2108},{"type":42,"tag":84,"props":3623,"children":3624},{"style":107},[3625],{"type":48,"value":3025},{"type":42,"tag":84,"props":3627,"children":3628},{"style":174},[3629],{"type":48,"value":2099},{"type":42,"tag":84,"props":3631,"children":3632},{"style":180},[3633],{"type":48,"value":3008},{"type":42,"tag":84,"props":3635,"children":3636},{"class":86,"line":123},[3637,3641,3645,3650],{"type":42,"tag":84,"props":3638,"children":3639},{"style":107},[3640],{"type":48,"value":3041},{"type":42,"tag":84,"props":3642,"children":3643},{"style":174},[3644],{"type":48,"value":2108},{"type":42,"tag":84,"props":3646,"children":3647},{"style":107},[3648],{"type":48,"value":3649},"refresh_token=r_microsoft_...&",{"type":42,"tag":84,"props":3651,"children":3652},{"style":180},[3653],{"type":48,"value":2702},{"type":42,"tag":84,"props":3655,"children":3656},{"class":86,"line":133},[3657,3661],{"type":42,"tag":84,"props":3658,"children":3659},{"style":107},[3660],{"type":48,"value":2710},{"type":42,"tag":84,"props":3662,"children":3663},{"style":180},[3664],{"type":48,"value":2702},{"type":42,"tag":84,"props":3666,"children":3667},{"class":86,"line":142},[3668,3673],{"type":42,"tag":84,"props":3669,"children":3670},{"style":107},[3671],{"type":48,"value":3672},"grant_type=refresh_token",{"type":42,"tag":84,"props":3674,"children":3675},{"style":174},[3676],{"type":48,"value":2775},{"type":42,"tag":51,"props":3678,"children":3679},{},[3680,3682,3687,3689,3694,3696,3701],{"type":48,"value":3681},"Returns a new ",{"type":42,"tag":57,"props":3683,"children":3685},{"className":3684},[],[3686],{"type":48,"value":3131},{"type":48,"value":3688},", rotated ",{"type":42,"tag":57,"props":3690,"children":3692},{"className":3691},[],[3693],{"type":48,"value":3168},{"type":48,"value":3695},", and new ",{"type":42,"tag":57,"props":3697,"children":3699},{"className":3698},[],[3700],{"type":48,"value":2653},{"type":48,"value":622},{"type":42,"tag":323,"props":3703,"children":3705},{"id":3704},"user-info",[3706],{"type":48,"value":3707},"User Info",{"type":42,"tag":73,"props":3709,"children":3711},{"className":75,"code":3710,"language":77,"meta":78,"style":78},"curl http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo \\\n  -H \"Authorization: Bearer microsoft_...\"\n",[3712],{"type":42,"tag":57,"props":3713,"children":3714},{"__ignoreMap":78},[3715,3731],{"type":42,"tag":84,"props":3716,"children":3717},{"class":86,"line":87},[3718,3722,3727],{"type":42,"tag":84,"props":3719,"children":3720},{"style":101},[3721],{"type":48,"value":2028},{"type":42,"tag":84,"props":3723,"children":3724},{"style":107},[3725],{"type":48,"value":3726}," http:\u002F\u002Flocalhost:4005\u002Foidc\u002Fuserinfo",{"type":42,"tag":84,"props":3728,"children":3729},{"style":180},[3730],{"type":48,"value":3008},{"type":42,"tag":84,"props":3732,"children":3733},{"class":86,"line":97},[3734,3738,3742,3747],{"type":42,"tag":84,"props":3735,"children":3736},{"style":107},[3737],{"type":48,"value":3016},{"type":42,"tag":84,"props":3739,"children":3740},{"style":174},[3741],{"type":48,"value":2108},{"type":42,"tag":84,"props":3743,"children":3744},{"style":107},[3745],{"type":48,"value":3746},"Authorization: Bearer microsoft_...",{"type":42,"tag":84,"props":3748,"children":3749},{"style":174},[3750],{"type":48,"value":2775},{"type":42,"tag":51,"props":3752,"children":3753},{},[3754],{"type":48,"value":3105},{"type":42,"tag":73,"props":3756,"children":3758},{"className":2068,"code":3757,"language":2070,"meta":78,"style":78},"{\n  \"sub\": \"\u003Coid>\",\n  \"email\": \"testuser@outlook.com\",\n  \"name\": \"Test User\",\n  \"given_name\": \"Test\",\n  \"family_name\": \"User\",\n  \"preferred_username\": \"testuser@outlook.com\"\n}\n",[3759],{"type":42,"tag":57,"props":3760,"children":3761},{"__ignoreMap":78},[3762,3769,3805,3841,3877,3914,3951,3982],{"type":42,"tag":84,"props":3763,"children":3764},{"class":86,"line":87},[3765],{"type":42,"tag":84,"props":3766,"children":3767},{"style":174},[3768],{"type":48,"value":600},{"type":42,"tag":84,"props":3770,"children":3771},{"class":86,"line":97},[3772,3776,3780,3784,3788,3792,3797,3801],{"type":42,"tag":84,"props":3773,"children":3774},{"style":174},[3775],{"type":48,"value":2089},{"type":42,"tag":84,"props":3777,"children":3778},{"style":221},[3779],{"type":48,"value":3352},{"type":42,"tag":84,"props":3781,"children":3782},{"style":174},[3783],{"type":48,"value":2099},{"type":42,"tag":84,"props":3785,"children":3786},{"style":174},[3787],{"type":48,"value":265},{"type":42,"tag":84,"props":3789,"children":3790},{"style":174},[3791],{"type":48,"value":2108},{"type":42,"tag":84,"props":3793,"children":3794},{"style":107},[3795],{"type":48,"value":3796},"\u003Coid>",{"type":42,"tag":84,"props":3798,"children":3799},{"style":174},[3800],{"type":48,"value":2099},{"type":42,"tag":84,"props":3802,"children":3803},{"style":174},[3804],{"type":48,"value":641},{"type":42,"tag":84,"props":3806,"children":3807},{"class":86,"line":123},[3808,3812,3816,3820,3824,3828,3833,3837],{"type":42,"tag":84,"props":3809,"children":3810},{"style":174},[3811],{"type":48,"value":2089},{"type":42,"tag":84,"props":3813,"children":3814},{"style":221},[3815],{"type":48,"value":1389},{"type":42,"tag":84,"props":3817,"children":3818},{"style":174},[3819],{"type":48,"value":2099},{"type":42,"tag":84,"props":3821,"children":3822},{"style":174},[3823],{"type":48,"value":265},{"type":42,"tag":84,"props":3825,"children":3826},{"style":174},[3827],{"type":48,"value":2108},{"type":42,"tag":84,"props":3829,"children":3830},{"style":107},[3831],{"type":48,"value":3832},"testuser@outlook.com",{"type":42,"tag":84,"props":3834,"children":3835},{"style":174},[3836],{"type":48,"value":2099},{"type":42,"tag":84,"props":3838,"children":3839},{"style":174},[3840],{"type":48,"value":641},{"type":42,"tag":84,"props":3842,"children":3843},{"class":86,"line":133},[3844,3848,3852,3856,3860,3864,3869,3873],{"type":42,"tag":84,"props":3845,"children":3846},{"style":174},[3847],{"type":48,"value":2089},{"type":42,"tag":84,"props":3849,"children":3850},{"style":221},[3851],{"type":48,"value":3380},{"type":42,"tag":84,"props":3853,"children":3854},{"style":174},[3855],{"type":48,"value":2099},{"type":42,"tag":84,"props":3857,"children":3858},{"style":174},[3859],{"type":48,"value":265},{"type":42,"tag":84,"props":3861,"children":3862},{"style":174},[3863],{"type":48,"value":2108},{"type":42,"tag":84,"props":3865,"children":3866},{"style":107},[3867],{"type":48,"value":3868},"Test User",{"type":42,"tag":84,"props":3870,"children":3871},{"style":174},[3872],{"type":48,"value":2099},{"type":42,"tag":84,"props":3874,"children":3875},{"style":174},[3876],{"type":48,"value":641},{"type":42,"tag":84,"props":3878,"children":3879},{"class":86,"line":142},[3880,3884,3889,3893,3897,3901,3906,3910],{"type":42,"tag":84,"props":3881,"children":3882},{"style":174},[3883],{"type":48,"value":2089},{"type":42,"tag":84,"props":3885,"children":3886},{"style":221},[3887],{"type":48,"value":3888},"given_name",{"type":42,"tag":84,"props":3890,"children":3891},{"style":174},[3892],{"type":48,"value":2099},{"type":42,"tag":84,"props":3894,"children":3895},{"style":174},[3896],{"type":48,"value":265},{"type":42,"tag":84,"props":3898,"children":3899},{"style":174},[3900],{"type":48,"value":2108},{"type":42,"tag":84,"props":3902,"children":3903},{"style":107},[3904],{"type":48,"value":3905},"Test",{"type":42,"tag":84,"props":3907,"children":3908},{"style":174},[3909],{"type":48,"value":2099},{"type":42,"tag":84,"props":3911,"children":3912},{"style":174},[3913],{"type":48,"value":641},{"type":42,"tag":84,"props":3915,"children":3916},{"class":86,"line":681},[3917,3921,3926,3930,3934,3938,3943,3947],{"type":42,"tag":84,"props":3918,"children":3919},{"style":174},[3920],{"type":48,"value":2089},{"type":42,"tag":84,"props":3922,"children":3923},{"style":221},[3924],{"type":48,"value":3925},"family_name",{"type":42,"tag":84,"props":3927,"children":3928},{"style":174},[3929],{"type":48,"value":2099},{"type":42,"tag":84,"props":3931,"children":3932},{"style":174},[3933],{"type":48,"value":265},{"type":42,"tag":84,"props":3935,"children":3936},{"style":174},[3937],{"type":48,"value":2108},{"type":42,"tag":84,"props":3939,"children":3940},{"style":107},[3941],{"type":48,"value":3942},"User",{"type":42,"tag":84,"props":3944,"children":3945},{"style":174},[3946],{"type":48,"value":2099},{"type":42,"tag":84,"props":3948,"children":3949},{"style":174},[3950],{"type":48,"value":641},{"type":42,"tag":84,"props":3952,"children":3953},{"class":86,"line":699},[3954,3958,3962,3966,3970,3974,3978],{"type":42,"tag":84,"props":3955,"children":3956},{"style":174},[3957],{"type":48,"value":2089},{"type":42,"tag":84,"props":3959,"children":3960},{"style":221},[3961],{"type":48,"value":3387},{"type":42,"tag":84,"props":3963,"children":3964},{"style":174},[3965],{"type":48,"value":2099},{"type":42,"tag":84,"props":3967,"children":3968},{"style":174},[3969],{"type":48,"value":265},{"type":42,"tag":84,"props":3971,"children":3972},{"style":174},[3973],{"type":48,"value":2108},{"type":42,"tag":84,"props":3975,"children":3976},{"style":107},[3977],{"type":48,"value":3832},{"type":42,"tag":84,"props":3979,"children":3980},{"style":174},[3981],{"type":48,"value":2775},{"type":42,"tag":84,"props":3983,"children":3984},{"class":86,"line":757},[3985],{"type":42,"tag":84,"props":3986,"children":3987},{"style":174},[3988],{"type":48,"value":1686},{"type":42,"tag":323,"props":3990,"children":3992},{"id":3991},"microsoft-graph-me",[3993],{"type":48,"value":3994},"Microsoft Graph \u002Fme",{"type":42,"tag":73,"props":3996,"children":3998},{"className":75,"code":3997,"language":77,"meta":78,"style":78},"curl http:\u002F\u002Flocalhost:4005\u002Fv1.0\u002Fme \\\n  -H \"Authorization: Bearer microsoft_...\"\n",[3999],{"type":42,"tag":57,"props":4000,"children":4001},{"__ignoreMap":78},[4002,4018],{"type":42,"tag":84,"props":4003,"children":4004},{"class":86,"line":87},[4005,4009,4014],{"type":42,"tag":84,"props":4006,"children":4007},{"style":101},[4008],{"type":48,"value":2028},{"type":42,"tag":84,"props":4010,"children":4011},{"style":107},[4012],{"type":48,"value":4013}," http:\u002F\u002Flocalhost:4005\u002Fv1.0\u002Fme",{"type":42,"tag":84,"props":4015,"children":4016},{"style":180},[4017],{"type":48,"value":3008},{"type":42,"tag":84,"props":4019,"children":4020},{"class":86,"line":97},[4021,4025,4029,4033],{"type":42,"tag":84,"props":4022,"children":4023},{"style":107},[4024],{"type":48,"value":3016},{"type":42,"tag":84,"props":4026,"children":4027},{"style":174},[4028],{"type":48,"value":2108},{"type":42,"tag":84,"props":4030,"children":4031},{"style":107},[4032],{"type":48,"value":3746},{"type":42,"tag":84,"props":4034,"children":4035},{"style":174},[4036],{"type":48,"value":2775},{"type":42,"tag":51,"props":4038,"children":4039},{},[4040],{"type":48,"value":4041},"Returns an OData-style response:",{"type":42,"tag":73,"props":4043,"children":4045},{"className":2068,"code":4044,"language":2070,"meta":78,"style":78},"{\n  \"@odata.context\": \"https:\u002F\u002Fgraph.microsoft.com\u002Fv1.0\u002F$metadata#users\u002F$entity\",\n  \"displayName\": \"Test User\",\n  \"mail\": \"testuser@outlook.com\",\n  \"userPrincipalName\": \"testuser@outlook.com\",\n  \"id\": \"\u003Coid>\"\n}\n",[4046],{"type":42,"tag":57,"props":4047,"children":4048},{"__ignoreMap":78},[4049,4056,4093,4129,4165,4201,4233],{"type":42,"tag":84,"props":4050,"children":4051},{"class":86,"line":87},[4052],{"type":42,"tag":84,"props":4053,"children":4054},{"style":174},[4055],{"type":48,"value":600},{"type":42,"tag":84,"props":4057,"children":4058},{"class":86,"line":97},[4059,4063,4068,4072,4076,4080,4085,4089],{"type":42,"tag":84,"props":4060,"children":4061},{"style":174},[4062],{"type":48,"value":2089},{"type":42,"tag":84,"props":4064,"children":4065},{"style":221},[4066],{"type":48,"value":4067},"@odata.context",{"type":42,"tag":84,"props":4069,"children":4070},{"style":174},[4071],{"type":48,"value":2099},{"type":42,"tag":84,"props":4073,"children":4074},{"style":174},[4075],{"type":48,"value":265},{"type":42,"tag":84,"props":4077,"children":4078},{"style":174},[4079],{"type":48,"value":2108},{"type":42,"tag":84,"props":4081,"children":4082},{"style":107},[4083],{"type":48,"value":4084},"https:\u002F\u002Fgraph.microsoft.com\u002Fv1.0\u002F$metadata#users\u002F$entity",{"type":42,"tag":84,"props":4086,"children":4087},{"style":174},[4088],{"type":48,"value":2099},{"type":42,"tag":84,"props":4090,"children":4091},{"style":174},[4092],{"type":48,"value":641},{"type":42,"tag":84,"props":4094,"children":4095},{"class":86,"line":123},[4096,4100,4105,4109,4113,4117,4121,4125],{"type":42,"tag":84,"props":4097,"children":4098},{"style":174},[4099],{"type":48,"value":2089},{"type":42,"tag":84,"props":4101,"children":4102},{"style":221},[4103],{"type":48,"value":4104},"displayName",{"type":42,"tag":84,"props":4106,"children":4107},{"style":174},[4108],{"type":48,"value":2099},{"type":42,"tag":84,"props":4110,"children":4111},{"style":174},[4112],{"type":48,"value":265},{"type":42,"tag":84,"props":4114,"children":4115},{"style":174},[4116],{"type":48,"value":2108},{"type":42,"tag":84,"props":4118,"children":4119},{"style":107},[4120],{"type":48,"value":3868},{"type":42,"tag":84,"props":4122,"children":4123},{"style":174},[4124],{"type":48,"value":2099},{"type":42,"tag":84,"props":4126,"children":4127},{"style":174},[4128],{"type":48,"value":641},{"type":42,"tag":84,"props":4130,"children":4131},{"class":86,"line":133},[4132,4136,4141,4145,4149,4153,4157,4161],{"type":42,"tag":84,"props":4133,"children":4134},{"style":174},[4135],{"type":48,"value":2089},{"type":42,"tag":84,"props":4137,"children":4138},{"style":221},[4139],{"type":48,"value":4140},"mail",{"type":42,"tag":84,"props":4142,"children":4143},{"style":174},[4144],{"type":48,"value":2099},{"type":42,"tag":84,"props":4146,"children":4147},{"style":174},[4148],{"type":48,"value":265},{"type":42,"tag":84,"props":4150,"children":4151},{"style":174},[4152],{"type":48,"value":2108},{"type":42,"tag":84,"props":4154,"children":4155},{"style":107},[4156],{"type":48,"value":3832},{"type":42,"tag":84,"props":4158,"children":4159},{"style":174},[4160],{"type":48,"value":2099},{"type":42,"tag":84,"props":4162,"children":4163},{"style":174},[4164],{"type":48,"value":641},{"type":42,"tag":84,"props":4166,"children":4167},{"class":86,"line":142},[4168,4172,4177,4181,4185,4189,4193,4197],{"type":42,"tag":84,"props":4169,"children":4170},{"style":174},[4171],{"type":48,"value":2089},{"type":42,"tag":84,"props":4173,"children":4174},{"style":221},[4175],{"type":48,"value":4176},"userPrincipalName",{"type":42,"tag":84,"props":4178,"children":4179},{"style":174},[4180],{"type":48,"value":2099},{"type":42,"tag":84,"props":4182,"children":4183},{"style":174},[4184],{"type":48,"value":265},{"type":42,"tag":84,"props":4186,"children":4187},{"style":174},[4188],{"type":48,"value":2108},{"type":42,"tag":84,"props":4190,"children":4191},{"style":107},[4192],{"type":48,"value":3832},{"type":42,"tag":84,"props":4194,"children":4195},{"style":174},[4196],{"type":48,"value":2099},{"type":42,"tag":84,"props":4198,"children":4199},{"style":174},[4200],{"type":48,"value":641},{"type":42,"tag":84,"props":4202,"children":4203},{"class":86,"line":681},[4204,4208,4213,4217,4221,4225,4229],{"type":42,"tag":84,"props":4205,"children":4206},{"style":174},[4207],{"type":48,"value":2089},{"type":42,"tag":84,"props":4209,"children":4210},{"style":221},[4211],{"type":48,"value":4212},"id",{"type":42,"tag":84,"props":4214,"children":4215},{"style":174},[4216],{"type":48,"value":2099},{"type":42,"tag":84,"props":4218,"children":4219},{"style":174},[4220],{"type":48,"value":265},{"type":42,"tag":84,"props":4222,"children":4223},{"style":174},[4224],{"type":48,"value":2108},{"type":42,"tag":84,"props":4226,"children":4227},{"style":107},[4228],{"type":48,"value":3796},{"type":42,"tag":84,"props":4230,"children":4231},{"style":174},[4232],{"type":48,"value":2775},{"type":42,"tag":84,"props":4234,"children":4235},{"class":86,"line":699},[4236],{"type":42,"tag":84,"props":4237,"children":4238},{"style":174},[4239],{"type":48,"value":1686},{"type":42,"tag":323,"props":4241,"children":4243},{"id":4242},"logout",[4244],{"type":48,"value":4245},"Logout",{"type":42,"tag":73,"props":4247,"children":4249},{"className":75,"code":4248,"language":77,"meta":78,"style":78},"curl \"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout?post_logout_redirect_uri=http:\u002F\u002Flocalhost:3000\"\n",[4250],{"type":42,"tag":57,"props":4251,"children":4252},{"__ignoreMap":78},[4253],{"type":42,"tag":84,"props":4254,"children":4255},{"class":86,"line":87},[4256,4260,4264,4269],{"type":42,"tag":84,"props":4257,"children":4258},{"style":101},[4259],{"type":48,"value":2028},{"type":42,"tag":84,"props":4261,"children":4262},{"style":174},[4263],{"type":48,"value":2108},{"type":42,"tag":84,"props":4265,"children":4266},{"style":107},[4267],{"type":48,"value":4268},"http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Flogout?post_logout_redirect_uri=http:\u002F\u002Flocalhost:3000",{"type":42,"tag":84,"props":4270,"children":4271},{"style":174},[4272],{"type":48,"value":2775},{"type":42,"tag":51,"props":4274,"children":4275},{},[4276,4278,4284],{"type":48,"value":4277},"Redirects to the ",{"type":42,"tag":57,"props":4279,"children":4281},{"className":4280},[],[4282],{"type":48,"value":4283},"post_logout_redirect_uri",{"type":48,"value":4285}," if provided and valid.",{"type":42,"tag":323,"props":4287,"children":4289},{"id":4288},"token-revocation",[4290],{"type":48,"value":4291},"Token Revocation",{"type":42,"tag":73,"props":4293,"children":4295},{"className":75,"code":4294,"language":77,"meta":78,"style":78},"curl -X POST http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Frevoke \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"token=microsoft_...\"\n",[4296],{"type":42,"tag":57,"props":4297,"children":4298},{"__ignoreMap":78},[4299,4323,4346],{"type":42,"tag":84,"props":4300,"children":4301},{"class":86,"line":87},[4302,4306,4310,4314,4319],{"type":42,"tag":84,"props":4303,"children":4304},{"style":101},[4305],{"type":48,"value":2028},{"type":42,"tag":84,"props":4307,"children":4308},{"style":107},[4309],{"type":48,"value":2993},{"type":42,"tag":84,"props":4311,"children":4312},{"style":107},[4313],{"type":48,"value":2998},{"type":42,"tag":84,"props":4315,"children":4316},{"style":107},[4317],{"type":48,"value":4318}," http:\u002F\u002Flocalhost:4005\u002Foauth2\u002Fv2.0\u002Frevoke",{"type":42,"tag":84,"props":4320,"children":4321},{"style":180},[4322],{"type":48,"value":3008},{"type":42,"tag":84,"props":4324,"children":4325},{"class":86,"line":97},[4326,4330,4334,4338,4342],{"type":42,"tag":84,"props":4327,"children":4328},{"style":107},[4329],{"type":48,"value":3016},{"type":42,"tag":84,"props":4331,"children":4332},{"style":174},[4333],{"type":48,"value":2108},{"type":42,"tag":84,"props":4335,"children":4336},{"style":107},[4337],{"type":48,"value":3025},{"type":42,"tag":84,"props":4339,"children":4340},{"style":174},[4341],{"type":48,"value":2099},{"type":42,"tag":84,"props":4343,"children":4344},{"style":180},[4345],{"type":48,"value":3008},{"type":42,"tag":84,"props":4347,"children":4348},{"class":86,"line":123},[4349,4353,4357,4362],{"type":42,"tag":84,"props":4350,"children":4351},{"style":107},[4352],{"type":48,"value":3041},{"type":42,"tag":84,"props":4354,"children":4355},{"style":174},[4356],{"type":48,"value":2108},{"type":42,"tag":84,"props":4358,"children":4359},{"style":107},[4360],{"type":48,"value":4361},"token=microsoft_...",{"type":42,"tag":84,"props":4363,"children":4364},{"style":174},[4365],{"type":48,"value":2775},{"type":42,"tag":51,"props":4367,"children":4368},{},[4369,4371,4377],{"type":48,"value":4370},"Returns ",{"type":42,"tag":57,"props":4372,"children":4374},{"className":4373},[],[4375],{"type":48,"value":4376},"200 OK",{"type":48,"value":4378},". The token is removed from the emulator's token map.",{"type":42,"tag":66,"props":4380,"children":4382},{"id":4381},"common-patterns",[4383],{"type":48,"value":4384},"Common Patterns",{"type":42,"tag":323,"props":4386,"children":4388},{"id":4387},"full-authorization-code-flow",[4389],{"type":48,"value":4390},"Full Authorization Code Flow",{"type":42,"tag":73,"props":4392,"children":4394},{"className":75,"code":4393,"language":77,"meta":78,"style":78},"MICROSOFT_URL=\"http:\u002F\u002Flocalhost:4005\"\nCLIENT_ID=\"example-client-id\"\nCLIENT_SECRET=\"example-client-secret\"\nREDIRECT_URI=\"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id\"\n\n# 1. Open in browser (user picks a seeded account)\n#    $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=openid+email+profile&response_type=code&state=abc\n\n# 2. After user selection, emulator redirects to:\n#    $REDIRECT_URI?code=\u003Ccode>&state=abc\n\n# 3. Exchange code for tokens\ncurl -X POST $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Ccode>&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&redirect_uri=$REDIRECT_URI&grant_type=authorization_code\"\n\n# 4. Fetch user info with the access_token\ncurl $MICROSOFT_URL\u002Foidc\u002Fuserinfo \\\n  -H \"Authorization: Bearer \u003Caccess_token>\"\n",[4395],{"type":42,"tag":57,"props":4396,"children":4397},{"__ignoreMap":78},[4398,4422,4447,4472,4496,4503,4511,4519,4526,4534,4542,4549,4557,4585,4608,4658,4665,4673,4693],{"type":42,"tag":84,"props":4399,"children":4400},{"class":86,"line":87},[4401,4405,4409,4413,4418],{"type":42,"tag":84,"props":4402,"children":4403},{"style":180},[4404],{"type":48,"value":1172},{"type":42,"tag":84,"props":4406,"children":4407},{"style":174},[4408],{"type":48,"value":234},{"type":42,"tag":84,"props":4410,"children":4411},{"style":174},[4412],{"type":48,"value":2099},{"type":42,"tag":84,"props":4414,"children":4415},{"style":107},[4416],{"type":48,"value":4417},"http:\u002F\u002Flocalhost:4005",{"type":42,"tag":84,"props":4419,"children":4420},{"style":174},[4421],{"type":48,"value":2775},{"type":42,"tag":84,"props":4423,"children":4424},{"class":86,"line":97},[4425,4430,4434,4438,4443],{"type":42,"tag":84,"props":4426,"children":4427},{"style":180},[4428],{"type":48,"value":4429},"CLIENT_ID",{"type":42,"tag":84,"props":4431,"children":4432},{"style":174},[4433],{"type":48,"value":234},{"type":42,"tag":84,"props":4435,"children":4436},{"style":174},[4437],{"type":48,"value":2099},{"type":42,"tag":84,"props":4439,"children":4440},{"style":107},[4441],{"type":48,"value":4442},"example-client-id",{"type":42,"tag":84,"props":4444,"children":4445},{"style":174},[4446],{"type":48,"value":2775},{"type":42,"tag":84,"props":4448,"children":4449},{"class":86,"line":123},[4450,4455,4459,4463,4468],{"type":42,"tag":84,"props":4451,"children":4452},{"style":180},[4453],{"type":48,"value":4454},"CLIENT_SECRET",{"type":42,"tag":84,"props":4456,"children":4457},{"style":174},[4458],{"type":48,"value":234},{"type":42,"tag":84,"props":4460,"children":4461},{"style":174},[4462],{"type":48,"value":2099},{"type":42,"tag":84,"props":4464,"children":4465},{"style":107},[4466],{"type":48,"value":4467},"example-client-secret",{"type":42,"tag":84,"props":4469,"children":4470},{"style":174},[4471],{"type":48,"value":2775},{"type":42,"tag":84,"props":4473,"children":4474},{"class":86,"line":133},[4475,4480,4484,4488,4492],{"type":42,"tag":84,"props":4476,"children":4477},{"style":180},[4478],{"type":48,"value":4479},"REDIRECT_URI",{"type":42,"tag":84,"props":4481,"children":4482},{"style":174},[4483],{"type":48,"value":234},{"type":42,"tag":84,"props":4485,"children":4486},{"style":174},[4487],{"type":48,"value":2099},{"type":42,"tag":84,"props":4489,"children":4490},{"style":107},[4491],{"type":48,"value":1281},{"type":42,"tag":84,"props":4493,"children":4494},{"style":174},[4495],{"type":48,"value":2775},{"type":42,"tag":84,"props":4497,"children":4498},{"class":86,"line":142},[4499],{"type":42,"tag":84,"props":4500,"children":4501},{"emptyLinePlaceholder":127},[4502],{"type":48,"value":130},{"type":42,"tag":84,"props":4504,"children":4505},{"class":86,"line":681},[4506],{"type":42,"tag":84,"props":4507,"children":4508},{"style":91},[4509],{"type":48,"value":4510},"# 1. Open in browser (user picks a seeded account)\n",{"type":42,"tag":84,"props":4512,"children":4513},{"class":86,"line":699},[4514],{"type":42,"tag":84,"props":4515,"children":4516},{"style":91},[4517],{"type":48,"value":4518},"#    $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=openid+email+profile&response_type=code&state=abc\n",{"type":42,"tag":84,"props":4520,"children":4521},{"class":86,"line":757},[4522],{"type":42,"tag":84,"props":4523,"children":4524},{"emptyLinePlaceholder":127},[4525],{"type":48,"value":130},{"type":42,"tag":84,"props":4527,"children":4528},{"class":86,"line":801},[4529],{"type":42,"tag":84,"props":4530,"children":4531},{"style":91},[4532],{"type":48,"value":4533},"# 2. After user selection, emulator redirects to:\n",{"type":42,"tag":84,"props":4535,"children":4536},{"class":86,"line":810},[4537],{"type":42,"tag":84,"props":4538,"children":4539},{"style":91},[4540],{"type":48,"value":4541},"#    $REDIRECT_URI?code=\u003Ccode>&state=abc\n",{"type":42,"tag":84,"props":4543,"children":4544},{"class":86,"line":827},[4545],{"type":42,"tag":84,"props":4546,"children":4547},{"emptyLinePlaceholder":127},[4548],{"type":48,"value":130},{"type":42,"tag":84,"props":4550,"children":4551},{"class":86,"line":880},[4552],{"type":42,"tag":84,"props":4553,"children":4554},{"style":91},[4555],{"type":48,"value":4556},"# 3. Exchange code for tokens\n",{"type":42,"tag":84,"props":4558,"children":4559},{"class":86,"line":888},[4560,4564,4568,4572,4577,4581],{"type":42,"tag":84,"props":4561,"children":4562},{"style":101},[4563],{"type":48,"value":2028},{"type":42,"tag":84,"props":4565,"children":4566},{"style":107},[4567],{"type":48,"value":2993},{"type":42,"tag":84,"props":4569,"children":4570},{"style":107},[4571],{"type":48,"value":2998},{"type":42,"tag":84,"props":4573,"children":4574},{"style":180},[4575],{"type":48,"value":4576}," $MICROSOFT_URL",{"type":42,"tag":84,"props":4578,"children":4579},{"style":107},[4580],{"type":48,"value":869},{"type":42,"tag":84,"props":4582,"children":4583},{"style":180},[4584],{"type":48,"value":3008},{"type":42,"tag":84,"props":4586,"children":4587},{"class":86,"line":905},[4588,4592,4596,4600,4604],{"type":42,"tag":84,"props":4589,"children":4590},{"style":107},[4591],{"type":48,"value":3016},{"type":42,"tag":84,"props":4593,"children":4594},{"style":174},[4595],{"type":48,"value":2108},{"type":42,"tag":84,"props":4597,"children":4598},{"style":107},[4599],{"type":48,"value":3025},{"type":42,"tag":84,"props":4601,"children":4602},{"style":174},[4603],{"type":48,"value":2099},{"type":42,"tag":84,"props":4605,"children":4606},{"style":180},[4607],{"type":48,"value":3008},{"type":42,"tag":84,"props":4609,"children":4610},{"class":86,"line":958},[4611,4615,4619,4624,4629,4634,4639,4644,4649,4654],{"type":42,"tag":84,"props":4612,"children":4613},{"style":107},[4614],{"type":48,"value":3041},{"type":42,"tag":84,"props":4616,"children":4617},{"style":174},[4618],{"type":48,"value":2108},{"type":42,"tag":84,"props":4620,"children":4621},{"style":107},[4622],{"type":48,"value":4623},"code=\u003Ccode>&client_id=",{"type":42,"tag":84,"props":4625,"children":4626},{"style":180},[4627],{"type":48,"value":4628},"$CLIENT_ID",{"type":42,"tag":84,"props":4630,"children":4631},{"style":107},[4632],{"type":48,"value":4633},"&client_secret=",{"type":42,"tag":84,"props":4635,"children":4636},{"style":180},[4637],{"type":48,"value":4638},"$CLIENT_SECRET",{"type":42,"tag":84,"props":4640,"children":4641},{"style":107},[4642],{"type":48,"value":4643},"&redirect_uri=",{"type":42,"tag":84,"props":4645,"children":4646},{"style":180},[4647],{"type":48,"value":4648},"$REDIRECT_URI",{"type":42,"tag":84,"props":4650,"children":4651},{"style":107},[4652],{"type":48,"value":4653},"&grant_type=authorization_code",{"type":42,"tag":84,"props":4655,"children":4656},{"style":174},[4657],{"type":48,"value":2775},{"type":42,"tag":84,"props":4659,"children":4660},{"class":86,"line":966},[4661],{"type":42,"tag":84,"props":4662,"children":4663},{"emptyLinePlaceholder":127},[4664],{"type":48,"value":130},{"type":42,"tag":84,"props":4666,"children":4667},{"class":86,"line":1003},[4668],{"type":42,"tag":84,"props":4669,"children":4670},{"style":91},[4671],{"type":48,"value":4672},"# 4. Fetch user info with the access_token\n",{"type":42,"tag":84,"props":4674,"children":4676},{"class":86,"line":4675},18,[4677,4681,4685,4689],{"type":42,"tag":84,"props":4678,"children":4679},{"style":101},[4680],{"type":48,"value":2028},{"type":42,"tag":84,"props":4682,"children":4683},{"style":180},[4684],{"type":48,"value":4576},{"type":42,"tag":84,"props":4686,"children":4687},{"style":107},[4688],{"type":48,"value":947},{"type":42,"tag":84,"props":4690,"children":4691},{"style":180},[4692],{"type":48,"value":3008},{"type":42,"tag":84,"props":4694,"children":4696},{"class":86,"line":4695},19,[4697,4701,4705,4710],{"type":42,"tag":84,"props":4698,"children":4699},{"style":107},[4700],{"type":48,"value":3016},{"type":42,"tag":84,"props":4702,"children":4703},{"style":174},[4704],{"type":48,"value":2108},{"type":42,"tag":84,"props":4706,"children":4707},{"style":107},[4708],{"type":48,"value":4709},"Authorization: Bearer \u003Caccess_token>",{"type":42,"tag":84,"props":4711,"children":4712},{"style":174},[4713],{"type":48,"value":2775},{"type":42,"tag":323,"props":4715,"children":4717},{"id":4716},"pkce-flow",[4718],{"type":48,"value":4719},"PKCE Flow",{"type":42,"tag":73,"props":4721,"children":4723},{"className":75,"code":4722,"language":77,"meta":78,"style":78},"CODE_VERIFIER=$(openssl rand -base64 32 | tr -d '=+\u002F' | cut -c1-43)\nCODE_CHALLENGE=$(echo -n $CODE_VERIFIER | openssl dgst -sha256 -binary | base64 | tr -d '=' | tr '+\u002F' '-_')\n\n# 1. Authorize with challenge\n# $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?...&code_challenge=$CODE_CHALLENGE&code_challenge_method=S256\n\n# 2. Token exchange with verifier\ncurl -X POST $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"code=\u003Ccode>&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&redirect_uri=$REDIRECT_URI&grant_type=authorization_code&code_verifier=$CODE_VERIFIER\"\n",[4724],{"type":42,"tag":57,"props":4725,"children":4726},{"__ignoreMap":78},[4727,4806,4929,4936,4944,4952,4959,4967,4994,5017],{"type":42,"tag":84,"props":4728,"children":4729},{"class":86,"line":87},[4730,4735,4740,4745,4750,4755,4760,4765,4770,4775,4779,4784,4788,4792,4797,4802],{"type":42,"tag":84,"props":4731,"children":4732},{"style":180},[4733],{"type":48,"value":4734},"CODE_VERIFIER",{"type":42,"tag":84,"props":4736,"children":4737},{"style":174},[4738],{"type":48,"value":4739},"=$(",{"type":42,"tag":84,"props":4741,"children":4742},{"style":101},[4743],{"type":48,"value":4744},"openssl",{"type":42,"tag":84,"props":4746,"children":4747},{"style":107},[4748],{"type":48,"value":4749}," rand",{"type":42,"tag":84,"props":4751,"children":4752},{"style":107},[4753],{"type":48,"value":4754}," -base64",{"type":42,"tag":84,"props":4756,"children":4757},{"style":295},[4758],{"type":48,"value":4759}," 32",{"type":42,"tag":84,"props":4761,"children":4762},{"style":174},[4763],{"type":48,"value":4764}," |",{"type":42,"tag":84,"props":4766,"children":4767},{"style":101},[4768],{"type":48,"value":4769}," tr",{"type":42,"tag":84,"props":4771,"children":4772},{"style":107},[4773],{"type":48,"value":4774}," -d",{"type":42,"tag":84,"props":4776,"children":4777},{"style":174},[4778],{"type":48,"value":198},{"type":42,"tag":84,"props":4780,"children":4781},{"style":107},[4782],{"type":48,"value":4783},"=+\u002F",{"type":42,"tag":84,"props":4785,"children":4786},{"style":174},[4787],{"type":48,"value":278},{"type":42,"tag":84,"props":4789,"children":4790},{"style":174},[4791],{"type":48,"value":4764},{"type":42,"tag":84,"props":4793,"children":4794},{"style":101},[4795],{"type":48,"value":4796}," cut",{"type":42,"tag":84,"props":4798,"children":4799},{"style":107},[4800],{"type":48,"value":4801}," -c1-43",{"type":42,"tag":84,"props":4803,"children":4804},{"style":174},[4805],{"type":48,"value":307},{"type":42,"tag":84,"props":4807,"children":4808},{"class":86,"line":97},[4809,4814,4818,4823,4828,4833,4838,4843,4848,4853,4858,4862,4867,4871,4875,4879,4883,4887,4891,4895,4899,4903,4908,4912,4916,4921,4925],{"type":42,"tag":84,"props":4810,"children":4811},{"style":180},[4812],{"type":48,"value":4813},"CODE_CHALLENGE",{"type":42,"tag":84,"props":4815,"children":4816},{"style":174},[4817],{"type":48,"value":4739},{"type":42,"tag":84,"props":4819,"children":4820},{"style":242},[4821],{"type":48,"value":4822},"echo",{"type":42,"tag":84,"props":4824,"children":4825},{"style":107},[4826],{"type":48,"value":4827}," -n",{"type":42,"tag":84,"props":4829,"children":4830},{"style":180},[4831],{"type":48,"value":4832}," $CODE_VERIFIER ",{"type":42,"tag":84,"props":4834,"children":4835},{"style":174},[4836],{"type":48,"value":4837},"|",{"type":42,"tag":84,"props":4839,"children":4840},{"style":101},[4841],{"type":48,"value":4842}," openssl",{"type":42,"tag":84,"props":4844,"children":4845},{"style":107},[4846],{"type":48,"value":4847}," dgst",{"type":42,"tag":84,"props":4849,"children":4850},{"style":107},[4851],{"type":48,"value":4852}," -sha256",{"type":42,"tag":84,"props":4854,"children":4855},{"style":107},[4856],{"type":48,"value":4857}," -binary",{"type":42,"tag":84,"props":4859,"children":4860},{"style":174},[4861],{"type":48,"value":4764},{"type":42,"tag":84,"props":4863,"children":4864},{"style":101},[4865],{"type":48,"value":4866}," base64",{"type":42,"tag":84,"props":4868,"children":4869},{"style":174},[4870],{"type":48,"value":4764},{"type":42,"tag":84,"props":4872,"children":4873},{"style":101},[4874],{"type":48,"value":4769},{"type":42,"tag":84,"props":4876,"children":4877},{"style":107},[4878],{"type":48,"value":4774},{"type":42,"tag":84,"props":4880,"children":4881},{"style":174},[4882],{"type":48,"value":198},{"type":42,"tag":84,"props":4884,"children":4885},{"style":107},[4886],{"type":48,"value":234},{"type":42,"tag":84,"props":4888,"children":4889},{"style":174},[4890],{"type":48,"value":278},{"type":42,"tag":84,"props":4892,"children":4893},{"style":174},[4894],{"type":48,"value":4764},{"type":42,"tag":84,"props":4896,"children":4897},{"style":101},[4898],{"type":48,"value":4769},{"type":42,"tag":84,"props":4900,"children":4901},{"style":174},[4902],{"type":48,"value":198},{"type":42,"tag":84,"props":4904,"children":4905},{"style":107},[4906],{"type":48,"value":4907},"+\u002F",{"type":42,"tag":84,"props":4909,"children":4910},{"style":174},[4911],{"type":48,"value":278},{"type":42,"tag":84,"props":4913,"children":4914},{"style":174},[4915],{"type":48,"value":198},{"type":42,"tag":84,"props":4917,"children":4918},{"style":107},[4919],{"type":48,"value":4920},"-_",{"type":42,"tag":84,"props":4922,"children":4923},{"style":174},[4924],{"type":48,"value":278},{"type":42,"tag":84,"props":4926,"children":4927},{"style":174},[4928],{"type":48,"value":307},{"type":42,"tag":84,"props":4930,"children":4931},{"class":86,"line":123},[4932],{"type":42,"tag":84,"props":4933,"children":4934},{"emptyLinePlaceholder":127},[4935],{"type":48,"value":130},{"type":42,"tag":84,"props":4937,"children":4938},{"class":86,"line":133},[4939],{"type":42,"tag":84,"props":4940,"children":4941},{"style":91},[4942],{"type":48,"value":4943},"# 1. Authorize with challenge\n",{"type":42,"tag":84,"props":4945,"children":4946},{"class":86,"line":142},[4947],{"type":42,"tag":84,"props":4948,"children":4949},{"style":91},[4950],{"type":48,"value":4951},"# $MICROSOFT_URL\u002Foauth2\u002Fv2.0\u002Fauthorize?...&code_challenge=$CODE_CHALLENGE&code_challenge_method=S256\n",{"type":42,"tag":84,"props":4953,"children":4954},{"class":86,"line":681},[4955],{"type":42,"tag":84,"props":4956,"children":4957},{"emptyLinePlaceholder":127},[4958],{"type":48,"value":130},{"type":42,"tag":84,"props":4960,"children":4961},{"class":86,"line":699},[4962],{"type":42,"tag":84,"props":4963,"children":4964},{"style":91},[4965],{"type":48,"value":4966},"# 2. Token exchange with verifier\n",{"type":42,"tag":84,"props":4968,"children":4969},{"class":86,"line":757},[4970,4974,4978,4982,4986,4990],{"type":42,"tag":84,"props":4971,"children":4972},{"style":101},[4973],{"type":48,"value":2028},{"type":42,"tag":84,"props":4975,"children":4976},{"style":107},[4977],{"type":48,"value":2993},{"type":42,"tag":84,"props":4979,"children":4980},{"style":107},[4981],{"type":48,"value":2998},{"type":42,"tag":84,"props":4983,"children":4984},{"style":180},[4985],{"type":48,"value":4576},{"type":42,"tag":84,"props":4987,"children":4988},{"style":107},[4989],{"type":48,"value":869},{"type":42,"tag":84,"props":4991,"children":4992},{"style":180},[4993],{"type":48,"value":3008},{"type":42,"tag":84,"props":4995,"children":4996},{"class":86,"line":801},[4997,5001,5005,5009,5013],{"type":42,"tag":84,"props":4998,"children":4999},{"style":107},[5000],{"type":48,"value":3016},{"type":42,"tag":84,"props":5002,"children":5003},{"style":174},[5004],{"type":48,"value":2108},{"type":42,"tag":84,"props":5006,"children":5007},{"style":107},[5008],{"type":48,"value":3025},{"type":42,"tag":84,"props":5010,"children":5011},{"style":174},[5012],{"type":48,"value":2099},{"type":42,"tag":84,"props":5014,"children":5015},{"style":180},[5016],{"type":48,"value":3008},{"type":42,"tag":84,"props":5018,"children":5019},{"class":86,"line":810},[5020,5024,5028,5032,5036,5040,5044,5048,5052,5057,5062],{"type":42,"tag":84,"props":5021,"children":5022},{"style":107},[5023],{"type":48,"value":3041},{"type":42,"tag":84,"props":5025,"children":5026},{"style":174},[5027],{"type":48,"value":2108},{"type":42,"tag":84,"props":5029,"children":5030},{"style":107},[5031],{"type":48,"value":4623},{"type":42,"tag":84,"props":5033,"children":5034},{"style":180},[5035],{"type":48,"value":4628},{"type":42,"tag":84,"props":5037,"children":5038},{"style":107},[5039],{"type":48,"value":4633},{"type":42,"tag":84,"props":5041,"children":5042},{"style":180},[5043],{"type":48,"value":4638},{"type":42,"tag":84,"props":5045,"children":5046},{"style":107},[5047],{"type":48,"value":4643},{"type":42,"tag":84,"props":5049,"children":5050},{"style":180},[5051],{"type":48,"value":4648},{"type":42,"tag":84,"props":5053,"children":5054},{"style":107},[5055],{"type":48,"value":5056},"&grant_type=authorization_code&code_verifier=",{"type":42,"tag":84,"props":5058,"children":5059},{"style":180},[5060],{"type":48,"value":5061},"$CODE_VERIFIER",{"type":42,"tag":84,"props":5063,"children":5064},{"style":174},[5065],{"type":48,"value":2775},{"type":42,"tag":323,"props":5067,"children":5069},{"id":5068},"oidc-discovery-based-setup",[5070],{"type":48,"value":5071},"OIDC Discovery-Based Setup",{"type":42,"tag":51,"props":5073,"children":5074},{},[5075],{"type":48,"value":5076},"Libraries that support OIDC discovery can auto-configure from the discovery document:",{"type":42,"tag":73,"props":5078,"children":5080},{"className":156,"code":5079,"language":158,"meta":78,"style":78},"import { Issuer } from 'openid-client'\n\nconst microsoftIssuer = await Issuer.discover(\n  process.env.MICROSOFT_EMULATOR_URL ?? 'https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Fv2.0'\n)\n\nconst client = new microsoftIssuer.Client({\n  client_id: process.env.MICROSOFT_CLIENT_ID,\n  client_secret: process.env.MICROSOFT_CLIENT_SECRET,\n  redirect_uris: ['http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fauth\u002Fcallback\u002Fmicrosoft-entra-id'],\n})\n",[5081],{"type":42,"tag":57,"props":5082,"children":5083},{"__ignoreMap":78},[5084,5121,5128,5166,5207,5214,5221,5263,5299,5335,5371],{"type":42,"tag":84,"props":5085,"children":5086},{"class":86,"line":87},[5087,5091,5095,5100,5104,5108,5112,5117],{"type":42,"tag":84,"props":5088,"children":5089},{"style":168},[5090],{"type":48,"value":171},{"type":42,"tag":84,"props":5092,"children":5093},{"style":174},[5094],{"type":48,"value":177},{"type":42,"tag":84,"props":5096,"children":5097},{"style":180},[5098],{"type":48,"value":5099}," Issuer",{"type":42,"tag":84,"props":5101,"children":5102},{"style":174},[5103],{"type":48,"value":188},{"type":42,"tag":84,"props":5105,"children":5106},{"style":168},[5107],{"type":48,"value":193},{"type":42,"tag":84,"props":5109,"children":5110},{"style":174},[5111],{"type":48,"value":198},{"type":42,"tag":84,"props":5113,"children":5114},{"style":107},[5115],{"type":48,"value":5116},"openid-client",{"type":42,"tag":84,"props":5118,"children":5119},{"style":174},[5120],{"type":48,"value":208},{"type":42,"tag":84,"props":5122,"children":5123},{"class":86,"line":97},[5124],{"type":42,"tag":84,"props":5125,"children":5126},{"emptyLinePlaceholder":127},[5127],{"type":48,"value":130},{"type":42,"tag":84,"props":5129,"children":5130},{"class":86,"line":123},[5131,5135,5140,5144,5148,5152,5156,5161],{"type":42,"tag":84,"props":5132,"children":5133},{"style":221},[5134],{"type":48,"value":224},{"type":42,"tag":84,"props":5136,"children":5137},{"style":180},[5138],{"type":48,"value":5139}," microsoftIssuer ",{"type":42,"tag":84,"props":5141,"children":5142},{"style":174},[5143],{"type":48,"value":234},{"type":42,"tag":84,"props":5145,"children":5146},{"style":168},[5147],{"type":48,"value":239},{"type":42,"tag":84,"props":5149,"children":5150},{"style":180},[5151],{"type":48,"value":5099},{"type":42,"tag":84,"props":5153,"children":5154},{"style":174},[5155],{"type":48,"value":622},{"type":42,"tag":84,"props":5157,"children":5158},{"style":242},[5159],{"type":48,"value":5160},"discover",{"type":42,"tag":84,"props":5162,"children":5163},{"style":180},[5164],{"type":48,"value":5165},"(\n",{"type":42,"tag":84,"props":5167,"children":5168},{"class":86,"line":133},[5169,5174,5178,5182,5186,5190,5194,5198,5203],{"type":42,"tag":84,"props":5170,"children":5171},{"style":180},[5172],{"type":48,"value":5173},"  process",{"type":42,"tag":84,"props":5175,"children":5176},{"style":174},[5177],{"type":48,"value":622},{"type":42,"tag":84,"props":5179,"children":5180},{"style":180},[5181],{"type":48,"value":627},{"type":42,"tag":84,"props":5183,"children":5184},{"style":174},[5185],{"type":48,"value":622},{"type":42,"tag":84,"props":5187,"children":5188},{"style":180},[5189],{"type":48,"value":1106},{"type":42,"tag":84,"props":5191,"children":5192},{"style":174},[5193],{"type":48,"value":1111},{"type":42,"tag":84,"props":5195,"children":5196},{"style":174},[5197],{"type":48,"value":198},{"type":42,"tag":84,"props":5199,"children":5200},{"style":107},[5201],{"type":48,"value":5202},"https:\u002F\u002Flogin.microsoftonline.com\u002Fcommon\u002Fv2.0",{"type":42,"tag":84,"props":5204,"children":5205},{"style":174},[5206],{"type":48,"value":208},{"type":42,"tag":84,"props":5208,"children":5209},{"class":86,"line":142},[5210],{"type":42,"tag":84,"props":5211,"children":5212},{"style":180},[5213],{"type":48,"value":307},{"type":42,"tag":84,"props":5215,"children":5216},{"class":86,"line":681},[5217],{"type":42,"tag":84,"props":5218,"children":5219},{"emptyLinePlaceholder":127},[5220],{"type":48,"value":130},{"type":42,"tag":84,"props":5222,"children":5223},{"class":86,"line":699},[5224,5228,5233,5237,5241,5246,5250,5255,5259],{"type":42,"tag":84,"props":5225,"children":5226},{"style":221},[5227],{"type":48,"value":224},{"type":42,"tag":84,"props":5229,"children":5230},{"style":180},[5231],{"type":48,"value":5232}," client ",{"type":42,"tag":84,"props":5234,"children":5235},{"style":174},[5236],{"type":48,"value":234},{"type":42,"tag":84,"props":5238,"children":5239},{"style":174},[5240],{"type":48,"value":1714},{"type":42,"tag":84,"props":5242,"children":5243},{"style":180},[5244],{"type":48,"value":5245}," microsoftIssuer",{"type":42,"tag":84,"props":5247,"children":5248},{"style":174},[5249],{"type":48,"value":622},{"type":42,"tag":84,"props":5251,"children":5252},{"style":242},[5253],{"type":48,"value":5254},"Client",{"type":42,"tag":84,"props":5256,"children":5257},{"style":180},[5258],{"type":48,"value":249},{"type":42,"tag":84,"props":5260,"children":5261},{"style":174},[5262],{"type":48,"value":600},{"type":42,"tag":84,"props":5264,"children":5265},{"class":86,"line":757},[5266,5271,5275,5279,5283,5287,5291,5295],{"type":42,"tag":84,"props":5267,"children":5268},{"style":257},[5269],{"type":48,"value":5270},"  client_id",{"type":42,"tag":84,"props":5272,"children":5273},{"style":174},[5274],{"type":48,"value":265},{"type":42,"tag":84,"props":5276,"children":5277},{"style":180},[5278],{"type":48,"value":617},{"type":42,"tag":84,"props":5280,"children":5281},{"style":174},[5282],{"type":48,"value":622},{"type":42,"tag":84,"props":5284,"children":5285},{"style":180},[5286],{"type":48,"value":627},{"type":42,"tag":84,"props":5288,"children":5289},{"style":174},[5290],{"type":48,"value":622},{"type":42,"tag":84,"props":5292,"children":5293},{"style":180},[5294],{"type":48,"value":636},{"type":42,"tag":84,"props":5296,"children":5297},{"style":174},[5298],{"type":48,"value":641},{"type":42,"tag":84,"props":5300,"children":5301},{"class":86,"line":801},[5302,5307,5311,5315,5319,5323,5327,5331],{"type":42,"tag":84,"props":5303,"children":5304},{"style":257},[5305],{"type":48,"value":5306},"  client_secret",{"type":42,"tag":84,"props":5308,"children":5309},{"style":174},[5310],{"type":48,"value":265},{"type":42,"tag":84,"props":5312,"children":5313},{"style":180},[5314],{"type":48,"value":617},{"type":42,"tag":84,"props":5316,"children":5317},{"style":174},[5318],{"type":48,"value":622},{"type":42,"tag":84,"props":5320,"children":5321},{"style":180},[5322],{"type":48,"value":627},{"type":42,"tag":84,"props":5324,"children":5325},{"style":174},[5326],{"type":48,"value":622},{"type":42,"tag":84,"props":5328,"children":5329},{"style":180},[5330],{"type":48,"value":674},{"type":42,"tag":84,"props":5332,"children":5333},{"style":174},[5334],{"type":48,"value":641},{"type":42,"tag":84,"props":5336,"children":5337},{"class":86,"line":810},[5338,5343,5347,5351,5355,5359,5363,5367],{"type":42,"tag":84,"props":5339,"children":5340},{"style":257},[5341],{"type":48,"value":5342},"  redirect_uris",{"type":42,"tag":84,"props":5344,"children":5345},{"style":174},[5346],{"type":48,"value":265},{"type":42,"tag":84,"props":5348,"children":5349},{"style":180},[5350],{"type":48,"value":1363},{"type":42,"tag":84,"props":5352,"children":5353},{"style":174},[5354],{"type":48,"value":278},{"type":42,"tag":84,"props":5356,"children":5357},{"style":107},[5358],{"type":48,"value":1281},{"type":42,"tag":84,"props":5360,"children":5361},{"style":174},[5362],{"type":48,"value":278},{"type":42,"tag":84,"props":5364,"children":5365},{"style":180},[5366],{"type":48,"value":1415},{"type":42,"tag":84,"props":5368,"children":5369},{"style":174},[5370],{"type":48,"value":641},{"type":42,"tag":84,"props":5372,"children":5373},{"class":86,"line":827},[5374,5378],{"type":42,"tag":84,"props":5375,"children":5376},{"style":174},[5377],{"type":48,"value":740},{"type":42,"tag":84,"props":5379,"children":5380},{"style":180},[5381],{"type":48,"value":307},{"type":42,"tag":5383,"props":5384,"children":5385},"style",{},[5386],{"type":48,"value":5387},"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);}",{"items":5389,"total":880},[5390,5404,5418,5441,5451,5472,5482],{"slug":5391,"name":5391,"fn":5392,"description":5393,"org":5394,"tags":5395,"stars":24,"repoUrl":25,"updatedAt":5403},"apple","emulate Apple Sign-in for local development","Emulated Sign in with Apple \u002F Apple OIDC for local development and testing. Use when the user needs to test Apple sign-in locally, emulate Apple OIDC discovery, handle Apple token exchange, configure Apple OAuth clients, or work with Apple userinfo without hitting real Apple APIs. Triggers include \"Apple OAuth\", \"emulate Apple\", \"mock Apple login\", \"test Apple sign-in\", \"Sign in with Apple\", \"Apple OIDC\", \"local Apple auth\", or any task requiring a local Apple OAuth\u002FOIDC provider.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5396,5398,5399,5400],{"name":5397,"slug":5391,"type":15},"Apple",{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":5401,"slug":5402,"type":15},"Testing","testing","2026-07-17T06:08:52.141606",{"slug":5405,"name":5405,"fn":5406,"description":5407,"org":5408,"tags":5409,"stars":24,"repoUrl":25,"updatedAt":5417},"aws","emulate AWS cloud services locally","Emulated AWS cloud services (S3, SQS, IAM, STS) for local development and testing. Use when the user needs to interact with AWS API endpoints locally, test S3 bucket and object operations, emulate SQS queues and messages, manage IAM users\u002Froles\u002Faccess keys, test STS assume role, or work without hitting real AWS APIs. Triggers include \"AWS emulator\", \"emulate AWS\", \"mock S3\", \"local SQS\", \"test IAM\", \"emulate S3\", \"AWS locally\", \"STS assume role\", or any task requiring local AWS service emulation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5410,5412,5415,5416],{"name":5411,"slug":5405,"type":15},"AWS",{"name":5413,"slug":5414,"type":15},"Cloud","cloud",{"name":17,"slug":18,"type":15},{"name":5401,"slug":5402,"type":15},"2026-07-17T06:08:52.818809",{"slug":203,"name":203,"fn":5419,"description":5420,"org":5421,"tags":5422,"stars":24,"repoUrl":25,"updatedAt":5440},"emulate developer APIs for local testing","Local drop-in API emulator for Vercel, GitHub, Google, Slack, Apple, Microsoft, AWS, Linear, and other developer APIs. Use when the user needs to start emulated services, configure seed data, write tests against local APIs, set up CI without network access, or work with the emulate CLI or programmatic API. Triggers include \"start the emulator\", \"emulate services\", \"mock API locally\", \"create emulator config\", \"test against local API\", \"npx emulate\", or any task requiring local service emulation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5423,5426,5427,5428,5431,5434,5435,5436,5439],{"name":5424,"slug":5425,"type":15},"API Development","api-development",{"name":5397,"slug":5391,"type":15},{"name":5411,"slug":5405,"type":15},{"name":5429,"slug":5430,"type":15},"GitHub","github",{"name":5432,"slug":5433,"type":15},"Linear","linear",{"name":17,"slug":18,"type":15},{"name":20,"slug":4,"type":15},{"name":5437,"slug":5438,"type":15},"Slack","slack",{"name":5401,"slug":5402,"type":15},"2026-07-17T06:08:59.816303",{"slug":5430,"name":5430,"fn":5442,"description":5443,"org":5444,"tags":5445,"stars":24,"repoUrl":25,"updatedAt":5450},"emulate GitHub API for local development","Emulated GitHub REST API for local development and testing. Use when the user needs to interact with GitHub API endpoints locally, test GitHub integrations, emulate repos\u002Fissues\u002FPRs, set up GitHub OAuth flows, configure GitHub Apps, test webhooks, or work with actions\u002Fchecks without hitting the real GitHub API. Triggers include \"GitHub API\", \"emulate GitHub\", \"mock GitHub\", \"test GitHub OAuth\", \"GitHub App JWT\", \"local GitHub\", or any task requiring a local GitHub API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5446,5447,5448,5449],{"name":5424,"slug":5425,"type":15},{"name":5429,"slug":5430,"type":15},{"name":17,"slug":18,"type":15},{"name":5401,"slug":5402,"type":15},"2026-07-17T06:05:55.104585",{"slug":5452,"name":5452,"fn":5453,"description":5454,"org":5455,"tags":5456,"stars":24,"repoUrl":25,"updatedAt":5471},"google","emulate Google services for local development","Emulated Google OAuth 2.0, OpenID Connect, Gmail, Calendar, and Drive for local development and testing. Use when the user needs to test Google sign-in locally, emulate OIDC discovery, handle Google token exchange, configure Google OAuth clients, work with Gmail messages\u002Fdrafts\u002Fthreads\u002Flabels, manage Calendar events, upload or list Drive files, or work with Google userinfo without hitting real Google APIs. Triggers include \"Google OAuth\", \"emulate Google\", \"mock Google login\", \"test Google sign-in\", \"OIDC emulator\", \"Google OIDC\", \"Gmail API\", \"Google Calendar\", \"Google Drive\", \"local Google auth\", or any task requiring a local Google API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5457,5458,5461,5463,5466,5469,5470],{"name":13,"slug":14,"type":15},{"name":5459,"slug":5460,"type":15},"Gmail","gmail",{"name":5462,"slug":5452,"type":15},"Google",{"name":5464,"slug":5465,"type":15},"Google Calendar","google-calendar",{"name":5467,"slug":5468,"type":15},"Google Drive","google-drive",{"name":17,"slug":18,"type":15},{"name":22,"slug":23,"type":15},"2026-07-17T06:08:59.475325",{"slug":5433,"name":5433,"fn":5473,"description":5474,"org":5475,"tags":5476,"stars":24,"repoUrl":25,"updatedAt":5481},"emulate Linear API for local development","Emulated Linear GraphQL API for local development and testing. Use when the user needs to test Linear integrations locally, emulate Linear issues, comments, teams, workflow states, OAuth apps, webhooks, agent sessions, or work with the Linear API without hitting the real Linear service. Triggers include \"Linear API\", \"emulate Linear\", \"mock Linear\", \"test Linear OAuth\", \"Linear webhook\", \"Linear agent\", \"local Linear\", or any task requiring a local Linear API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5477,5478,5479,5480],{"name":5424,"slug":5425,"type":15},{"name":5432,"slug":5433,"type":15},{"name":17,"slug":18,"type":15},{"name":5401,"slug":5402,"type":15},"2026-07-17T06:04:11.495374",{"slug":4,"name":4,"fn":5,"description":6,"org":5483,"tags":5484,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5485,5486,5487,5488],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":4,"type":15},{"name":22,"slug":23,"type":15},{"items":5490,"total":5654},[5491,5509,5519,5531,5544,5559,5571,5582,5595,5608,5620,5639],{"slug":5492,"name":5492,"fn":5493,"description":5494,"org":5495,"tags":5496,"stars":5506,"repoUrl":5507,"updatedAt":5508},"agent-browser","automate browser interactions for AI agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5497,5500,5503],{"name":5498,"slug":5499,"type":15},"Agents","agents",{"name":5501,"slug":5502,"type":15},"Automation","automation",{"name":5504,"slug":5505,"type":15},"Browser Automation","browser-automation",38346,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser","2026-07-20T05:55:17.314329",{"slug":5510,"name":5510,"fn":5511,"description":5512,"org":5513,"tags":5514,"stars":5506,"repoUrl":5507,"updatedAt":5518},"agentcore","run browser automation on AWS Bedrock","Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include \"use agentcore\", \"run on AWS\", \"cloud browser with AWS\", \"bedrock browser\", \"agentcore session\", or any task requiring AWS-hosted browser automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5515,5516,5517],{"name":5501,"slug":5502,"type":15},{"name":5411,"slug":5405,"type":15},{"name":5504,"slug":5505,"type":15},"2026-07-17T06:08:33.665276",{"slug":5520,"name":5520,"fn":5521,"description":5522,"org":5523,"tags":5524,"stars":5506,"repoUrl":5507,"updatedAt":5530},"core","navigate and interact with web pages","Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5525,5526,5527],{"name":5498,"slug":5499,"type":15},{"name":5504,"slug":5505,"type":15},{"name":5528,"slug":5529,"type":15},"Navigation","navigation","2026-07-26T05:47:42.378419",{"slug":5532,"name":5532,"fn":5533,"description":5534,"org":5535,"tags":5536,"stars":5506,"repoUrl":5507,"updatedAt":5543},"derive-client","reverse engineer internal APIs from browser traffic","Reverse-engineer a website's internal API by recording browser traffic into a HAR file, then generate a standalone client or CLI that calls the endpoints directly, with no browser needed after the first recording. Use when asked to \"derive a client\", \"build a CLI for \u003Csite>\", \"reverse engineer this site's API\", \"record network requests\", \"turn this site into an API\", or when the same site will be automated repeatedly and direct HTTP calls would beat driving the browser every time.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5537,5538,5539,5540],{"name":5424,"slug":5425,"type":15},{"name":5501,"slug":5502,"type":15},{"name":5504,"slug":5505,"type":15},{"name":5541,"slug":5542,"type":15},"Web Scraping","web-scraping","2026-07-20T06:24:11.928835",{"slug":5545,"name":5545,"fn":5546,"description":5547,"org":5548,"tags":5549,"stars":5506,"repoUrl":5507,"updatedAt":5558},"dogfood","perform exploratory testing on web applications","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5550,5551,5554,5557],{"name":5504,"slug":5505,"type":15},{"name":5552,"slug":5553,"type":15},"Debugging","debugging",{"name":5555,"slug":5556,"type":15},"QA","qa",{"name":5401,"slug":5402,"type":15},"2026-07-17T06:07:41.421482",{"slug":5560,"name":5560,"fn":5561,"description":5562,"org":5563,"tags":5564,"stars":5506,"repoUrl":5507,"updatedAt":5570},"electron","automate Electron desktop applications","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5565,5566,5567],{"name":5498,"slug":5499,"type":15},{"name":5504,"slug":5505,"type":15},{"name":5568,"slug":5569,"type":15},"Desktop","desktop","2026-07-17T06:08:28.007783",{"slug":5438,"name":5438,"fn":5572,"description":5573,"org":5574,"tags":5575,"stars":5506,"repoUrl":5507,"updatedAt":5581},"interact with Slack workspaces","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5576,5577,5580],{"name":5504,"slug":5505,"type":15},{"name":5578,"slug":5579,"type":15},"Messaging","messaging",{"name":5437,"slug":5438,"type":15},"2026-07-17T06:08:27.679015",{"slug":5583,"name":5583,"fn":5584,"description":5585,"org":5586,"tags":5587,"stars":5506,"repoUrl":5507,"updatedAt":5594},"vercel-sandbox","run browser automation in Vercel Sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5588,5589,5590,5591],{"name":5501,"slug":5502,"type":15},{"name":5504,"slug":5505,"type":15},{"name":5401,"slug":5402,"type":15},{"name":5592,"slug":5593,"type":15},"Vercel","vercel","2026-07-17T06:08:28.349899",{"slug":5596,"name":5596,"fn":5597,"description":5598,"org":5599,"tags":5600,"stars":5605,"repoUrl":5606,"updatedAt":5607},"deploy-to-vercel","deploy applications to Vercel","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5601,5604],{"name":5602,"slug":5603,"type":15},"Deployment","deployment",{"name":5592,"slug":5593,"type":15},28993,"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills","2026-07-17T06:08:41.18374",{"slug":5609,"name":5609,"fn":5610,"description":5611,"org":5612,"tags":5613,"stars":5605,"repoUrl":5606,"updatedAt":5619},"vercel-cli-with-tokens","manage Vercel projects via CLI","Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. \"deploy to vercel\", \"set up vercel\", \"add environment variables to vercel\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5614,5617,5618],{"name":5615,"slug":5616,"type":15},"CLI","cli",{"name":5602,"slug":5603,"type":15},{"name":5592,"slug":5593,"type":15},"2026-07-17T06:08:41.84179",{"slug":5621,"name":5621,"fn":5622,"description":5623,"org":5624,"tags":5625,"stars":5605,"repoUrl":5606,"updatedAt":5638},"vercel-composition-patterns","implement scalable React composition patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5626,5629,5632,5635],{"name":5627,"slug":5628,"type":15},"Best Practices","best-practices",{"name":5630,"slug":5631,"type":15},"Frontend","frontend",{"name":5633,"slug":5634,"type":15},"React","react",{"name":5636,"slug":5637,"type":15},"UI Components","ui-components","2026-07-17T06:05:40.576913",{"slug":5640,"name":5640,"fn":5641,"description":5642,"org":5643,"tags":5644,"stars":5605,"repoUrl":5606,"updatedAt":5653},"vercel-optimize","optimize Vercel project performance and costs","Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and version-aware Vercel\u002Fframework docs. Trigger for Vercel bill reduction, slow or expensive routes, caching opportunities, Function Invocations, Build Minutes, Fast Data Transfer, Core Web Vitals, Bot Management, Fluid compute, or cost breakdown requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5645,5648,5649,5652],{"name":5646,"slug":5647,"type":15},"Cost Optimization","cost-optimization",{"name":5602,"slug":5603,"type":15},{"name":5650,"slug":5651,"type":15},"Performance","performance",{"name":5592,"slug":5593,"type":15},"2026-07-17T06:04:08.327515",100]