@mulverse/mulguard-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +24 -0
  2. package/adapters.d.ts +522 -0
  3. package/adapters.d.ts.map +1 -0
  4. package/adapters.js +170 -0
  5. package/errors.d.ts +429 -0
  6. package/errors.d.ts.map +1 -0
  7. package/errors.js +473 -0
  8. package/index.d.ts +547 -0
  9. package/index.d.ts.map +1 -0
  10. package/index.js +142 -0
  11. package/jwt.d.ts +132 -0
  12. package/jwt.d.ts.map +1 -0
  13. package/jwt.js +123 -0
  14. package/lib/actions/callback/handle-login.d.ts +35 -0
  15. package/lib/actions/callback/handle-login.d.ts.map +1 -0
  16. package/lib/actions/callback/handle-login.js +275 -0
  17. package/lib/actions/callback/index.d.ts +5 -0
  18. package/lib/actions/callback/index.d.ts.map +1 -0
  19. package/lib/actions/callback/index.js +409 -0
  20. package/lib/actions/callback/oauth/callback.d.ts +36 -0
  21. package/lib/actions/callback/oauth/callback.d.ts.map +1 -0
  22. package/lib/actions/callback/oauth/callback.js +248 -0
  23. package/lib/actions/callback/oauth/checks.d.ts +70 -0
  24. package/lib/actions/callback/oauth/checks.d.ts.map +1 -0
  25. package/lib/actions/callback/oauth/checks.js +188 -0
  26. package/lib/actions/callback/oauth/csrf-token.d.ts +33 -0
  27. package/lib/actions/callback/oauth/csrf-token.d.ts.map +1 -0
  28. package/lib/actions/callback/oauth/csrf-token.js +39 -0
  29. package/lib/actions/index.d.ts +6 -0
  30. package/lib/actions/index.d.ts.map +1 -0
  31. package/lib/actions/index.js +5 -0
  32. package/lib/actions/session.d.ts +5 -0
  33. package/lib/actions/session.d.ts.map +1 -0
  34. package/lib/actions/session.js +127 -0
  35. package/lib/actions/signin/authorization-url.d.ts +12 -0
  36. package/lib/actions/signin/authorization-url.d.ts.map +1 -0
  37. package/lib/actions/signin/authorization-url.js +94 -0
  38. package/lib/actions/signin/index.d.ts +4 -0
  39. package/lib/actions/signin/index.d.ts.map +1 -0
  40. package/lib/actions/signin/index.js +22 -0
  41. package/lib/actions/signin/send-token.d.ts +10 -0
  42. package/lib/actions/signin/send-token.d.ts.map +1 -0
  43. package/lib/actions/signin/send-token.js +98 -0
  44. package/lib/actions/signout.d.ts +11 -0
  45. package/lib/actions/signout.d.ts.map +1 -0
  46. package/lib/actions/signout.js +30 -0
  47. package/lib/actions/webauthn-options.d.ts +8 -0
  48. package/lib/actions/webauthn-options.d.ts.map +1 -0
  49. package/lib/actions/webauthn-options.js +60 -0
  50. package/lib/index.d.ts +2 -0
  51. package/lib/index.d.ts.map +1 -0
  52. package/lib/index.js +70 -0
  53. package/lib/init.d.ts +25 -0
  54. package/lib/init.d.ts.map +1 -0
  55. package/lib/init.js +172 -0
  56. package/lib/pages/error.d.ts +17 -0
  57. package/lib/pages/error.d.ts.map +1 -0
  58. package/lib/pages/error.js +40 -0
  59. package/lib/pages/index.d.ts +42 -0
  60. package/lib/pages/index.d.ts.map +1 -0
  61. package/lib/pages/index.js +136 -0
  62. package/lib/pages/signin.d.ts +10 -0
  63. package/lib/pages/signin.d.ts.map +1 -0
  64. package/lib/pages/signin.js +75 -0
  65. package/lib/pages/signout.d.ts +8 -0
  66. package/lib/pages/signout.d.ts.map +1 -0
  67. package/lib/pages/signout.js +17 -0
  68. package/lib/pages/styles.d.ts +3 -0
  69. package/lib/pages/styles.d.ts.map +1 -0
  70. package/lib/pages/styles.js +381 -0
  71. package/lib/pages/verify-request.d.ts +8 -0
  72. package/lib/pages/verify-request.d.ts.map +1 -0
  73. package/lib/pages/verify-request.js +11 -0
  74. package/lib/symbols.d.ts +50 -0
  75. package/lib/symbols.d.ts.map +1 -0
  76. package/lib/symbols.js +57 -0
  77. package/lib/utils/actions.d.ts +3 -0
  78. package/lib/utils/actions.d.ts.map +1 -0
  79. package/lib/utils/actions.js +14 -0
  80. package/lib/utils/assert.d.ts +14 -0
  81. package/lib/utils/assert.d.ts.map +1 -0
  82. package/lib/utils/assert.js +168 -0
  83. package/lib/utils/callback-url.d.ts +17 -0
  84. package/lib/utils/callback-url.d.ts.map +1 -0
  85. package/lib/utils/callback-url.js +27 -0
  86. package/lib/utils/cookie.d.ts +111 -0
  87. package/lib/utils/cookie.d.ts.map +1 -0
  88. package/lib/utils/cookie.js +205 -0
  89. package/lib/utils/date.d.ts +7 -0
  90. package/lib/utils/date.d.ts.map +1 -0
  91. package/lib/utils/date.js +8 -0
  92. package/lib/utils/email.d.ts +20 -0
  93. package/lib/utils/email.d.ts.map +1 -0
  94. package/lib/utils/email.js +57 -0
  95. package/lib/utils/env.d.ts +9 -0
  96. package/lib/utils/env.d.ts.map +1 -0
  97. package/lib/utils/env.js +96 -0
  98. package/lib/utils/logger.d.ts +18 -0
  99. package/lib/utils/logger.d.ts.map +1 -0
  100. package/lib/utils/logger.js +50 -0
  101. package/lib/utils/merge.d.ts +3 -0
  102. package/lib/utils/merge.d.ts.map +1 -0
  103. package/lib/utils/merge.js +23 -0
  104. package/lib/utils/providers.d.ts +19 -0
  105. package/lib/utils/providers.d.ts.map +1 -0
  106. package/lib/utils/providers.js +149 -0
  107. package/lib/utils/session.d.ts +7 -0
  108. package/lib/utils/session.d.ts.map +1 -0
  109. package/lib/utils/session.js +29 -0
  110. package/lib/utils/web.d.ts +10 -0
  111. package/lib/utils/web.d.ts.map +1 -0
  112. package/lib/utils/web.js +109 -0
  113. package/lib/utils/webauthn-client.d.ts +30 -0
  114. package/lib/utils/webauthn-client.d.ts.map +1 -0
  115. package/lib/utils/webauthn-client.js +197 -0
  116. package/lib/utils/webauthn-utils.d.ts +81 -0
  117. package/lib/utils/webauthn-utils.d.ts.map +1 -0
  118. package/lib/utils/webauthn-utils.js +343 -0
  119. package/lib/vendored/cookie.d.ts +120 -0
  120. package/lib/vendored/cookie.d.ts.map +1 -0
  121. package/lib/vendored/cookie.js +237 -0
  122. package/package.json +118 -0
  123. package/providers/42-school.d.ts +240 -0
  124. package/providers/42-school.d.ts.map +1 -0
  125. package/providers/42-school.js +78 -0
  126. package/providers/apple.d.ts +149 -0
  127. package/providers/apple.d.ts.map +1 -0
  128. package/providers/apple.js +104 -0
  129. package/providers/asgardeo.d.ts +102 -0
  130. package/providers/asgardeo.d.ts.map +1 -0
  131. package/providers/asgardeo.js +93 -0
  132. package/providers/atlassian.d.ts +94 -0
  133. package/providers/atlassian.d.ts.map +1 -0
  134. package/providers/atlassian.js +84 -0
  135. package/providers/auth0.d.ts +116 -0
  136. package/providers/auth0.d.ts.map +1 -0
  137. package/providers/auth0.js +49 -0
  138. package/providers/authentik.d.ts +90 -0
  139. package/providers/authentik.d.ts.map +1 -0
  140. package/providers/authentik.js +65 -0
  141. package/providers/azure-ad-b2c.d.ts +104 -0
  142. package/providers/azure-ad-b2c.d.ts.map +1 -0
  143. package/providers/azure-ad-b2c.js +100 -0
  144. package/providers/azure-ad.d.ts +19 -0
  145. package/providers/azure-ad.d.ts.map +1 -0
  146. package/providers/azure-ad.js +23 -0
  147. package/providers/azure-devops.d.ts +128 -0
  148. package/providers/azure-devops.d.ts.map +1 -0
  149. package/providers/azure-devops.js +158 -0
  150. package/providers/bankid-no.d.ts +134 -0
  151. package/providers/bankid-no.d.ts.map +1 -0
  152. package/providers/bankid-no.js +65 -0
  153. package/providers/battlenet.d.ts +85 -0
  154. package/providers/battlenet.d.ts.map +1 -0
  155. package/providers/battlenet.js +81 -0
  156. package/providers/beyondidentity.d.ts +77 -0
  157. package/providers/beyondidentity.d.ts.map +1 -0
  158. package/providers/beyondidentity.js +84 -0
  159. package/providers/bitbucket.d.ts +89 -0
  160. package/providers/bitbucket.d.ts.map +1 -0
  161. package/providers/bitbucket.js +92 -0
  162. package/providers/box.d.ts +63 -0
  163. package/providers/box.d.ts.map +1 -0
  164. package/providers/box.js +73 -0
  165. package/providers/boxyhq-saml.d.ts +121 -0
  166. package/providers/boxyhq-saml.d.ts.map +1 -0
  167. package/providers/boxyhq-saml.js +127 -0
  168. package/providers/bungie.d.ts +167 -0
  169. package/providers/bungie.d.ts.map +1 -0
  170. package/providers/bungie.js +174 -0
  171. package/providers/click-up.d.ts +75 -0
  172. package/providers/click-up.d.ts.map +1 -0
  173. package/providers/click-up.js +89 -0
  174. package/providers/cognito.d.ts +81 -0
  175. package/providers/cognito.d.ts.map +1 -0
  176. package/providers/cognito.js +73 -0
  177. package/providers/coinbase.d.ts +69 -0
  178. package/providers/coinbase.d.ts.map +1 -0
  179. package/providers/coinbase.js +78 -0
  180. package/providers/concept2.d.ts +81 -0
  181. package/providers/concept2.d.ts.map +1 -0
  182. package/providers/concept2.js +86 -0
  183. package/providers/credentials.d.ts +132 -0
  184. package/providers/credentials.d.ts.map +1 -0
  185. package/providers/credentials.js +74 -0
  186. package/providers/descope.d.ts +91 -0
  187. package/providers/descope.d.ts.map +1 -0
  188. package/providers/descope.js +78 -0
  189. package/providers/discord.d.ts +139 -0
  190. package/providers/discord.d.ts.map +1 -0
  191. package/providers/discord.js +86 -0
  192. package/providers/dribbble.d.ts +88 -0
  193. package/providers/dribbble.d.ts.map +1 -0
  194. package/providers/dribbble.js +85 -0
  195. package/providers/dropbox.d.ts +65 -0
  196. package/providers/dropbox.d.ts.map +1 -0
  197. package/providers/dropbox.js +88 -0
  198. package/providers/duende-identity-server6.d.ts +91 -0
  199. package/providers/duende-identity-server6.d.ts.map +1 -0
  200. package/providers/duende-identity-server6.js +80 -0
  201. package/providers/email.d.ts +41 -0
  202. package/providers/email.d.ts.map +1 -0
  203. package/providers/email.js +18 -0
  204. package/providers/eventbrite.d.ts +78 -0
  205. package/providers/eventbrite.d.ts.map +1 -0
  206. package/providers/eventbrite.js +88 -0
  207. package/providers/eveonline.d.ts +94 -0
  208. package/providers/eveonline.d.ts.map +1 -0
  209. package/providers/eveonline.js +92 -0
  210. package/providers/facebook.d.ts +84 -0
  211. package/providers/facebook.d.ts.map +1 -0
  212. package/providers/facebook.js +93 -0
  213. package/providers/faceit.d.ts +64 -0
  214. package/providers/faceit.d.ts.map +1 -0
  215. package/providers/faceit.js +74 -0
  216. package/providers/figma.d.ts +75 -0
  217. package/providers/figma.d.ts.map +1 -0
  218. package/providers/figma.js +81 -0
  219. package/providers/forwardemail.d.ts +4 -0
  220. package/providers/forwardemail.d.ts.map +1 -0
  221. package/providers/forwardemail.js +32 -0
  222. package/providers/foursquare.d.ts +71 -0
  223. package/providers/foursquare.d.ts.map +1 -0
  224. package/providers/foursquare.js +91 -0
  225. package/providers/freshbooks.d.ts +66 -0
  226. package/providers/freshbooks.d.ts.map +1 -0
  227. package/providers/freshbooks.js +76 -0
  228. package/providers/frontegg.d.ts +95 -0
  229. package/providers/frontegg.d.ts.map +1 -0
  230. package/providers/frontegg.js +88 -0
  231. package/providers/fusionauth.d.ts +279 -0
  232. package/providers/fusionauth.d.ts.map +1 -0
  233. package/providers/fusionauth.js +292 -0
  234. package/providers/github.d.ts +127 -0
  235. package/providers/github.d.ts.map +1 -0
  236. package/providers/github.js +115 -0
  237. package/providers/gitlab.d.ts +115 -0
  238. package/providers/gitlab.d.ts.map +1 -0
  239. package/providers/gitlab.js +75 -0
  240. package/providers/google.d.ts +138 -0
  241. package/providers/google.d.ts.map +1 -0
  242. package/providers/google.js +119 -0
  243. package/providers/hubspot.d.ts +76 -0
  244. package/providers/hubspot.d.ts.map +1 -0
  245. package/providers/hubspot.js +93 -0
  246. package/providers/huggingface.d.ts +216 -0
  247. package/providers/huggingface.d.ts.map +1 -0
  248. package/providers/huggingface.js +101 -0
  249. package/providers/identity-server4.d.ts +69 -0
  250. package/providers/identity-server4.d.ts.map +1 -0
  251. package/providers/identity-server4.js +64 -0
  252. package/providers/index.d.ts +61 -0
  253. package/providers/index.d.ts.map +1 -0
  254. package/providers/index.js +3 -0
  255. package/providers/instagram.d.ts +74 -0
  256. package/providers/instagram.d.ts.map +1 -0
  257. package/providers/instagram.js +87 -0
  258. package/providers/kakao.d.ts +148 -0
  259. package/providers/kakao.d.ts.map +1 -0
  260. package/providers/kakao.js +103 -0
  261. package/providers/keycloak.d.ts +100 -0
  262. package/providers/keycloak.d.ts.map +1 -0
  263. package/providers/keycloak.js +73 -0
  264. package/providers/kinde.d.ts +73 -0
  265. package/providers/kinde.d.ts.map +1 -0
  266. package/providers/kinde.js +51 -0
  267. package/providers/line.d.ts +83 -0
  268. package/providers/line.d.ts.map +1 -0
  269. package/providers/line.js +73 -0
  270. package/providers/linkedin.d.ts +77 -0
  271. package/providers/linkedin.d.ts.map +1 -0
  272. package/providers/linkedin.js +65 -0
  273. package/providers/logto.d.ts +98 -0
  274. package/providers/logto.d.ts.map +1 -0
  275. package/providers/logto.js +81 -0
  276. package/providers/loops.d.ts +40 -0
  277. package/providers/loops.d.ts.map +1 -0
  278. package/providers/loops.js +59 -0
  279. package/providers/mailchimp.d.ts +66 -0
  280. package/providers/mailchimp.d.ts.map +1 -0
  281. package/providers/mailchimp.js +76 -0
  282. package/providers/mailgun.d.ts +55 -0
  283. package/providers/mailgun.d.ts.map +1 -0
  284. package/providers/mailgun.js +74 -0
  285. package/providers/mailru.d.ts +63 -0
  286. package/providers/mailru.d.ts.map +1 -0
  287. package/providers/mailru.js +61 -0
  288. package/providers/mastodon.d.ts +90 -0
  289. package/providers/mastodon.d.ts.map +1 -0
  290. package/providers/mastodon.js +75 -0
  291. package/providers/mattermost.d.ts +132 -0
  292. package/providers/mattermost.d.ts.map +1 -0
  293. package/providers/mattermost.js +83 -0
  294. package/providers/medium.d.ts +68 -0
  295. package/providers/medium.d.ts.map +1 -0
  296. package/providers/medium.js +84 -0
  297. package/providers/microsoft-entra-id.d.ts +428 -0
  298. package/providers/microsoft-entra-id.d.ts.map +1 -0
  299. package/providers/microsoft-entra-id.js +156 -0
  300. package/providers/naver.d.ts +80 -0
  301. package/providers/naver.d.ts.map +1 -0
  302. package/providers/naver.js +79 -0
  303. package/providers/netlify.d.ts +66 -0
  304. package/providers/netlify.d.ts.map +1 -0
  305. package/providers/netlify.js +85 -0
  306. package/providers/netsuite.d.ts +189 -0
  307. package/providers/netsuite.d.ts.map +1 -0
  308. package/providers/netsuite.js +170 -0
  309. package/providers/nextcloud.d.ts +150 -0
  310. package/providers/nextcloud.d.ts.map +1 -0
  311. package/providers/nextcloud.js +99 -0
  312. package/providers/nodemailer.d.ts +27 -0
  313. package/providers/nodemailer.d.ts.map +1 -0
  314. package/providers/nodemailer.js +34 -0
  315. package/providers/notion.d.ts +99 -0
  316. package/providers/notion.d.ts.map +1 -0
  317. package/providers/notion.js +110 -0
  318. package/providers/oauth.d.ts +188 -0
  319. package/providers/oauth.d.ts.map +1 -0
  320. package/providers/oauth.js +1 -0
  321. package/providers/okta.d.ts +99 -0
  322. package/providers/okta.d.ts.map +1 -0
  323. package/providers/okta.js +63 -0
  324. package/providers/onelogin.d.ts +65 -0
  325. package/providers/onelogin.d.ts.map +1 -0
  326. package/providers/onelogin.js +61 -0
  327. package/providers/ory-hydra.d.ts +79 -0
  328. package/providers/ory-hydra.d.ts.map +1 -0
  329. package/providers/ory-hydra.js +67 -0
  330. package/providers/osso.d.ts +79 -0
  331. package/providers/osso.d.ts.map +1 -0
  332. package/providers/osso.js +77 -0
  333. package/providers/osu.d.ts +116 -0
  334. package/providers/osu.d.ts.map +1 -0
  335. package/providers/osu.js +75 -0
  336. package/providers/passage.d.ts +88 -0
  337. package/providers/passage.d.ts.map +1 -0
  338. package/providers/passage.js +75 -0
  339. package/providers/passkey.d.ts +65 -0
  340. package/providers/passkey.d.ts.map +1 -0
  341. package/providers/passkey.js +87 -0
  342. package/providers/patreon.d.ts +73 -0
  343. package/providers/patreon.d.ts.map +1 -0
  344. package/providers/patreon.js +77 -0
  345. package/providers/ping-id.d.ts +57 -0
  346. package/providers/ping-id.d.ts.map +1 -0
  347. package/providers/ping-id.js +40 -0
  348. package/providers/pinterest.d.ts +79 -0
  349. package/providers/pinterest.d.ts.map +1 -0
  350. package/providers/pinterest.js +85 -0
  351. package/providers/pipedrive.d.ts +99 -0
  352. package/providers/pipedrive.d.ts.map +1 -0
  353. package/providers/pipedrive.js +71 -0
  354. package/providers/postmark.d.ts +4 -0
  355. package/providers/postmark.d.ts.map +1 -0
  356. package/providers/postmark.js +36 -0
  357. package/providers/provider-types.d.ts +3 -0
  358. package/providers/provider-types.d.ts.map +1 -0
  359. package/providers/provider-types.js +1 -0
  360. package/providers/reddit.d.ts +88 -0
  361. package/providers/reddit.d.ts.map +1 -0
  362. package/providers/reddit.js +90 -0
  363. package/providers/resend.d.ts +4 -0
  364. package/providers/resend.d.ts.map +1 -0
  365. package/providers/resend.js +32 -0
  366. package/providers/roblox.d.ts +67 -0
  367. package/providers/roblox.d.ts.map +1 -0
  368. package/providers/roblox.js +53 -0
  369. package/providers/salesforce.d.ts +59 -0
  370. package/providers/salesforce.d.ts.map +1 -0
  371. package/providers/salesforce.js +52 -0
  372. package/providers/sendgrid.d.ts +4 -0
  373. package/providers/sendgrid.d.ts.map +1 -0
  374. package/providers/sendgrid.js +35 -0
  375. package/providers/simplelogin.d.ts +87 -0
  376. package/providers/simplelogin.d.ts.map +1 -0
  377. package/providers/simplelogin.js +83 -0
  378. package/providers/slack.d.ts +102 -0
  379. package/providers/slack.d.ts.map +1 -0
  380. package/providers/slack.js +69 -0
  381. package/providers/spotify.d.ts +75 -0
  382. package/providers/spotify.d.ts.map +1 -0
  383. package/providers/spotify.js +73 -0
  384. package/providers/strava.d.ts +68 -0
  385. package/providers/strava.d.ts.map +1 -0
  386. package/providers/strava.js +80 -0
  387. package/providers/threads.d.ts +108 -0
  388. package/providers/threads.d.ts.map +1 -0
  389. package/providers/threads.js +89 -0
  390. package/providers/tiktok.d.ts +248 -0
  391. package/providers/tiktok.d.ts.map +1 -0
  392. package/providers/tiktok.js +195 -0
  393. package/providers/todoist.d.ts +76 -0
  394. package/providers/todoist.d.ts.map +1 -0
  395. package/providers/todoist.js +97 -0
  396. package/providers/trakt.d.ts +93 -0
  397. package/providers/trakt.d.ts.map +1 -0
  398. package/providers/trakt.js +91 -0
  399. package/providers/twitch.d.ts +71 -0
  400. package/providers/twitch.d.ts.map +1 -0
  401. package/providers/twitch.js +96 -0
  402. package/providers/twitter.d.ts +183 -0
  403. package/providers/twitter.d.ts.map +1 -0
  404. package/providers/twitter.js +100 -0
  405. package/providers/united-effects.d.ts +80 -0
  406. package/providers/united-effects.d.ts.map +1 -0
  407. package/providers/united-effects.js +72 -0
  408. package/providers/vipps.d.ts +71 -0
  409. package/providers/vipps.d.ts.map +1 -0
  410. package/providers/vipps.js +33 -0
  411. package/providers/vk.d.ts +334 -0
  412. package/providers/vk.d.ts.map +1 -0
  413. package/providers/vk.js +103 -0
  414. package/providers/webauthn.d.ts +148 -0
  415. package/providers/webauthn.d.ts.map +1 -0
  416. package/providers/webauthn.js +128 -0
  417. package/providers/webex.d.ts +78 -0
  418. package/providers/webex.d.ts.map +1 -0
  419. package/providers/webex.js +73 -0
  420. package/providers/wechat.d.ts +78 -0
  421. package/providers/wechat.d.ts.map +1 -0
  422. package/providers/wechat.js +105 -0
  423. package/providers/wikimedia.d.ts +99 -0
  424. package/providers/wikimedia.d.ts.map +1 -0
  425. package/providers/wikimedia.js +90 -0
  426. package/providers/wordpress.d.ts +65 -0
  427. package/providers/wordpress.d.ts.map +1 -0
  428. package/providers/wordpress.js +71 -0
  429. package/providers/workos.d.ts +154 -0
  430. package/providers/workos.d.ts.map +1 -0
  431. package/providers/workos.js +143 -0
  432. package/providers/yandex.d.ts +131 -0
  433. package/providers/yandex.d.ts.map +1 -0
  434. package/providers/yandex.js +80 -0
  435. package/providers/zitadel.d.ts +117 -0
  436. package/providers/zitadel.d.ts.map +1 -0
  437. package/providers/zitadel.js +95 -0
  438. package/providers/zoho.d.ts +63 -0
  439. package/providers/zoho.d.ts.map +1 -0
  440. package/providers/zoho.js +79 -0
  441. package/providers/zoom.d.ts +93 -0
  442. package/providers/zoom.d.ts.map +1 -0
  443. package/providers/zoom.js +82 -0
  444. package/src/adapters/server-actions-helpers.ts +126 -0
  445. package/src/adapters.ts +603 -0
  446. package/src/errors.ts +551 -0
  447. package/src/index.ts +689 -0
  448. package/src/jwt.ts +283 -0
  449. package/src/lib/actions/callback/handle-login.ts +334 -0
  450. package/src/lib/actions/callback/index.ts +554 -0
  451. package/src/lib/actions/callback/oauth/callback.ts +347 -0
  452. package/src/lib/actions/callback/oauth/checks.ts +258 -0
  453. package/src/lib/actions/callback/oauth/csrf-token.ts +60 -0
  454. package/src/lib/actions/index.ts +5 -0
  455. package/src/lib/actions/session.ts +167 -0
  456. package/src/lib/actions/signin/authorization-url.ts +123 -0
  457. package/src/lib/actions/signin/index.ts +37 -0
  458. package/src/lib/actions/signin/send-token.ts +124 -0
  459. package/src/lib/actions/signout.ts +38 -0
  460. package/src/lib/actions/webauthn-options.ts +100 -0
  461. package/src/lib/index.ts +97 -0
  462. package/src/lib/init.ts +236 -0
  463. package/src/lib/pages/error.tsx +106 -0
  464. package/src/lib/pages/index.ts +181 -0
  465. package/src/lib/pages/signin.tsx +255 -0
  466. package/src/lib/pages/signout.tsx +49 -0
  467. package/src/lib/pages/styles.css +377 -0
  468. package/src/lib/pages/styles.ts +381 -0
  469. package/src/lib/pages/verify-request.tsx +36 -0
  470. package/src/lib/symbols.ts +60 -0
  471. package/src/lib/utils/actions.ts +17 -0
  472. package/src/lib/utils/assert.ts +259 -0
  473. package/src/lib/utils/callback-url.ts +42 -0
  474. package/src/lib/utils/cookie.ts +248 -0
  475. package/src/lib/utils/date.ts +8 -0
  476. package/src/lib/utils/email.ts +65 -0
  477. package/src/lib/utils/env.ts +113 -0
  478. package/src/lib/utils/logger.ts +75 -0
  479. package/src/lib/utils/merge.ts +30 -0
  480. package/src/lib/utils/providers.ts +203 -0
  481. package/src/lib/utils/session.ts +41 -0
  482. package/src/lib/utils/web.ts +151 -0
  483. package/src/lib/utils/webauthn-client.js +229 -0
  484. package/src/lib/utils/webauthn-utils.ts +531 -0
  485. package/src/lib/vendored/cookie.ts +383 -0
  486. package/src/providers/42-school.ts +256 -0
  487. package/src/providers/apple.ts +206 -0
  488. package/src/providers/asgardeo.ts +118 -0
  489. package/src/providers/atlassian.ts +120 -0
  490. package/src/providers/auth0.ts +127 -0
  491. package/src/providers/authentik.ts +100 -0
  492. package/src/providers/azure-ad-b2c.ts +124 -0
  493. package/src/providers/azure-ad.ts +30 -0
  494. package/src/providers/azure-devops.ts +184 -0
  495. package/src/providers/bankid-no.ts +161 -0
  496. package/src/providers/battlenet.ts +107 -0
  497. package/src/providers/beyondidentity.ts +102 -0
  498. package/src/providers/bitbucket.ts +122 -0
  499. package/src/providers/box.ts +87 -0
  500. package/src/providers/boxyhq-saml.ts +148 -0
  501. package/src/providers/bungie.ts +192 -0
  502. package/src/providers/click-up.ts +104 -0
  503. package/src/providers/cognito.ts +94 -0
  504. package/src/providers/coinbase.ts +93 -0
  505. package/src/providers/concept2.ts +108 -0
  506. package/src/providers/credentials.ts +157 -0
  507. package/src/providers/descope.ts +105 -0
  508. package/src/providers/discord.ts +176 -0
  509. package/src/providers/dribbble.ts +122 -0
  510. package/src/providers/dropbox.ts +102 -0
  511. package/src/providers/duende-identity-server6.ts +101 -0
  512. package/src/providers/email.ts +60 -0
  513. package/src/providers/eventbrite.ts +105 -0
  514. package/src/providers/eveonline.ts +117 -0
  515. package/src/providers/facebook.ts +119 -0
  516. package/src/providers/faceit.ts +90 -0
  517. package/src/providers/figma.ts +105 -0
  518. package/src/providers/forwardemail.ts +37 -0
  519. package/src/providers/foursquare.ts +105 -0
  520. package/src/providers/freshbooks.ts +90 -0
  521. package/src/providers/frontegg.ts +111 -0
  522. package/src/providers/fusionauth.ts +336 -0
  523. package/src/providers/github.ts +187 -0
  524. package/src/providers/gitlab.ts +140 -0
  525. package/src/providers/google.ts +152 -0
  526. package/src/providers/hubspot.ts +117 -0
  527. package/src/providers/huggingface.ts +234 -0
  528. package/src/providers/identity-server4.ts +78 -0
  529. package/src/providers/index.ts +115 -0
  530. package/src/providers/instagram.ts +103 -0
  531. package/src/providers/kakao.ts +184 -0
  532. package/src/providers/keycloak.ts +111 -0
  533. package/src/providers/kinde.ts +85 -0
  534. package/src/providers/line.ts +99 -0
  535. package/src/providers/linkedin.ts +91 -0
  536. package/src/providers/logto.ts +122 -0
  537. package/src/providers/loops.ts +79 -0
  538. package/src/providers/mailchimp.ts +90 -0
  539. package/src/providers/mailgun.ts +98 -0
  540. package/src/providers/mailru.ts +75 -0
  541. package/src/providers/mastodon.ts +112 -0
  542. package/src/providers/mattermost.ts +154 -0
  543. package/src/providers/medium.ts +89 -0
  544. package/src/providers/microsoft-entra-id.ts +497 -0
  545. package/src/providers/naver.ts +102 -0
  546. package/src/providers/netlify.ts +90 -0
  547. package/src/providers/netsuite.ts +225 -0
  548. package/src/providers/nextcloud.ts +207 -0
  549. package/src/providers/nodemailer.ts +84 -0
  550. package/src/providers/notion.ts +166 -0
  551. package/src/providers/oauth.ts +310 -0
  552. package/src/providers/okta.ts +111 -0
  553. package/src/providers/onelogin.ts +75 -0
  554. package/src/providers/ory-hydra.ts +93 -0
  555. package/src/providers/osso.ts +91 -0
  556. package/src/providers/osu.ts +138 -0
  557. package/src/providers/passage.ts +103 -0
  558. package/src/providers/passkey.ts +94 -0
  559. package/src/providers/patreon.ts +98 -0
  560. package/src/providers/ping-id.ts +68 -0
  561. package/src/providers/pinterest.ts +106 -0
  562. package/src/providers/pipedrive.ts +120 -0
  563. package/src/providers/postmark.ts +38 -0
  564. package/src/providers/provider-types.ts +107 -0
  565. package/src/providers/reddit.ts +104 -0
  566. package/src/providers/resend.ts +35 -0
  567. package/src/providers/roblox.ts +94 -0
  568. package/src/providers/salesforce.ts +73 -0
  569. package/src/providers/sendgrid.ts +36 -0
  570. package/src/providers/simplelogin.ts +107 -0
  571. package/src/providers/slack.ts +115 -0
  572. package/src/providers/spotify.ts +99 -0
  573. package/src/providers/strava.ts +101 -0
  574. package/src/providers/threads.ts +135 -0
  575. package/src/providers/tiktok.ts +319 -0
  576. package/src/providers/todoist.ts +122 -0
  577. package/src/providers/trakt.ts +120 -0
  578. package/src/providers/twitch.ts +121 -0
  579. package/src/providers/twitter.ts +207 -0
  580. package/src/providers/united-effects.ts +89 -0
  581. package/src/providers/vipps.ts +86 -0
  582. package/src/providers/vk.ts +401 -0
  583. package/src/providers/webauthn.ts +296 -0
  584. package/src/providers/webex.ts +102 -0
  585. package/src/providers/wechat.ts +141 -0
  586. package/src/providers/wikimedia.ts +258 -0
  587. package/src/providers/wordpress.ts +86 -0
  588. package/src/providers/workos.ts +180 -0
  589. package/src/providers/yandex.ts +159 -0
  590. package/src/providers/zitadel.ts +128 -0
  591. package/src/providers/zoho.ts +84 -0
  592. package/src/providers/zoom.ts +119 -0
  593. package/src/types.ts +430 -0
  594. package/src/warnings.ts +21 -0
  595. package/types.d.ts +309 -0
  596. package/types.d.ts.map +1 -0
  597. package/types.js +53 -0
  598. package/warnings.d.ts +17 -0
  599. package/warnings.d.ts.map +1 -0
  600. package/warnings.js +1 -0
