@memberjunction/auth-providers 6.1.0-edge.2 → 6.1.0-edge.3

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 (47) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +61 -0
  3. package/LICENSE +180 -4
  4. package/README.md +71 -2
  5. package/dist/AuthProviderFactory.d.ts +17 -7
  6. package/dist/AuthProviderFactory.d.ts.map +1 -1
  7. package/dist/AuthProviderFactory.js +54 -8
  8. package/dist/AuthProviderFactory.js.map +1 -1
  9. package/dist/IEnvironmentConfigurableProvider.d.ts +51 -0
  10. package/dist/IEnvironmentConfigurableProvider.d.ts.map +1 -0
  11. package/dist/IEnvironmentConfigurableProvider.js +7 -0
  12. package/dist/IEnvironmentConfigurableProvider.js.map +1 -0
  13. package/dist/index.d.ts +1 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/providers/Auth0Provider.d.ts +7 -0
  18. package/dist/providers/Auth0Provider.d.ts.map +1 -1
  19. package/dist/providers/Auth0Provider.js +21 -0
  20. package/dist/providers/Auth0Provider.js.map +1 -1
  21. package/dist/providers/CognitoProvider.d.ts +6 -0
  22. package/dist/providers/CognitoProvider.d.ts.map +1 -1
  23. package/dist/providers/CognitoProvider.js +20 -0
  24. package/dist/providers/CognitoProvider.js.map +1 -1
  25. package/dist/providers/MSALProvider.d.ts +8 -0
  26. package/dist/providers/MSALProvider.d.ts.map +1 -1
  27. package/dist/providers/MSALProvider.js +21 -0
  28. package/dist/providers/MSALProvider.js.map +1 -1
  29. package/dist/providers/OktaProvider.d.ts +8 -0
  30. package/dist/providers/OktaProvider.d.ts.map +1 -1
  31. package/dist/providers/OktaProvider.js +22 -0
  32. package/dist/providers/OktaProvider.js.map +1 -1
  33. package/dist/providers/WorkOSProvider.d.ts +14 -0
  34. package/dist/providers/WorkOSProvider.d.ts.map +1 -1
  35. package/dist/providers/WorkOSProvider.js +26 -0
  36. package/dist/providers/WorkOSProvider.js.map +1 -1
  37. package/package.json +4 -3
  38. package/src/AuthProviderFactory.ts +56 -8
  39. package/src/IEnvironmentConfigurableProvider.ts +54 -0
  40. package/src/__tests__/BuiltInProviderRegistration.test.ts +37 -0
  41. package/src/__tests__/EnvironmentDiscovery.test.ts +146 -0
  42. package/src/index.ts +1 -0
  43. package/src/providers/Auth0Provider.ts +22 -0
  44. package/src/providers/CognitoProvider.ts +21 -0
  45. package/src/providers/MSALProvider.ts +22 -0
  46. package/src/providers/OktaProvider.ts +23 -0
  47. package/src/providers/WorkOSProvider.ts +27 -0
@@ -12,6 +12,28 @@ export class Auth0Provider extends BaseAuthProvider {
12
12
  super(config);
13
13
  }
14
14
 
15
+ /**
16
+ * Configures Auth0 from AUTH0_DOMAIN + AUTH0_CLIENT_ID (AUTH0_CLIENT_SECRET optional).
17
+ *
18
+ * Mapping preserved byte-for-byte from the env block that previously lived in MJServer's
19
+ * config, so a deployment upgrading to the hook-based discovery sees no change.
20
+ */
21
+ static ConfigFromEnvironment(env: NodeJS.ProcessEnv): AuthProviderConfig | null {
22
+ if (!env.AUTH0_DOMAIN || !env.AUTH0_CLIENT_ID) {
23
+ return null;
24
+ }
25
+ return {
26
+ name: 'auth0',
27
+ type: 'auth0',
28
+ issuer: `https://${env.AUTH0_DOMAIN}/`,
29
+ audience: env.AUTH0_CLIENT_ID,
30
+ jwksUri: `https://${env.AUTH0_DOMAIN}/.well-known/jwks.json`,
31
+ clientId: env.AUTH0_CLIENT_ID,
32
+ clientSecret: env.AUTH0_CLIENT_SECRET,
33
+ domain: env.AUTH0_DOMAIN
34
+ };
35
+ }
36
+
15
37
  /**
16
38
  * Extracts user information from Auth0 JWT payload
17
39
  */
@@ -13,6 +13,27 @@ export class CognitoProvider extends BaseAuthProvider {
13
13
  super(config);
14
14
  }
15
15
 
16
+ /**
17
+ * Configures Amazon Cognito from COGNITO_USER_POOL_ID + COGNITO_CLIENT_ID + AWS_REGION.
18
+ *
19
+ * Mapping preserved byte-for-byte from the env block that previously lived in MJServer's config.
20
+ */
21
+ static ConfigFromEnvironment(env: NodeJS.ProcessEnv): AuthProviderConfig | null {
22
+ if (!env.COGNITO_USER_POOL_ID || !env.COGNITO_CLIENT_ID || !env.AWS_REGION) {
23
+ return null;
24
+ }
25
+ return {
26
+ name: 'cognito',
27
+ type: 'cognito',
28
+ issuer: `https://cognito-idp.${env.AWS_REGION}.amazonaws.com/${env.COGNITO_USER_POOL_ID}`,
29
+ audience: env.COGNITO_CLIENT_ID,
30
+ jwksUri: `https://cognito-idp.${env.AWS_REGION}.amazonaws.com/${env.COGNITO_USER_POOL_ID}/.well-known/jwks.json`,
31
+ clientId: env.COGNITO_CLIENT_ID,
32
+ region: env.AWS_REGION,
33
+ userPoolId: env.COGNITO_USER_POOL_ID
34
+ };
35
+ }
36
+
16
37
  /**
17
38
  * Extracts user information from Cognito JWT payload
18
39
  */
