@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.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +61 -0
- package/LICENSE +180 -4
- package/README.md +71 -2
- package/dist/AuthProviderFactory.d.ts +17 -7
- package/dist/AuthProviderFactory.d.ts.map +1 -1
- package/dist/AuthProviderFactory.js +54 -8
- package/dist/AuthProviderFactory.js.map +1 -1
- package/dist/IEnvironmentConfigurableProvider.d.ts +51 -0
- package/dist/IEnvironmentConfigurableProvider.d.ts.map +1 -0
- package/dist/IEnvironmentConfigurableProvider.js +7 -0
- package/dist/IEnvironmentConfigurableProvider.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/Auth0Provider.d.ts +7 -0
- package/dist/providers/Auth0Provider.d.ts.map +1 -1
- package/dist/providers/Auth0Provider.js +21 -0
- package/dist/providers/Auth0Provider.js.map +1 -1
- package/dist/providers/CognitoProvider.d.ts +6 -0
- package/dist/providers/CognitoProvider.d.ts.map +1 -1
- package/dist/providers/CognitoProvider.js +20 -0
- package/dist/providers/CognitoProvider.js.map +1 -1
- package/dist/providers/MSALProvider.d.ts +8 -0
- package/dist/providers/MSALProvider.d.ts.map +1 -1
- package/dist/providers/MSALProvider.js +21 -0
- package/dist/providers/MSALProvider.js.map +1 -1
- package/dist/providers/OktaProvider.d.ts +8 -0
- package/dist/providers/OktaProvider.d.ts.map +1 -1
- package/dist/providers/OktaProvider.js +22 -0
- package/dist/providers/OktaProvider.js.map +1 -1
- package/dist/providers/WorkOSProvider.d.ts +14 -0
- package/dist/providers/WorkOSProvider.d.ts.map +1 -1
- package/dist/providers/WorkOSProvider.js +26 -0
- package/dist/providers/WorkOSProvider.js.map +1 -1
- package/package.json +4 -3
- package/src/AuthProviderFactory.ts +56 -8
- package/src/IEnvironmentConfigurableProvider.ts +54 -0
- package/src/__tests__/BuiltInProviderRegistration.test.ts +37 -0
- package/src/__tests__/EnvironmentDiscovery.test.ts +146 -0
- package/src/index.ts +1 -0
- package/src/providers/Auth0Provider.ts +22 -0
- package/src/providers/CognitoProvider.ts +21 -0
- package/src/providers/MSALProvider.ts +22 -0
- package/src/providers/OktaProvider.ts +23 -0
- 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
|
*
|