@maronn-openid-connect/core 0.0.1
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/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/access-token-issuer.d.ts +14 -0
- package/dist/access-token-issuer.d.ts.map +1 -0
- package/dist/access-token-issuer.js +32 -0
- package/dist/access-token-issuer.js.map +1 -0
- package/dist/access-token.d.ts +19 -0
- package/dist/access-token.d.ts.map +1 -0
- package/dist/access-token.js +46 -0
- package/dist/access-token.js.map +1 -0
- package/dist/auth-transaction.d.ts +86 -0
- package/dist/auth-transaction.d.ts.map +1 -0
- package/dist/auth-transaction.js +187 -0
- package/dist/auth-transaction.js.map +1 -0
- package/dist/authorization-code-grant.d.ts +15 -0
- package/dist/authorization-code-grant.d.ts.map +1 -0
- package/dist/authorization-code-grant.js +109 -0
- package/dist/authorization-code-grant.js.map +1 -0
- package/dist/authorization-code.d.ts +28 -0
- package/dist/authorization-code.d.ts.map +1 -0
- package/dist/authorization-code.js +41 -0
- package/dist/authorization-code.js.map +1 -0
- package/dist/authorization-request.d.ts +128 -0
- package/dist/authorization-request.d.ts.map +1 -0
- package/dist/authorization-request.js +457 -0
- package/dist/authorization-request.js.map +1 -0
- package/dist/client-auth.d.ts +16 -0
- package/dist/client-auth.d.ts.map +1 -0
- package/dist/client-auth.js +116 -0
- package/dist/client-auth.js.map +1 -0
- package/dist/crypto-utils.d.ts +18 -0
- package/dist/crypto-utils.d.ts.map +1 -0
- package/dist/crypto-utils.js +197 -0
- package/dist/crypto-utils.js.map +1 -0
- package/dist/discovery.d.ts +56 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +133 -0
- package/dist/discovery.js.map +1 -0
- package/dist/error-utils.d.ts +2 -0
- package/dist/error-utils.d.ts.map +1 -0
- package/dist/error-utils.js +13 -0
- package/dist/error-utils.js.map +1 -0
- package/dist/id-token.d.ts +39 -0
- package/dist/id-token.d.ts.map +1 -0
- package/dist/id-token.js +193 -0
- package/dist/id-token.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/introspection.d.ts +66 -0
- package/dist/introspection.d.ts.map +1 -0
- package/dist/introspection.js +139 -0
- package/dist/introspection.js.map +1 -0
- package/dist/jwks.d.ts +29 -0
- package/dist/jwks.d.ts.map +1 -0
- package/dist/jwks.js +36 -0
- package/dist/jwks.js.map +1 -0
- package/dist/loopback.d.ts +2 -0
- package/dist/loopback.d.ts.map +1 -0
- package/dist/loopback.js +6 -0
- package/dist/loopback.js.map +1 -0
- package/dist/refresh-token-grant.d.ts +14 -0
- package/dist/refresh-token-grant.d.ts.map +1 -0
- package/dist/refresh-token-grant.js +87 -0
- package/dist/refresh-token-grant.js.map +1 -0
- package/dist/request-object.d.ts +11 -0
- package/dist/request-object.d.ts.map +1 -0
- package/dist/request-object.js +92 -0
- package/dist/request-object.js.map +1 -0
- package/dist/revocation.d.ts +51 -0
- package/dist/revocation.d.ts.map +1 -0
- package/dist/revocation.js +93 -0
- package/dist/revocation.js.map +1 -0
- package/dist/signing-key.d.ts +21 -0
- package/dist/signing-key.d.ts.map +1 -0
- package/dist/signing-key.js +99 -0
- package/dist/signing-key.js.map +1 -0
- package/dist/token-error.d.ts +16 -0
- package/dist/token-error.d.ts.map +1 -0
- package/dist/token-error.js +31 -0
- package/dist/token-error.js.map +1 -0
- package/dist/token-request.d.ts +111 -0
- package/dist/token-request.d.ts.map +1 -0
- package/dist/token-request.js +44 -0
- package/dist/token-request.js.map +1 -0
- package/dist/token-response.d.ts +111 -0
- package/dist/token-response.d.ts.map +1 -0
- package/dist/token-response.js +173 -0
- package/dist/token-response.js.map +1 -0
- package/dist/userinfo.d.ts +98 -0
- package/dist/userinfo.d.ts.map +1 -0
- package/dist/userinfo.js +188 -0
- package/dist/userinfo.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export { TokenError, TokenErrorCode } from './token-error.js';
|
|
2
|
+
export { buildValidatedAuthorizationCodeRequest, consumeAuthorizationCode, resolveAuthorizationCode, validateAuthorizationCodeClient, validateAuthorizationCodeExpiration, validateAuthorizationCodeGrant, validateAuthorizationCodeRedirectUri, validateAuthorizationCodeUnused, verifyAuthorizationCodePkce, } from './authorization-code-grant.js';
|
|
3
|
+
export { buildValidatedRefreshTokenRequest, resolveRefreshToken, validateRefreshTokenClient, validateRefreshTokenExpiration, validateRefreshTokenGrant, validateRefreshTokenIdleTimeout, validateRefreshTokenScope, validateRefreshTokenUnused, } from './refresh-token-grant.js';
|
|
4
|
+
export type { ResolvedAuthorizationCode, } from './authorization-code-grant.js';
|
|
5
|
+
export type { ResolvedRefreshToken, } from './refresh-token-grant.js';
|
|
6
|
+
export interface TokenRequestParams {
|
|
7
|
+
grant_type: string;
|
|
8
|
+
code?: string;
|
|
9
|
+
redirect_uri?: string;
|
|
10
|
+
code_verifier?: string;
|
|
11
|
+
client_id?: string;
|
|
12
|
+
client_secret?: string;
|
|
13
|
+
refresh_token?: string;
|
|
14
|
+
scope?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TokenClientInfo {
|
|
17
|
+
clientId: string;
|
|
18
|
+
clientSecret?: string;
|
|
19
|
+
grantTypes?: string[];
|
|
20
|
+
tokenEndpointAuthMethod?: 'client_secret_basic' | 'client_secret_post' | 'none';
|
|
21
|
+
}
|
|
22
|
+
export interface TokenClientResolver {
|
|
23
|
+
findClient(clientId: string): Promise<TokenClientInfo | null>;
|
|
24
|
+
}
|
|
25
|
+
export interface AuthorizationCodeInfo {
|
|
26
|
+
code: string;
|
|
27
|
+
grantId: string;
|
|
28
|
+
clientId: string;
|
|
29
|
+
redirectUri: string;
|
|
30
|
+
redirectUriExplicit: boolean;
|
|
31
|
+
scope: string[];
|
|
32
|
+
codeChallenge?: string;
|
|
33
|
+
codeChallengeMethod?: 'S256';
|
|
34
|
+
expiresAt: number;
|
|
35
|
+
used: boolean;
|
|
36
|
+
nonce?: string;
|
|
37
|
+
audience?: string[];
|
|
38
|
+
acrValues?: string;
|
|
39
|
+
claims?: import('./userinfo.js').ClaimsParameter;
|
|
40
|
+
}
|
|
41
|
+
export interface AuthorizationCodeResolver {
|
|
42
|
+
findAuthorizationCode(code: string): Promise<AuthorizationCodeInfo | null>;
|
|
43
|
+
revokeAuthorizationCode(code: string): Promise<void>;
|
|
44
|
+
revokeTokensByGrantId?(grantId: string): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
export interface RefreshTokenInfo {
|
|
47
|
+
subject: string;
|
|
48
|
+
clientId: string;
|
|
49
|
+
scope: string[];
|
|
50
|
+
expiresAt: number;
|
|
51
|
+
used: boolean;
|
|
52
|
+
grantId: string;
|
|
53
|
+
iat?: number;
|
|
54
|
+
originalIssuedAt: number;
|
|
55
|
+
issuer?: string;
|
|
56
|
+
lastUsedAt?: number;
|
|
57
|
+
audience?: string[];
|
|
58
|
+
authTime: number;
|
|
59
|
+
nonce?: string;
|
|
60
|
+
acr?: string;
|
|
61
|
+
amr?: string[];
|
|
62
|
+
azp?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface RefreshTokenResolver {
|
|
65
|
+
resolve(token: string): Promise<RefreshTokenInfo | null>;
|
|
66
|
+
revokeRefreshToken(token: string): Promise<void>;
|
|
67
|
+
revokeTokensByGrantId?(grantId: string): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
export interface TokenRequestContext {
|
|
70
|
+
params: TokenRequestParams;
|
|
71
|
+
clientResolver: TokenClientResolver;
|
|
72
|
+
authCodeResolver: AuthorizationCodeResolver;
|
|
73
|
+
authenticatedClientId: string;
|
|
74
|
+
refreshTokenResolver?: RefreshTokenResolver;
|
|
75
|
+
supportedGrantTypes?: string[];
|
|
76
|
+
refreshTokenIdleTimeoutSeconds?: number;
|
|
77
|
+
}
|
|
78
|
+
export interface ValidatedAuthorizationCodeRequest {
|
|
79
|
+
grantType: 'authorization_code';
|
|
80
|
+
clientId: string;
|
|
81
|
+
code: string;
|
|
82
|
+
grantId: string;
|
|
83
|
+
redirectUri: string;
|
|
84
|
+
scope: string[];
|
|
85
|
+
nonce?: string;
|
|
86
|
+
audience?: string[];
|
|
87
|
+
acrValues?: string;
|
|
88
|
+
claims?: import('./userinfo.js').ClaimsParameter;
|
|
89
|
+
codeVerified: boolean;
|
|
90
|
+
}
|
|
91
|
+
export interface ValidatedRefreshTokenRequest {
|
|
92
|
+
grantType: 'refresh_token';
|
|
93
|
+
clientId: string;
|
|
94
|
+
subject: string;
|
|
95
|
+
scope: string[];
|
|
96
|
+
grantId: string;
|
|
97
|
+
audience?: string[];
|
|
98
|
+
authTime: number;
|
|
99
|
+
nonce?: string;
|
|
100
|
+
acr?: string;
|
|
101
|
+
amr?: string[];
|
|
102
|
+
azp?: string;
|
|
103
|
+
originalIssuedAt: number;
|
|
104
|
+
hadOfflineAccess: boolean;
|
|
105
|
+
}
|
|
106
|
+
export type ValidatedTokenRequest = ValidatedAuthorizationCodeRequest | ValidatedRefreshTokenRequest;
|
|
107
|
+
export declare function validateGrantTypeSupported(grantType: string | undefined, supportedGrantTypes?: string[]): 'authorization_code' | 'refresh_token';
|
|
108
|
+
export declare function resolveAuthenticatedTokenClient(authenticatedClientId: string, clientResolver: TokenClientResolver): Promise<TokenClientInfo>;
|
|
109
|
+
export declare function validateClientGrantType(client: TokenClientInfo, grantType: string): void;
|
|
110
|
+
export declare function validateTokenRequest(context: TokenRequestContext): Promise<ValidatedTokenRequest>;
|
|
111
|
+
//# sourceMappingURL=token-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-request.d.ts","sourceRoot":"","sources":["../src/token-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TokenError, TokenErrorCode } from './token-error.js';
|
|
2
|
+
import { validateAuthorizationCodeGrant } from './authorization-code-grant.js';
|
|
3
|
+
import { validateRefreshTokenGrant } from './refresh-token-grant.js';
|
|
4
|
+
export { TokenError, TokenErrorCode } from './token-error.js';
|
|
5
|
+
export { buildValidatedAuthorizationCodeRequest, consumeAuthorizationCode, resolveAuthorizationCode, validateAuthorizationCodeClient, validateAuthorizationCodeExpiration, validateAuthorizationCodeGrant, validateAuthorizationCodeRedirectUri, validateAuthorizationCodeUnused, verifyAuthorizationCodePkce, } from './authorization-code-grant.js';
|
|
6
|
+
export { buildValidatedRefreshTokenRequest, resolveRefreshToken, validateRefreshTokenClient, validateRefreshTokenExpiration, validateRefreshTokenGrant, validateRefreshTokenIdleTimeout, validateRefreshTokenScope, validateRefreshTokenUnused, } from './refresh-token-grant.js';
|
|
7
|
+
const DEFAULT_SUPPORTED_GRANT_TYPES = ['authorization_code', 'refresh_token'];
|
|
8
|
+
export function validateGrantTypeSupported(grantType, supportedGrantTypes = [...DEFAULT_SUPPORTED_GRANT_TYPES]) {
|
|
9
|
+
if (!grantType) {
|
|
10
|
+
throw new TokenError(TokenErrorCode.InvalidRequest, 'Missing required parameter: grant_type');
|
|
11
|
+
}
|
|
12
|
+
if ((grantType !== 'authorization_code' && grantType !== 'refresh_token') ||
|
|
13
|
+
!supportedGrantTypes.includes(grantType)) {
|
|
14
|
+
throw new TokenError(TokenErrorCode.UnsupportedGrantType, `Unsupported grant_type: ${grantType}`);
|
|
15
|
+
}
|
|
16
|
+
return grantType;
|
|
17
|
+
}
|
|
18
|
+
export async function resolveAuthenticatedTokenClient(authenticatedClientId, clientResolver) {
|
|
19
|
+
if (!authenticatedClientId) {
|
|
20
|
+
throw new TokenError(TokenErrorCode.InvalidClient, 'Client authentication required');
|
|
21
|
+
}
|
|
22
|
+
const client = await clientResolver.findClient(authenticatedClientId);
|
|
23
|
+
if (!client) {
|
|
24
|
+
throw new TokenError(TokenErrorCode.InvalidClient, 'Client authentication failed');
|
|
25
|
+
}
|
|
26
|
+
return client;
|
|
27
|
+
}
|
|
28
|
+
export function validateClientGrantType(client, grantType) {
|
|
29
|
+
const allowedGrantTypes = client.grantTypes ?? ['authorization_code'];
|
|
30
|
+
if (!allowedGrantTypes.includes(grantType)) {
|
|
31
|
+
throw new TokenError(TokenErrorCode.UnauthorizedClient, `Client is not authorized to use grant_type: ${grantType}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function validateTokenRequest(context) {
|
|
35
|
+
const { params, clientResolver, authenticatedClientId } = context;
|
|
36
|
+
const grantType = validateGrantTypeSupported(params.grant_type, context.supportedGrantTypes);
|
|
37
|
+
const client = await resolveAuthenticatedTokenClient(authenticatedClientId, clientResolver);
|
|
38
|
+
validateClientGrantType(client, grantType);
|
|
39
|
+
if (grantType === 'refresh_token') {
|
|
40
|
+
return validateRefreshTokenGrant(context);
|
|
41
|
+
}
|
|
42
|
+
return validateAuthorizationCodeGrant(context);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=token-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-request.js","sourceRoot":"","sources":["../src/token-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { IdTokenPayload } from './id-token.js';
|
|
2
|
+
import type { AccessTokenIssuer } from './access-token-issuer.js';
|
|
3
|
+
import type { AccessTokenPayload } from './access-token.js';
|
|
4
|
+
import type { UserClaims, ClaimsParameter } from './userinfo.js';
|
|
5
|
+
export type AcrResolver = (context: {
|
|
6
|
+
userId: string;
|
|
7
|
+
clientId: string;
|
|
8
|
+
requestedAcrValues?: string;
|
|
9
|
+
}) => Promise<{
|
|
10
|
+
acr: string;
|
|
11
|
+
amr: string[];
|
|
12
|
+
} | undefined>;
|
|
13
|
+
export interface TokenResponseOptions {
|
|
14
|
+
issuer: string;
|
|
15
|
+
subject: string;
|
|
16
|
+
clientId: string;
|
|
17
|
+
scope: string[];
|
|
18
|
+
privateKey: CryptoKey;
|
|
19
|
+
accessTokenExpiresIn: number;
|
|
20
|
+
idTokenExpiresIn: number;
|
|
21
|
+
keyId?: string;
|
|
22
|
+
idTokenPrivateKey?: CryptoKey;
|
|
23
|
+
idTokenKeyId?: string;
|
|
24
|
+
nonce?: string;
|
|
25
|
+
authTime?: number;
|
|
26
|
+
audience?: string[];
|
|
27
|
+
idTokenAudiences?: string[];
|
|
28
|
+
issueRefreshToken?: boolean;
|
|
29
|
+
refreshTokenExpiresIn?: number;
|
|
30
|
+
accessTokenIssuer?: AccessTokenIssuer;
|
|
31
|
+
issueIdToken?: boolean;
|
|
32
|
+
acrResolver?: AcrResolver;
|
|
33
|
+
requestedAcrValues?: string;
|
|
34
|
+
acr?: string;
|
|
35
|
+
amr?: string[];
|
|
36
|
+
userClaims?: UserClaims;
|
|
37
|
+
claims?: ClaimsParameter;
|
|
38
|
+
}
|
|
39
|
+
export interface TokenResponse {
|
|
40
|
+
access_token: string;
|
|
41
|
+
token_type: 'Bearer';
|
|
42
|
+
expires_in: number;
|
|
43
|
+
id_token?: string;
|
|
44
|
+
scope: string;
|
|
45
|
+
refresh_token?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface GenerateTokenResponseResult {
|
|
48
|
+
response: TokenResponse;
|
|
49
|
+
resolvedAcr?: string;
|
|
50
|
+
resolvedAmr?: string[];
|
|
51
|
+
accessTokenJti?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface AccessTokenAudienceInput {
|
|
54
|
+
userInfoEndpoint?: string;
|
|
55
|
+
requested?: string[];
|
|
56
|
+
issuer: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function buildAccessTokenAudience(input: AccessTokenAudienceInput): string[];
|
|
59
|
+
export interface IdTokenAudienceInput {
|
|
60
|
+
clientId: string;
|
|
61
|
+
additional?: string[];
|
|
62
|
+
}
|
|
63
|
+
export interface IdTokenAudienceResult {
|
|
64
|
+
aud: string | string[];
|
|
65
|
+
azp?: string;
|
|
66
|
+
}
|
|
67
|
+
export declare function buildIdTokenAudience(input: IdTokenAudienceInput): IdTokenAudienceResult;
|
|
68
|
+
export interface AccessTokenPayloadInput {
|
|
69
|
+
issuer: string;
|
|
70
|
+
subject: string;
|
|
71
|
+
clientId: string;
|
|
72
|
+
scope: string[];
|
|
73
|
+
audience?: string[];
|
|
74
|
+
expiresIn: number;
|
|
75
|
+
issuedAt?: number;
|
|
76
|
+
jti?: string;
|
|
77
|
+
}
|
|
78
|
+
export declare function buildAccessTokenPayload(input: AccessTokenPayloadInput): AccessTokenPayload;
|
|
79
|
+
export declare function computeAtHash(accessToken: string, idTokenPrivateKey: CryptoKey): Promise<string>;
|
|
80
|
+
export interface ResolveAcrAmrInput {
|
|
81
|
+
subject: string;
|
|
82
|
+
clientId: string;
|
|
83
|
+
acr?: string;
|
|
84
|
+
amr?: string[];
|
|
85
|
+
requestedAcrValues?: string;
|
|
86
|
+
claims?: ClaimsParameter;
|
|
87
|
+
acrResolver?: AcrResolver;
|
|
88
|
+
}
|
|
89
|
+
export interface ResolvedAcrAmr {
|
|
90
|
+
acr?: string;
|
|
91
|
+
amr?: string[];
|
|
92
|
+
}
|
|
93
|
+
export declare function resolveAcrAmr(input: ResolveAcrAmrInput): Promise<ResolvedAcrAmr>;
|
|
94
|
+
export interface IdTokenPayloadInput {
|
|
95
|
+
issuer: string;
|
|
96
|
+
subject: string;
|
|
97
|
+
clientId: string;
|
|
98
|
+
scope: string[];
|
|
99
|
+
expiresIn: number;
|
|
100
|
+
issuedAt?: number;
|
|
101
|
+
atHash?: string;
|
|
102
|
+
nonce?: string;
|
|
103
|
+
authTime?: number;
|
|
104
|
+
acr?: string;
|
|
105
|
+
amr?: string[];
|
|
106
|
+
idTokenAudiences?: string[];
|
|
107
|
+
userClaims?: UserClaims;
|
|
108
|
+
}
|
|
109
|
+
export declare function buildIdTokenPayload(input: IdTokenPayloadInput): IdTokenPayload;
|
|
110
|
+
export declare function generateTokenResponse(options: TokenResponseOptions): Promise<GenerateTokenResponseResult>;
|
|
111
|
+
//# sourceMappingURL=token-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-response.d.ts","sourceRoot":"","sources":["../src/token-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { generateIdToken } from './id-token.js';
|
|
2
|
+
import { arrayBufferToBase64Url, stringToArrayBuffer, generateRandomString, getJwaAlgorithm, jwaToHashName } from './crypto-utils.js';
|
|
3
|
+
import { createJwtAccessTokenIssuer } from './access-token-issuer.js';
|
|
4
|
+
import { filterClaimsByScope } from './userinfo.js';
|
|
5
|
+
export function buildAccessTokenAudience(input) {
|
|
6
|
+
const { userInfoEndpoint, requested, issuer } = input;
|
|
7
|
+
const members = [];
|
|
8
|
+
if (userInfoEndpoint) {
|
|
9
|
+
members.push(userInfoEndpoint);
|
|
10
|
+
}
|
|
11
|
+
if (requested) {
|
|
12
|
+
members.push(...requested);
|
|
13
|
+
}
|
|
14
|
+
const deduped = [...new Set(members)];
|
|
15
|
+
return deduped.length > 0 ? deduped : [issuer];
|
|
16
|
+
}
|
|
17
|
+
export function buildIdTokenAudience(input) {
|
|
18
|
+
const { clientId, additional } = input;
|
|
19
|
+
const deduped = [...new Set([clientId, ...(additional ?? [])])];
|
|
20
|
+
if (deduped.length <= 1) {
|
|
21
|
+
return { aud: clientId };
|
|
22
|
+
}
|
|
23
|
+
return { aud: deduped, azp: clientId };
|
|
24
|
+
}
|
|
25
|
+
export function buildAccessTokenPayload(input) {
|
|
26
|
+
const { issuer, subject, clientId, scope, audience, expiresIn } = input;
|
|
27
|
+
const issuedAt = input.issuedAt ?? Math.floor(Date.now() / 1000);
|
|
28
|
+
return {
|
|
29
|
+
iss: issuer,
|
|
30
|
+
sub: subject,
|
|
31
|
+
aud: buildAccessTokenAudience({ requested: audience, issuer }),
|
|
32
|
+
exp: issuedAt + expiresIn,
|
|
33
|
+
iat: issuedAt,
|
|
34
|
+
jti: input.jti ?? generateRandomString(16),
|
|
35
|
+
scope: scope.join(' '),
|
|
36
|
+
client_id: clientId,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export async function computeAtHash(accessToken, idTokenPrivateKey) {
|
|
40
|
+
const hashName = jwaToHashName(getJwaAlgorithm(idTokenPrivateKey));
|
|
41
|
+
const tokenBytes = stringToArrayBuffer(accessToken);
|
|
42
|
+
const hashBuffer = await crypto.subtle.digest(hashName, tokenBytes);
|
|
43
|
+
const leftHalf = hashBuffer.slice(0, hashBuffer.byteLength / 2);
|
|
44
|
+
return arrayBufferToBase64Url(leftHalf);
|
|
45
|
+
}
|
|
46
|
+
export async function resolveAcrAmr(input) {
|
|
47
|
+
const { subject, clientId, acr, amr, requestedAcrValues, claims, acrResolver } = input;
|
|
48
|
+
if (acr !== undefined || amr !== undefined) {
|
|
49
|
+
return { acr, amr };
|
|
50
|
+
}
|
|
51
|
+
if (!acrResolver) {
|
|
52
|
+
return { acr: undefined, amr: undefined };
|
|
53
|
+
}
|
|
54
|
+
let effectiveRequestedAcrValues = requestedAcrValues;
|
|
55
|
+
if (effectiveRequestedAcrValues === undefined && claims?.id_token) {
|
|
56
|
+
const acrEntry = claims.id_token['acr'];
|
|
57
|
+
if (acrEntry && Array.isArray(acrEntry.values)) {
|
|
58
|
+
const stringValues = acrEntry.values.filter((v) => typeof v === 'string');
|
|
59
|
+
if (stringValues.length > 0) {
|
|
60
|
+
effectiveRequestedAcrValues = stringValues.join(' ');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const result = await acrResolver({
|
|
65
|
+
userId: subject,
|
|
66
|
+
clientId,
|
|
67
|
+
requestedAcrValues: effectiveRequestedAcrValues,
|
|
68
|
+
});
|
|
69
|
+
return { acr: result?.acr, amr: result?.amr };
|
|
70
|
+
}
|
|
71
|
+
export function buildIdTokenPayload(input) {
|
|
72
|
+
const { issuer, subject, clientId, scope, expiresIn, atHash, nonce, authTime, acr, amr, idTokenAudiences, userClaims, } = input;
|
|
73
|
+
const issuedAt = input.issuedAt ?? Math.floor(Date.now() / 1000);
|
|
74
|
+
const payload = {};
|
|
75
|
+
if (userClaims) {
|
|
76
|
+
Object.assign(payload, filterClaimsByScope(userClaims, scope));
|
|
77
|
+
}
|
|
78
|
+
payload.iss = issuer;
|
|
79
|
+
payload.sub = subject;
|
|
80
|
+
const { aud, azp } = buildIdTokenAudience({ clientId, additional: idTokenAudiences });
|
|
81
|
+
payload.aud = aud;
|
|
82
|
+
if (azp !== undefined) {
|
|
83
|
+
payload.azp = azp;
|
|
84
|
+
}
|
|
85
|
+
payload.exp = issuedAt + expiresIn;
|
|
86
|
+
payload.iat = issuedAt;
|
|
87
|
+
if (atHash !== undefined) {
|
|
88
|
+
payload.at_hash = atHash;
|
|
89
|
+
}
|
|
90
|
+
if (nonce !== undefined) {
|
|
91
|
+
payload.nonce = nonce;
|
|
92
|
+
}
|
|
93
|
+
if (authTime !== undefined) {
|
|
94
|
+
payload.auth_time = authTime;
|
|
95
|
+
}
|
|
96
|
+
if (acr !== undefined) {
|
|
97
|
+
payload.acr = acr;
|
|
98
|
+
}
|
|
99
|
+
if (amr !== undefined) {
|
|
100
|
+
payload.amr = amr;
|
|
101
|
+
}
|
|
102
|
+
return payload;
|
|
103
|
+
}
|
|
104
|
+
export async function generateTokenResponse(options) {
|
|
105
|
+
const { issuer, subject, clientId, scope, privateKey, accessTokenExpiresIn, idTokenExpiresIn, keyId, idTokenPrivateKey, idTokenKeyId, nonce, authTime, audience, idTokenAudiences, issueRefreshToken, accessTokenIssuer, issueIdToken = true, acrResolver, requestedAcrValues, acr: directAcr, amr: directAmr, userClaims, claims, } = options;
|
|
106
|
+
const idtKey = idTokenPrivateKey ?? privateKey;
|
|
107
|
+
const idtKid = idTokenKeyId ?? keyId;
|
|
108
|
+
const now = Math.floor(Date.now() / 1000);
|
|
109
|
+
const accessTokenPayload = buildAccessTokenPayload({
|
|
110
|
+
issuer,
|
|
111
|
+
subject,
|
|
112
|
+
clientId,
|
|
113
|
+
scope,
|
|
114
|
+
audience,
|
|
115
|
+
expiresIn: accessTokenExpiresIn,
|
|
116
|
+
issuedAt: now,
|
|
117
|
+
});
|
|
118
|
+
const issuerImpl = accessTokenIssuer ?? createJwtAccessTokenIssuer();
|
|
119
|
+
const accessToken = await issuerImpl.issue({
|
|
120
|
+
payload: accessTokenPayload,
|
|
121
|
+
privateKey,
|
|
122
|
+
keyId,
|
|
123
|
+
});
|
|
124
|
+
let idToken;
|
|
125
|
+
let resolvedAcr;
|
|
126
|
+
let resolvedAmr;
|
|
127
|
+
if (issueIdToken) {
|
|
128
|
+
const atHash = await computeAtHash(accessToken, idtKey);
|
|
129
|
+
({ acr: resolvedAcr, amr: resolvedAmr } = await resolveAcrAmr({
|
|
130
|
+
subject,
|
|
131
|
+
clientId,
|
|
132
|
+
acr: directAcr,
|
|
133
|
+
amr: directAmr,
|
|
134
|
+
requestedAcrValues,
|
|
135
|
+
claims,
|
|
136
|
+
acrResolver,
|
|
137
|
+
}));
|
|
138
|
+
const idTokenPayload = buildIdTokenPayload({
|
|
139
|
+
issuer,
|
|
140
|
+
subject,
|
|
141
|
+
clientId,
|
|
142
|
+
scope,
|
|
143
|
+
expiresIn: idTokenExpiresIn,
|
|
144
|
+
issuedAt: now,
|
|
145
|
+
atHash,
|
|
146
|
+
nonce,
|
|
147
|
+
authTime,
|
|
148
|
+
acr: resolvedAcr,
|
|
149
|
+
amr: resolvedAmr,
|
|
150
|
+
idTokenAudiences,
|
|
151
|
+
userClaims,
|
|
152
|
+
});
|
|
153
|
+
idToken = await generateIdToken({
|
|
154
|
+
payload: idTokenPayload,
|
|
155
|
+
privateKey: idtKey,
|
|
156
|
+
keyId: idtKid,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
response: {
|
|
161
|
+
access_token: accessToken,
|
|
162
|
+
token_type: 'Bearer',
|
|
163
|
+
expires_in: accessTokenExpiresIn,
|
|
164
|
+
id_token: idToken,
|
|
165
|
+
scope: scope.join(' '),
|
|
166
|
+
refresh_token: issueRefreshToken ? generateRandomString(32) : undefined,
|
|
167
|
+
},
|
|
168
|
+
resolvedAcr,
|
|
169
|
+
resolvedAmr,
|
|
170
|
+
accessTokenJti: accessTokenPayload.jti,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=token-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-response.js","sourceRoot":"","sources":["../src/token-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export declare enum UserInfoErrorCode {
|
|
2
|
+
InvalidToken = "invalid_token",
|
|
3
|
+
InsufficientScope = "insufficient_scope"
|
|
4
|
+
}
|
|
5
|
+
export declare class UserInfoError extends Error {
|
|
6
|
+
readonly error: UserInfoErrorCode;
|
|
7
|
+
readonly errorDescription: string;
|
|
8
|
+
constructor(error: UserInfoErrorCode, errorDescription: string);
|
|
9
|
+
get statusCode(): number;
|
|
10
|
+
}
|
|
11
|
+
export interface AccessTokenInfo {
|
|
12
|
+
sub: string;
|
|
13
|
+
scope: string[];
|
|
14
|
+
clientId: string;
|
|
15
|
+
expiresAt: number;
|
|
16
|
+
grantId?: string;
|
|
17
|
+
iat?: number;
|
|
18
|
+
nbf?: number;
|
|
19
|
+
audience?: string[];
|
|
20
|
+
issuer?: string;
|
|
21
|
+
jti?: string;
|
|
22
|
+
claims?: ClaimsParameter;
|
|
23
|
+
}
|
|
24
|
+
export interface AccessTokenResolver {
|
|
25
|
+
findAccessToken(token: string): Promise<AccessTokenInfo | null>;
|
|
26
|
+
}
|
|
27
|
+
export interface AddressClaim {
|
|
28
|
+
formatted?: string;
|
|
29
|
+
street_address?: string;
|
|
30
|
+
locality?: string;
|
|
31
|
+
region?: string;
|
|
32
|
+
postal_code?: string;
|
|
33
|
+
country?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface UserClaims {
|
|
36
|
+
sub: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
family_name?: string;
|
|
39
|
+
given_name?: string;
|
|
40
|
+
middle_name?: string;
|
|
41
|
+
nickname?: string;
|
|
42
|
+
preferred_username?: string;
|
|
43
|
+
profile?: string;
|
|
44
|
+
picture?: string;
|
|
45
|
+
website?: string;
|
|
46
|
+
gender?: string;
|
|
47
|
+
birthdate?: string;
|
|
48
|
+
zoneinfo?: string;
|
|
49
|
+
locale?: string;
|
|
50
|
+
updated_at?: number;
|
|
51
|
+
email?: string;
|
|
52
|
+
email_verified?: boolean;
|
|
53
|
+
address?: AddressClaim;
|
|
54
|
+
phone_number?: string;
|
|
55
|
+
phone_number_verified?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface UserClaimsResolver {
|
|
58
|
+
findUserClaims(sub: string): Promise<UserClaims | null>;
|
|
59
|
+
}
|
|
60
|
+
export interface ClaimRequestEntry {
|
|
61
|
+
essential?: boolean;
|
|
62
|
+
value?: unknown;
|
|
63
|
+
values?: unknown[];
|
|
64
|
+
[key: string]: unknown;
|
|
65
|
+
}
|
|
66
|
+
export type ClaimRequestValue = ClaimRequestEntry | null;
|
|
67
|
+
export interface ClaimsParameter {
|
|
68
|
+
userinfo?: Record<string, ClaimRequestValue>;
|
|
69
|
+
id_token?: Record<string, ClaimRequestValue>;
|
|
70
|
+
}
|
|
71
|
+
export interface UserInfoRequestContext {
|
|
72
|
+
accessToken: string;
|
|
73
|
+
accessTokenResolver: AccessTokenResolver;
|
|
74
|
+
userClaimsResolver: UserClaimsResolver;
|
|
75
|
+
claimsParameter?: ClaimsParameter;
|
|
76
|
+
expectedAudience?: string;
|
|
77
|
+
}
|
|
78
|
+
export type UserInfoResponse = {
|
|
79
|
+
sub: string;
|
|
80
|
+
} & Partial<Omit<UserClaims, 'sub'>>;
|
|
81
|
+
export declare const SCOPE_CLAIMS_MAP: Record<string, (keyof UserClaims)[]>;
|
|
82
|
+
export declare function filterClaimsByScope(userClaims: UserClaims, scopes: string[]): UserInfoResponse;
|
|
83
|
+
export declare function resolveUserInfoAccessToken(accessToken: string | undefined, accessTokenResolver: AccessTokenResolver): Promise<AccessTokenInfo>;
|
|
84
|
+
export declare function validateUserInfoTokenExpiration(tokenInfo: AccessTokenInfo, now?: number): void;
|
|
85
|
+
export declare function validateUserInfoScope(tokenInfo: AccessTokenInfo): void;
|
|
86
|
+
export declare function validateUserInfoAudience(tokenInfo: AccessTokenInfo, expectedAudience: string | undefined): void;
|
|
87
|
+
export declare function resolveUserInfoClaims(tokenInfo: AccessTokenInfo, userClaimsResolver: UserClaimsResolver): Promise<UserClaims>;
|
|
88
|
+
export declare function applyRequestedClaims(response: UserInfoResponse, userClaims: UserClaims, claimsParameter?: ClaimsParameter): UserInfoResponse;
|
|
89
|
+
export declare function handleUserInfoRequest(context: UserInfoRequestContext): Promise<UserInfoResponse>;
|
|
90
|
+
export interface UserInfoJwtOptions {
|
|
91
|
+
issuer: string;
|
|
92
|
+
audience: string;
|
|
93
|
+
privateKey: CryptoKey;
|
|
94
|
+
keyId?: string;
|
|
95
|
+
expiresIn?: number;
|
|
96
|
+
}
|
|
97
|
+
export declare function generateUserInfoJwt(userInfoResponse: UserInfoResponse, options: UserInfoJwtOptions): Promise<string>;
|
|
98
|
+
//# sourceMappingURL=userinfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userinfo.d.ts","sourceRoot":"","sources":["../src/userinfo.ts"],"names":[],"mappings":"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"}
|