@@ -12,6 +12,28 @@ export class MSALProvider extends BaseAuthProvider {
12
12
  super(config);
13
13
  }
14
14
 
15
+ /**
16
+ * Configures Microsoft Entra ID from TENANT_ID + WEB_CLIENT_ID.
17
+ *
18
+ * Mapping preserved byte-for-byte from the env block that previously lived in MJServer's
19
+ * config — including the provider name 'azure', which predates the Entra rename and is kept
20
+ * so existing deployments' registered provider names do not shift.
21
+ */
22
+ static ConfigFromEnvironment(env: NodeJS.ProcessEnv): AuthProviderConfig | null {
23
+ if (!env.TENANT_ID || !env.WEB_CLIENT_ID) {
24
+ return null;
25
+ }
26
+ return {
27
+ name: 'azure',
28
+ type: 'msal',
29
+ issuer: `https://login.microsoftonline.com/${env.TENANT_ID}/v2.0`,
30
+ audience: env.WEB_CLIENT_ID,
31
+ jwksUri: `https://login.microsoftonline.com/${env.TENANT_ID}/discovery/v2.0/keys`,
32
+ clientId: env.WEB_CLIENT_ID,
33
+ tenantId: env.TENANT_ID
34
+ };
35
+ }
36
+
15
37
  /**
16
38
  * Extracts user information from MSAL/Azure AD JWT payload
17
39
  */
@@ -13,6 +13,29 @@ export class OktaProvider extends BaseAuthProvider {
13
13
  super(config);
14
14
  }
15
15
 
16
+ /**
17
+ * Configures Okta from OKTA_DOMAIN + OKTA_CLIENT_ID, with OKTA_ISSUER overriding the issuer
18
+ * for orgs that use a custom authorization server rather than the default one.
19
+ *
20
+ * NEW capability: Okta had no env-var form before the discovery hook existed — it was one of
21
+ * the providers the old hard-coded block did not cover, so it required a config-file entry.
22
+ */
23
+ static ConfigFromEnvironment(env: NodeJS.ProcessEnv): AuthProviderConfig | null {
24
+ if (!env.OKTA_DOMAIN || !env.OKTA_CLIENT_ID) {
25
+ return null;
26
+ }
27
+ const issuer = env.OKTA_ISSUER || `https://${env.OKTA_DOMAIN}/oauth2/default`;
28
+ return {
29
+ name: 'okta',
30
+ type: 'okta',
31
+ issuer,
32
+ audience: env.OKTA_AUDIENCE || env.OKTA_CLIENT_ID,
33
+ jwksUri: `${issuer.replace(/\/$/, '')}/v1/keys`,
34
+ clientId: env.OKTA_CLIENT_ID,
35
+ domain: env.OKTA_DOMAIN
36
+ };
37
+ }
38
+
16
39
  /**
17
40
  * Extracts user information from Okta JWT payload
18
41
  */
@@ -34,6 +34,33 @@ export class WorkOSProvider extends BaseAuthProvider {
34
34
  super(config);
35
35
  }
36
36
 
37
+ /**
38
+ * Configures WorkOS AuthKit from WORKOS_CLIENT_ID.
39
+ *
40
+ * Issuer and JWKS are both derived from the client ID — AuthKit's issuer is
41
+ * https://api.workos.com/user_management/<clientId> and its JWKS lives at
42
+ * https://api.workos.com/sso/jwks/<clientId> — so a single variable is enough.
43
+ * WORKOS_AUDIENCE overrides the audience when a Resource Indicator is configured.
44
+ *
45
+ * NEW capability: WorkOS had no env-var form before the discovery hook existed.
46
+ *
47
+ * Remember the AuthKit email caveat: access tokens omit `email` unless a JWT Template adds it,
48
+ * and MJ resolves users by email. See WORKOS.md.
49
+ */
50
+ static ConfigFromEnvironment(env: NodeJS.ProcessEnv): AuthProviderConfig | null {
51
+ if (!env.WORKOS_CLIENT_ID) {
52
+ return null;
53
+ }
54
+ return {
55
+ name: 'workos',
56
+ type: 'workos',
57
+ issuer: `https://api.workos.com/user_management/${env.WORKOS_CLIENT_ID}`,
58
+ audience: env.WORKOS_AUDIENCE || env.WORKOS_CLIENT_ID,
59
+ jwksUri: `https://api.workos.com/sso/jwks/${env.WORKOS_CLIENT_ID}`,
60
+ clientId: env.WORKOS_CLIENT_ID
61
+ };
62
+ }
63
+
37
64
  /**
38
65
  * Extracts user information from a WorkOS AuthKit JWT payload.
39
66
  *