@@ -0,0 +1,497 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#0072c6", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Microsoft Entra ID</b> integration.</span>
4
+ * <a href="https://learn.microsoft.com/en-us/entra/identity">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/microsoft-entra-id.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/microsoft-entra-id
10
+ */
11
+ import { conformInternal, customFetch } from "../lib/symbols.js"
12
+ import type { OIDCConfig, OIDCUserConfig } from "./index.js"
13
+
14
+ /**
15
+ * @see [Microsoft Identity Platform - ID token claims reference](https://learn.microsoft.com/en-us/entra/identity-platform/id-token-claims-reference)
16
+ * @see [Microsoft Identity Platform - Optional claims reference](https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims-reference)
17
+ */
18
+ export interface MicrosoftEntraIDProfile {
19
+ /**
20
+ * Identifies the intended recipient of the token. In `id_tokens`, the
21
+ * audience is your app's Application ID, assigned to your app in the Azure
22
+ * portal. This value should be validated. The token should be rejected if it
23
+ * fails to match your app's Application ID.
24
+ */
25
+ aud: string
26
+ /**
27
+ * Identifies the issuer, or "authorization server" that constructs and
28
+ * returns the token. It also identifies the tenant for which the user was
29
+ * authenticated. If the token was issued by the v2.0 endpoint, the URI ends
30
+ * in `/v2.0`. The GUID that indicates that the user is a consumer user from
31
+ * a Microsoft account is `9188040d-6c67-4c5b-b112-36a304b66dad`. Your app
32
+ * should use the GUID portion of the claim to restrict the set of tenants
33
+ * that can sign in to the app, if applicable. */
34
+ iss: string
35
+ /** Indicates when the authentication for the token occurred. */
36
+ iat: Date
37
+ /**
38
+ * Records the identity provider that authenticated the subject of the token.
39
+ * This value is identical to the value of the issuer claim unless the user
40
+ * account isn't in the same tenant as the issuer - guests, for instance. If
41
+ * the claim isn't present, it means that the value of `iss` can be used
42
+ * instead. For personal accounts being used in an organizational context
43
+ * (for instance, a personal account invited to a tenant), the `idp` claim
44
+ * may be 'live.com' or an STS URI containing the Microsoft account tenant
45
+ * `9188040d-6c67-4c5b-b112-36a304b66dad`.
46
+ */
47
+ idp: string
48
+ /**
49
+ * Identifies the time before which the JWT can't be accepted for processing.
50
+ */
51
+ nbf: Date
52
+ /**
53
+ * Identifies the expiration time on or after which the JWT can't be accepted
54
+ * for processing. In certain circumstances, a resource may reject the token
55
+ * before this time. For example, if a change in authentication is required
56
+ * or a token revocation has been detected.
57
+ */
58
+ exp: Date
59
+ /**
60
+ * The code hash is included in ID tokens only when the ID token is issued
61
+ * with an OAuth 2.0 authorization code. It can be used to validate the
62
+ * authenticity of an authorization code. To understand how to do this
63
+ * validation, see the
64
+ * [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken).
65
+ * This claim isn't returned on ID tokens from the /token endpoint.
66
+ */
67
+ c_hash: string
68
+ /**
69
+ * The access token hash is included in ID tokens only when the ID token is
70
+ * issued from the `/authorize` endpoint with an OAuth 2.0 access token. It
71
+ * can be used to validate the authenticity of an access token. To understand
72
+ * how to do this validation, see the
73
+ * [OpenID Connect specification](https://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken).
74
+ * This claim isn't returned on ID tokens from the `/token` endpoint.
75
+ */
76
+ at_hash: string
77
+ /**
78
+ * An internal claim that's used to record data for token reuse. Should be
79
+ * ignored.
80
+ */
81
+ aio: string
82
+ /**
83
+ * The primary username that represents the user. It could be an email
84
+ * address, phone number, or a generic username without a specified format.
85
+ * Its value is mutable and might change over time. Since it's mutable, this
86
+ * value can't be used to make authorization decisions. It can be used for
87
+ * username hints and in human-readable UI as a username. The `profile` scope
88
+ * is required to receive this claim. Present only in v2.0 tokens.
89
+ */
90
+ preferred_username: string
91
+ /**
92
+ * Present by default for guest accounts that have an email address. Your app
93
+ * can request the email claim for managed users (from the same tenant as the
94
+ * resource) using the `email`
95
+ * [optional claim](https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims).
96
+ * This value isn't guaranteed to be correct and is mutable over time. Never
97
+ * use it for authorization or to save data for a user. If you require an
98
+ * addressable email address in your app, request this data from the user
99
+ * directly by using this claim as a suggestion or prefill in your UX. On the
100
+ * v2.0 endpoint, your app can also request the `email` OpenID Connect
101
+ * scope - you don't need to request both the optional claim and the scope to
102
+ * get the claim.
103
+ */
104
+ email: string
105
+ /**
106
+ * The `name` claim provides a human-readable value that identifies the
107
+ * subject of the token. The value isn't guaranteed to be unique, it can be
108
+ * changed, and should be used only for display purposes. The `profile` scope
109
+ * is required to receive this claim.
110
+ */
111
+ name: string
112
+ /**
113
+ * The nonce matches the parameter included in the original authorize request
114
+ * to the IDP. If it doesn't match, your application should reject the token.
115
+ */
116
+ nonce: string
117
+ /**
118
+ * The immutable identifier for an object, in this case, a user account. This
119
+ * ID uniquely identifies the user across applications - two different
120
+ * applications signing in the same user receives the same value in the `oid`
121
+ * claim. Microsoft Graph returns this ID as the `id` property for a user
122
+ * account. Because the `oid` allows multiple apps to correlate users, the
123
+ * `profile` scope is required to receive this claim. If a single user exists
124
+ * in multiple tenants, the user contains a different object ID in each
125
+ * tenant - they're considered different accounts, even though the user logs
126
+ * into each account with the same credentials. The `oid` claim is a GUID and
127
+ * can't be reused.
128
+ */
129
+ oid: string
130
+ /** The set of roles that were assigned to the user who is logging in. */
131
+ roles: string[]
132
+ /** An internal claim used to revalidate tokens. Should be ignored. */
133
+ rh: string
134
+ /**
135
+ * The subject of the information in the token. For example, the user of an
136
+ * app. This value is immutable and can't be reassigned or reused. The
137
+ * subject is a pairwise identifier and is unique to an application ID. If a
138
+ * single user signs into two different apps using two different client IDs,
139
+ * those apps receive two different values for the subject claim. You may or
140
+ * may not want two values depending on your architecture and privacy
141
+ * requirements.
142
+ */
143
+ sub: string
144
+ /** Represents the tenant that the user is signing in to. For work and school
145
+ * accounts, the GUID is the immutable tenant ID of the organization that the
146
+ * user is signing in to. For sign-ins to the personal Microsoft account
147
+ * tenant (services like Xbox, Teams for Life, or Outlook), the value is
148
+ * `9188040d-6c67-4c5b-b112-36a304b66dad`.
149
+ */
150
+ tid: string
151
+ /**
152
+ * Represents an unique identifier for a session and will be generated when a
153
+ * new session is established.
154
+ */
155
+ sid: string
156
+ /**
157
+ * Token identifier claim, equivalent to jti in the JWT specification.
158
+ * Unique, per-token identifier that is case-sensitive.
159
+ */
160
+ uti: string
161
+ /** Indicates the version of the ID token. */
162
+ ver: "2.0"
163
+ /**
164
+ * If present, always true, denoting the user is in at least one group.
165
+ * Indicates that the client should use the Microsoft Graph API to determine
166
+ * the user's groups
167
+ * (`https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects`).
168
+ */
169
+ hasgroups: boolean
170
+ /**
171
+ * Users account status in tenant. If the user is a member of the tenant, the
172
+ * value is `0`. If they're a guest, the value is `1`.
173
+ */
174
+ acct: 0 | 1
175
+ /**
176
+ * Auth Context IDs. Indicates the Auth Context IDs of the operations that
177
+ * the bearer is eligible to perform. Auth Context IDs can be used to trigger
178
+ * a demand for step-up authentication from within your application and
179
+ * services. Often used along with the `xms_cc` claim.
180
+ */
181
+ acrs: string
182
+ /** Time when the user last authenticated. */
183
+ auth_time: Date
184
+ /**
185
+ * User's country/region. This claim is returned if it's present and the
186
+ * value of the field is a standard two-letter country/region code, such as
187
+ * FR, JP, SZ, and so on.
188
+ */
189
+ ctry: string
190
+ /**
191
+ * IP address. Adds the original address of the requesting client
192
+ * (when inside a VNET).
193
+ */
194
+ fwd: string
195
+ /**
196
+ * Optional formatting for group claims. The `groups` claim is used with the
197
+ * GroupMembershipClaims setting in the
198
+ * [application manifest](https://learn.microsoft.com/en-us/entra/identity-platform/reference-app-manifest),
199
+ * which must be set as well.
200
+ */
201
+ groups: string
202
+ /**
203
+ * Login hint. An opaque, reliable login hint claim that's base 64 encoded.
204
+ * Don't modify this value. This claim is the best value to use for the
205
+ * `login_hint` OAuth parameter in all flows to get SSO. It can be passed
206
+ * between applications to help them silently SSO as well - application A can
207
+ * sign in a user, read the `login_hint` claim, and then send the claim and
208
+ * the current tenant context to application B in the query string or
209
+ * fragment when the user selects on a link that takes them to application B.
210
+ * To avoid race conditions and reliability issues, the `login_hint` claim
211
+ * doesn't include the current tenant for the user, and defaults to the
212
+ * user's home tenant when used. In a guest scenario where the user is from
213
+ * another tenant, a tenant identifier must be provided in the sign-in
214
+ * request. and pass the same to apps you partner with. This claim is
215
+ * intended for use with your SDK's existing `login_hint` functionality,
216
+ * however that it exposed.
217
+ */
218
+ login_hint: string
219
+ /**
220
+ * Resource tenant's country/region. Same as `ctry` except set at a tenant
221
+ * level by an admin. Must also be a standard two-letter value.
222
+ */
223
+ tenant_ctry: string
224
+ /**
225
+ * Region of the resource tenant
226
+ */
227
+ tenant_region_scope: string
228
+ /**
229
+ * UserPrincipalName. An identifier for the user that can be used with the
230
+ * `username_hint` parameter. Not a durable identifier for the user and
231
+ * shouldn't be used for authorization or to uniquely identity user
232
+ * information (for example, as a database key). Instead, use the user object
233
+ * ID (`oid`) as a database key. For more information, see
234
+ * [Secure applications and APIs by validating claims](https://learn.microsoft.com/en-us/entra/identity-platform/claims-validation).
235
+ * Users signing in with an
236
+ * [alternate login ID](https://learn.microsoft.com/en-us/entra/identity/authentication/howto-authentication-use-email-signin)
237
+ * shouldn't be shown their User Principal Name (UPN). Instead, use the
238
+ * following ID token claims for displaying sign-in state to the user:
239
+ * `preferred_username` or `unique_name` for v1 tokens and
240
+ * `preferred_username` for v2 tokens. Although this claim is automatically
241
+ * included, you can specify it as an optional claim to attach other
242
+ * properties to modify its behavior in the guest user case. You should use
243
+ * the `login_hint` claim for `login_hint` use - human-readable identifiers
244
+ * like UPN are unreliable.
245
+ */
246
+ upn: string
247
+ /** Sourced from the user's PrimaryAuthoritativeEmail */
248
+ verified_primary_email: string[]
249
+ /** Sourced from the user's SecondaryAuthoritativeEmail */
250
+ verified_secondary_email: string[]
251
+ /** VNET specifier information. */
252
+ vnet: string
253
+ /**
254
+ * Client Capabilities. Indicates whether the client application that
255
+ * acquired the token is capable of handling claims challenges. It's often
256
+ * used along with claim `acrs`. This claim is commonly used in Conditional
257
+ * Access and Continuous Access Evaluation scenarios. The resource server or
258
+ * service application that the token is issued for controls the presence of
259
+ * this claim in a token. A value of `cp1` in the access token is the
260
+ * authoritative way to identify that a client application is capable of
261
+ * handling a claims challenge. For more information, see
262
+ * [Claims challenges, claims requests and client capabilities](https://learn.microsoft.com/en-us/entra/identity-platform/claims-challenge?tabs=dotnet).
263
+ */
264
+ xms_cc: string
265
+ /**
266
+ * Boolean value indicating whether the user's email domain owner has been
267
+ * verified. An email is considered to be domain verified if it belongs to
268
+ * the tenant where the user account resides and the tenant admin has done
269
+ * verification of the domain. Also, the email must be from a Microsoft
270
+ * account (MSA), a Google account, or used for authentication using the
271
+ * one-time passcode (OTP) flow. Facebook and SAML/WS-Fed accounts do not
272
+ * have verified domains. For this claim to be returned in the token, the
273
+ * presence of the `email` claim is required.
274
+ */
275
+ xms_edov: boolean
276
+ /**
277
+ * Preferred data location. For Multi-Geo tenants, the preferred data
278
+ * location is the three-letter code showing the geographic region the user
279
+ * is in. For more information, see the
280
+ * [Microsoft Entra Connect documentation about preferred data location](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-feature-preferreddatalocation).
281
+ */
282
+ xms_pdl: string
283
+ /**
284
+ * User preferred language. The user's preferred language, if set. Sourced
285
+ * from their home tenant, in guest access scenarios. Formatted LL-CC
286
+ * ("en-us").
287
+ */
288
+ xms_pl: string
289
+ /**
290
+ * Tenant preferred language. The resource tenant's preferred language, if
291
+ * set. Formatted LL ("en").
292
+ */
293
+ xms_tpl: string
294
+ /**
295
+ * Zero-touch Deployment ID. The device identity used for `Windows AutoPilot`.
296
+ */
297
+ ztdid: string
298
+ /** IP Address. The IP address the client logged in from. */
299
+ ipaddr: string
300
+ /** On-premises Security Identifier */
301
+ onprem_sid: string
302
+ /**
303
+ * Password Expiration Time. The number of seconds after the time in the
304
+ * `iat` claim at which the password expires. This claim is only included
305
+ * when the password is expiring soon (as defined by "notification days" in
306
+ * the password policy).
307
+ */
308
+ pwd_exp: number
309
+ /**
310
+ * Change Password URL. A URL that the user can visit to change their
311
+ * password. This claim is only included when the password is expiring soon
312
+ * (as defined by "notification days" in the password policy).
313
+ */
314
+ pwd_url: string
315
+ /**
316
+ * Inside Corporate Network. Signals if the client is logging in from the
317
+ * corporate network. If they're not, the claim isn't included. Based off of
318
+ * the
319
+ * [trusted IPs](https://learn.microsoft.com/en-us/entra/identity/authentication/howto-mfa-mfasettings#trusted-ips)
320
+ * settings in MFA.
321
+ */
322
+ in_corp: string
323
+ /**
324
+ * Last Name. Provides the last name, surname, or family name of the user as
325
+ * defined in the user object. For example, `"family_name":"Miller"`.
326
+ * Supported in MSA and Microsoft Entra ID. Requires the `profile` scope.
327
+ */
328
+ family_name: string
329
+ /**
330
+ * First name. Provides the first or "given" name of the user, as set on the
331
+ * user object. For example, `"given_name": "Frank"`. Supported in MSA and
332
+ * Microsoft Entra ID. Requires the `profile` scope.
333
+ */
334
+ given_name: string
335
+ }
336
+
337
+ /**
338
+ * ### Setup
339
+ *
340
+ * #### Callback URL
341
+ *
342
+ * ```
343
+ * https://example.com/api/auth/callback/microsoft-entra-id
344
+ * ```
345
+ *
346
+ * #### Environment Variables
347
+ *
348
+ * ```env
349
+ * AUTH_MICROSOFT_ENTRA_ID_ID="<Application (client) ID>"
350
+ * AUTH_MICROSOFT_ENTRA_ID_SECRET="<Client secret value>"
351
+ * AUTH_MICROSOFT_ENTRA_ID_ISSUER="https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0/"
352
+ * ```
353
+ *
354
+ * #### Configuration
355
+ *
356
+ * When the `issuer` parameter is omitted it will default to
357
+ * `"https://login.microsoftonline.com/common/v2.0/"`.
358
+ * This allows any Microsoft account (Personal, School or Work) to log in.
359
+ *
360
+ * ```typescript
361
+ * import MicrosoftEntraID from "@auth/core/providers/microsoft-entra-id"
362
+ * ...
363
+ * providers: [
364
+ * MicrosoftEntraID({
365
+ * clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID,
366
+ * clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET,
367
+ * }),
368
+ * ]
369
+ * ...
370
+ * ```
371
+ *
372
+ * To only allow your organization's users to log in you will need to configure
373
+ * the `issuer` parameter with your Directory (tenant) ID.
374
+ *
375
+ * ```env
376
+ * AUTH_MICROSOFT_ENTRA_ID_ISSUER="https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0/"
377
+ * ```
378
+ *
379
+ * ```typescript
380
+ * import MicrosoftEntraID from "@auth/core/providers/microsoft-entra-id"
381
+ * ...
382
+ * providers: [
383
+ * MicrosoftEntraID({
384
+ * clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID,
385
+ * clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET,
386
+ * issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER,
387
+ * }),
388
+ * ]
389
+ * ...
390
+ * ```
391
+ *
392
+ * ### Resources
393
+ *
394
+ * - [Microsoft Entra OAuth documentation](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow)
395
+ * - [Microsoft Entra OAuth apps](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app)
396
+ *
397
+ * ### Notes
398
+ *
399
+ * Microsoft Entra ID returns the profile picture in an ArrayBuffer, instead of
400
+ * just a URL to the image, so our provider converts it to a base64 encoded
401
+ * image string and returns that instead. See:
402
+ * https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples.
403
+ * The default image size is 48x48 to avoid
404
+ * [running out of space](https://next-auth.js.org/faq#json-web-tokens)
405
+ * in case the session is saved as a JWT.
406
+ *
407
+ * By default, Auth.js assumes that the Microsoft Entra ID provider is based on
408
+ * the [Open ID Connect](https://openid.net/specs/openid-connect-core-1_0.html)
409
+ * specification.
410
+ *
411
+ * :::tip
412
+ *
413
+ * The Microsoft Entra ID provider comes with a
414
+ * [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/microsoft-entra-id.ts).
415
+ * To override the defaults for your use case, check out
416
+ * [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
417
+ *
418
+ * :::
419
+ *
420
+ * :::info **Disclaimer**
421
+ *
422
+ * If you think you found a bug in the default configuration, you can
423
+ * [open an issue](https://authjs.dev/new/provider-issue).
424
+ *
425
+ * Auth.js strictly adheres to the specification and it cannot take
426
+ * responsibility for any deviation from the spec by the provider. You can open
427
+ * an issue, but if the problem is non-compliance with the spec, we might not
428
+ * pursue a resolution. You can ask for more help in
429
+ * [Discussions](https://authjs.dev/new/github-discussions).
430
+ *
431
+ * :::
432
+ */
433
+ export default function MicrosoftEntraID(
434
+ config: OIDCUserConfig<MicrosoftEntraIDProfile> & {
435
+ /**
436
+ * https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples
437
+ *
438
+ * @default 48
439
+ */
440
+ profilePhotoSize?: 48 | 64 | 96 | 120 | 240 | 360 | 432 | 504 | 648
441
+ }
442
+ ): OIDCConfig<MicrosoftEntraIDProfile> {
443
+ const { profilePhotoSize = 48 } = config
444
+
445
+ // If issuer is not set, first fallback to environment variable, then
446
+ // fallback to /common/ uri.
447
+ config.issuer ??=
448
+ process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER ||
449
+ "https://login.microsoftonline.com/common/v2.0"
450
+
451
+ return {
452
+ id: "microsoft-entra-id",
453
+ name: "Microsoft Entra ID",
454
+ type: "oidc",
455
+ authorization: { params: { scope: "openid profile email User.Read" } },
456
+ async profile(profile, tokens) {
457
+ // https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0&tabs=http#examples
458
+ const response = await fetch(
459
+ `https://graph.microsoft.com/v1.0/me/photos/${profilePhotoSize}x${profilePhotoSize}/$value`,
460
+ { headers: { Authorization: `Bearer ${tokens.access_token}` } }
461
+ )
462
+
463
+ // Confirm that profile photo was returned
464
+ let image
465
+ // TODO: Do this without Buffer
466
+ if (response.ok && typeof Buffer !== "undefined") {
467
+ try {
468
+ const pictureBuffer = await response.arrayBuffer()
469
+ const pictureBase64 = Buffer.from(pictureBuffer).toString("base64")
470
+ image = `data:image/jpeg;base64, ${pictureBase64}`
471
+ } catch {}
472
+ }
473
+
474
+ return {
475
+ id: profile.sub,
476
+ name: profile.name,
477
+ email: profile.email,
478
+ image: image ?? null,
479
+ }
480
+ },
481
+ style: { text: "#fff", bg: "#0072c6" },
482
+ async [customFetch](...args) {
483
+ const url = new URL(args[0] instanceof Request ? args[0].url : args[0])
484
+ if (url.pathname.endsWith(".well-known/openid-configuration")) {
485
+ const response = await fetch(...args)
486
+ const json = await response.clone().json()
487
+ const tenantRe = /microsoftonline\.com\/(\w+)\/v2\.0/
488
+ const tenantId = config.issuer?.match(tenantRe)?.[1] ?? "common"
489
+ const issuer = json.issuer.replace("{tenantid}", tenantId)
490
+ return Response.json({ ...json, issuer })
491
+ }
492
+ return fetch(...args)
493
+ },
494
+ [conformInternal]: true,
495
+ options: config,
496
+ }
497
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Naver</b> integration.</span>
4
+ * <a href="https://naver.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/naver.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/naver
10
+ */
11
+
12
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
13
+
14
+ /** https://developers.naver.com/docs/login/profile/profile.md */
15
+ export interface NaverProfile extends Record<string, any> {
16
+ resultcode: string
17
+ message: string
18
+ response: {
19
+ id: string
20
+ nickname?: string
21
+ name?: string
22
+ email?: string
23
+ gender?: "F" | "M" | "U"
24
+ age?: string
25
+ birthday?: string
26
+ profile_image?: string
27
+ birthyear?: string
28
+ mobile?: string
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Add Naver login to your page.
34
+ *
35
+ * ### Setup
36
+ *
37
+ * #### Callback URL
38
+ * ```
39
+ * https://example.com/api/auth/callback/naver
40
+ * ```
41
+ *
42
+ * #### Configuration
43
+ *```ts
44
+ * import { Auth } from "@auth/core"
45
+ * import Naver from "@auth/core/providers/naver"
46
+ *
47
+ * const request = new Request(origin)
48
+ * const response = await Auth(request, {
49
+ * providers: [
50
+ * Naver({ clientId: NAVER_CLIENT_ID, clientSecret: NAVER_CLIENT_SECRET }),
51
+ * ],
52
+ * })
53
+ * ```
54
+ *
55
+ * ### Resources
56
+ *
57
+ * - [Naver OAuth documentation](https://developers.naver.com/docs/login/overview/overview.md)
58
+ * - [Naver OAuth documentation 2](https://developers.naver.com/docs/login/api/api.md)
59
+ *
60
+ * ### Notes
61
+ *
62
+ * By default, Auth.js assumes that the Naver provider is
63
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
64
+ *
65
+ * :::tip
66
+ *
67
+ * The Naver provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/naver.ts).
68
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
69
+ *
70
+ * :::
71
+ *
72
+ * :::info **Disclaimer**
73
+ *
74
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
75
+ *
76
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
77
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
78
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
79
+ *
80
+ * :::
81
+ */
82
+ export default function Naver<P extends NaverProfile>(
83
+ options: OAuthUserConfig<P>
84
+ ): OAuthConfig<P> {
85
+ return {
86
+ id: "naver",
87
+ name: "Naver",
88
+ type: "oauth",
89
+ authorization: "https://nid.naver.com/oauth2.0/authorize",
90
+ token: "https://nid.naver.com/oauth2.0/token",
91
+ userinfo: "https://openapi.naver.com/v1/nid/me",
92
+ profile(profile) {
93
+ return {
94
+ id: profile.response.id,
95
+ name: profile.response.nickname,
96
+ email: profile.response.email,
97
+ image: profile.response.profile_image,
98
+ }
99
+ },
100
+ options,
101
+ }
102
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * <div class="provider" style={{backgroundColor: "#000", display: "flex", justifyContent: "space-between", color: "#fff", padding: 16}}>
3
+ * <span>Built-in <b>Netlify</b> integration.</span>
4
+ * <a href="https://netlify.com">
5
+ * <img style={{display: "block"}} src="https://authjs.dev/img/providers/netlify.svg" height="48" width="48"/>
6
+ * </a>
7
+ * </div>
8
+ *
9
+ * @module providers/netlify
10
+ */
11
+
12
+ import type { OAuthConfig, OAuthUserConfig } from "./index.js"
13
+
14
+ /**
15
+ * Add Netlify login to your page.
16
+ *
17
+ * ### Setup
18
+ *
19
+ * #### Callback URL
20
+ * ```
21
+ * https://example.com/api/auth/callback/netlify
22
+ * ```
23
+ *
24
+ * #### Configuration
25
+ *```ts
26
+ * import { Auth } from "@auth/core"
27
+ * import Netlify from "@auth/core/providers/netlify"
28
+ *
29
+ * const request = new Request(origin)
30
+ * const response = await Auth(request, {
31
+ * providers: [
32
+ * Netlify({
33
+ * clientId: NETLIFY_CLIENT_ID,
34
+ * clientSecret: NETLIFY_CLIENT_SECRET,
35
+ * }),
36
+ * ],
37
+ * })
38
+ * ```
39
+ *
40
+ * ### Resources
41
+ *
42
+ * - [Netlify OAuth blog](https://www.netlify.com/blog/2016/10/10/integrating-with-netlify-oauth2/)
43
+ * - [Netlify OAuth example](https://github.com/netlify/netlify-oauth-example/)
44
+ *
45
+ * ### Notes
46
+ *
47
+ * By default, Auth.js assumes that the Netlify provider is
48
+ * based on the [OAuth 2](https://www.rfc-editor.org/rfc/rfc6749.html) specification.
49
+ *
50
+ * :::tip
51
+ *
52
+ * The Netlify provider comes with a [default configuration](https://github.com/nextauthjs/next-auth/blob/main/packages/core/src/providers/netlify.ts).
53
+ * To override the defaults for your use case, check out [customizing a built-in OAuth provider](https://authjs.dev/guides/configuring-oauth-providers).
54
+ *
55
+ * :::
56
+ *
57
+ * :::info **Disclaimer**
58
+ *
59
+ * If you think you found a bug in the default configuration, you can [open an issue](https://authjs.dev/new/provider-issue).
60
+ *
61
+ * Auth.js strictly adheres to the specification and it cannot take responsibility for any deviation from
62
+ * the spec by the provider. You can open an issue, but if the problem is non-compliance with the spec,
63
+ * we might not pursue a resolution. You can ask for more help in [Discussions](https://authjs.dev/new/github-discussions).
64
+ *
65
+ * :::
66
+ */
67
+ export default function Netlify(
68
+ config: OAuthUserConfig<Record<string, any>>
69
+ ): OAuthConfig<Record<string, any>> {
70
+ return {
71
+ id: "netlify",
72
+ name: "Netlify",
73
+ type: "oauth",
74
+ authorization: "https://app.netlify.com/authorize?scope",
75
+ token: "https://api.netlify.com/oauth/token",
76
+ userinfo: "https://api.netlify.com/api/v1/user",
77
+ profile(profile) {
78
+ return {
79
+ id: profile.id,
80
+ name: profile.full_name,
81
+ email: profile.email,
82
+ image: profile.avatar_url,
83
+ }
84
+ },
85
+ style: {
86
+ brandColor: "#32e6e2",
87
+ },
88
+ options: config,
89
+ }
90
+ }