@maronn-openid-connect/experimental 0.0.4 → 0.0.6

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/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  | `token-exchange` | OAuth 2.0 Token Exchange (impersonation) | RFC 8693 | `@maronn-openid-connect/experimental/token-exchange` |
17
17
  | `jarm` | JWT Secured Authorization Response Mode (signed `query.jwt` only) | JARM (OpenID Foundation Final, 2022-11-09) | `@maronn-openid-connect/experimental/jarm` |
18
18
  | `device-authorization-grant` | OAuth 2.0 Device Authorization Grant | RFC 8628 | `@maronn-openid-connect/experimental/device-authorization-grant` |
19
+ | `id-jag` | Cross-App Access / Identity Assertion Authorization Grant(発行と受領の両側) | draft-ietf-oauth-identity-assertion-authz-grant-04 | `@maronn-openid-connect/experimental/id-jag` |
19
20
 
20
21
  機能ごとに subpath export で提供します。ルート (`.`) からの再エクスポートは提供しません。機能間でコードを共有しないことで、昇格・削除時に他機能へ影響しない構造を保っています。
21
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/device-authorization-grant/verification.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAWpB,eAAO,MAAM,yBAAyB,uCAAuC,CAAC;AA0B9E,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,wBAAwB,EAC/B,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAQ3C;AAcD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAOvD;AAcD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAAC,IAAI,CAAC,CAQf;AAYD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAcD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,wBAAwB,EAC/B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3D;AAeD,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAerC;AAQD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CASrC"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/device-authorization-grant/verification.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAWpB,eAAO,MAAM,yBAAyB,uCAAuC,CAAC;AA0B9E,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,wBAAwB,EAC/B,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAQ3C;AAcD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAOvD;AAcD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAAC,IAAI,CAAC,CAQf;AAWD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAaD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,yBAAyB,EACjC,KAAK,EAAE,wBAAwB,EAC/B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3D;AAeD,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAerC;AAQD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,wBAAwB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CASrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/device-authorization-grant/verification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/device-authorization-grant/verification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type IdJagErrorCode = 'invalid_request' | 'invalid_grant' | 'unauthorized_client' | 'invalid_scope' | 'invalid_target';
2
+ export declare class IdJagError extends Error {
3
+ readonly code: IdJagErrorCode;
4
+ readonly errorDescription: string;
5
+ constructor(code: IdJagErrorCode, errorDescription: string);
6
+ get statusCode(): 400;
7
+ }
8
+ export declare const SUBJECT_TOKEN_INVALID_DESCRIPTION = "The provided subject_token is not valid";
9
+ export declare const ACTOR_TOKEN_INVALID_DESCRIPTION = "The provided actor_token is not valid";
10
+ export declare const ASSERTION_UNTRUSTED_DESCRIPTION = "The assertion issuer is not trusted or the assertion signature is invalid";
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/id-jag/errors.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,eAAe,GACf,qBAAqB,GACrB,eAAe,GACf,gBAAgB,CAAC;AAErB,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM;IAU1D,IAAI,UAAU,IAAI,GAAG,CAEpB;CACF;AASD,eAAO,MAAM,iCAAiC,4CACH,CAAC;AAS5C,eAAO,MAAM,+BAA+B,0CACH,CAAC;AAQ1C,eAAO,MAAM,+BAA+B,8EACiC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { sanitizeErrorDescription } from '@maronn-openid-connect/core';
2
+ export class IdJagError extends Error {
3
+ code;
4
+ errorDescription;
5
+ constructor(code, errorDescription) {
6
+ const sanitized = sanitizeErrorDescription(errorDescription);
7
+ super(sanitized);
8
+ this.name = 'IdJagError';
9
+ this.code = code;
10
+ this.errorDescription = sanitized;
11
+ }
12
+ get statusCode() {
13
+ return 400;
14
+ }
15
+ }
16
+ export const SUBJECT_TOKEN_INVALID_DESCRIPTION = 'The provided subject_token is not valid';
17
+ export const ACTOR_TOKEN_INVALID_DESCRIPTION = 'The provided actor_token is not valid';
18
+ export const ASSERTION_UNTRUSTED_DESCRIPTION = 'The assertion issuer is not trusted or the assertion signature is invalid';
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/id-jag/errors.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAiBvE,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IACrB,gBAAgB,CAAS;IAElC,YAAY,IAAoB,EAAE,gBAAwB;QAExD,MAAM,SAAS,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;QAC7D,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAGD,IAAI,UAAU;QACZ,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AASD,MAAM,CAAC,MAAM,iCAAiC,GAC5C,yCAAyC,CAAC;AAS5C,MAAM,CAAC,MAAM,+BAA+B,GAC1C,uCAAuC,CAAC;AAQ1C,MAAM,CAAC,MAAM,+BAA+B,GAC1C,2EAA2E,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ACTOR_TOKEN_INVALID_DESCRIPTION, ASSERTION_UNTRUSTED_DESCRIPTION, SUBJECT_TOKEN_INVALID_DESCRIPTION, IdJagError, type IdJagErrorCode, } from './errors.js';
2
+ export { ACTOR_TOKEN_TYPES_SUPPORTED, ID_JAG_GRANT_PROFILE, ID_JAG_JWT_TYP, ID_JAG_TOKEN_TYPE, TOKEN_EXCHANGE_GRANT_TYPE, TOKEN_TYPE_ACCESS_TOKEN, TOKEN_TYPE_ID_TOKEN, TOKEN_TYPE_JWT, TOKEN_TYPE_REFRESH_TOKEN, TOKEN_TYPE_SAML1, TOKEN_TYPE_SAML2, authorizeIdJagIssuanceClient, buildIdJagClaims, buildIdJagIssuanceResponse, createIdJagJwt, matchesIdJagIssuanceRequest, parseIdJagIssuanceParams, processIdJagIssuanceRequest, resolveIdJagActor, resolveIdJagActorToken, resolveIdJagSubject, resolveIdJagSubjectFromRefreshToken, validateIdJagAudience, validateIdJagScope, type IdJagActor, type IdJagActorTokenResolver, type IdJagActorTokenResolverInput, type IdJagClaims, type IdJagIssuanceContext, type IdJagIssuanceParseOptions, type IdJagIssuanceResponse, type IdJagSubject, type ParsedIdJagIssuanceParams, } from './issue-id-jag.js';
3
+ export { DEFAULT_ASSERTION_CLOCK_SKEW_SEC, JWT_BEARER_GRANT_TYPE, authorizeIdJagRedemptionClient, parseIdJagRedemptionParams, processIdJagRedemptionRequest, resolveIdJagGrantScope, verifyIdJagAssertion, type IdJagAccessTokenInfo, type IdJagAssertionPayload, type IdJagRedemptionContext, type IdJagRedemptionGrant, type IdJagTrustedIdentityProvider, type ParsedIdJagRedemptionParams, } from './redeem-id-jag.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/id-jag/index.ts"],"names":[],"mappings":"AA+BA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,UAAU,EACV,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,mCAAmC,EACnC,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gCAAgC,EAChC,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ACTOR_TOKEN_INVALID_DESCRIPTION, ASSERTION_UNTRUSTED_DESCRIPTION, SUBJECT_TOKEN_INVALID_DESCRIPTION, IdJagError, } from './errors.js';
2
+ export { ACTOR_TOKEN_TYPES_SUPPORTED, ID_JAG_GRANT_PROFILE, ID_JAG_JWT_TYP, ID_JAG_TOKEN_TYPE, TOKEN_EXCHANGE_GRANT_TYPE, TOKEN_TYPE_ACCESS_TOKEN, TOKEN_TYPE_ID_TOKEN, TOKEN_TYPE_JWT, TOKEN_TYPE_REFRESH_TOKEN, TOKEN_TYPE_SAML1, TOKEN_TYPE_SAML2, authorizeIdJagIssuanceClient, buildIdJagClaims, buildIdJagIssuanceResponse, createIdJagJwt, matchesIdJagIssuanceRequest, parseIdJagIssuanceParams, processIdJagIssuanceRequest, resolveIdJagActor, resolveIdJagActorToken, resolveIdJagSubject, resolveIdJagSubjectFromRefreshToken, validateIdJagAudience, validateIdJagScope, } from './issue-id-jag.js';
3
+ export { DEFAULT_ASSERTION_CLOCK_SKEW_SEC, JWT_BEARER_GRANT_TYPE, authorizeIdJagRedemptionClient, parseIdJagRedemptionParams, processIdJagRedemptionRequest, resolveIdJagGrantScope, verifyIdJagAssertion, } from './redeem-id-jag.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/id-jag/index.ts"],"names":[],"mappings":"AA+BA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,mCAAmC,EACnC,qBAAqB,EACrB,kBAAkB,GAUnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gCAAgC,EAChC,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,GAOrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { type AuthenticationSessionResolver, type JwkSet, type RefreshTokenResolver, type SigningKey, type TokenClientInfo } from '@maronn-openid-connect/core';
2
+ export declare const TOKEN_EXCHANGE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange";
3
+ export declare const ID_JAG_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:id-jag";
4
+ export declare const TOKEN_TYPE_ID_TOKEN = "urn:ietf:params:oauth:token-type:id_token";
5
+ export declare const TOKEN_TYPE_REFRESH_TOKEN = "urn:ietf:params:oauth:token-type:refresh_token";
6
+ export declare const TOKEN_TYPE_ACCESS_TOKEN = "urn:ietf:params:oauth:token-type:access_token";
7
+ export declare const TOKEN_TYPE_JWT = "urn:ietf:params:oauth:token-type:jwt";
8
+ export declare const TOKEN_TYPE_SAML1 = "urn:ietf:params:oauth:token-type:saml1";
9
+ export declare const TOKEN_TYPE_SAML2 = "urn:ietf:params:oauth:token-type:saml2";
10
+ export declare const ACTOR_TOKEN_TYPES_SUPPORTED: readonly ["urn:ietf:params:oauth:token-type:access_token", "urn:ietf:params:oauth:token-type:refresh_token", "urn:ietf:params:oauth:token-type:id_token", "urn:ietf:params:oauth:token-type:jwt", "urn:ietf:params:oauth:token-type:saml1", "urn:ietf:params:oauth:token-type:saml2"];
11
+ export declare const ID_JAG_JWT_TYP = "oauth-id-jag+jwt";
12
+ export declare const ID_JAG_GRANT_PROFILE = "urn:ietf:params:oauth:grant-profile:id-jag";
13
+ export interface IdJagActor {
14
+ sub: string;
15
+ act?: IdJagActor;
16
+ }
17
+ export interface IdJagActorTokenResolverInput {
18
+ actorToken: string;
19
+ actorTokenType: string;
20
+ clientId: string;
21
+ issuer: string;
22
+ jwks: JwkSet;
23
+ }
24
+ export type IdJagActorTokenResolver = (input: IdJagActorTokenResolverInput) => Promise<IdJagActor | null> | IdJagActor | null;
25
+ export interface ParsedIdJagIssuanceParams {
26
+ subjectToken: string;
27
+ subjectTokenType: typeof TOKEN_TYPE_ID_TOKEN | typeof TOKEN_TYPE_REFRESH_TOKEN;
28
+ audience: string;
29
+ scope?: string;
30
+ resource?: string;
31
+ actorToken?: string;
32
+ actorTokenType?: string;
33
+ }
34
+ export interface IdJagIssuanceParseOptions {
35
+ allowRefreshTokenSubjects?: boolean;
36
+ allowActorTokens?: boolean;
37
+ }
38
+ export interface IdJagSubject {
39
+ sub: string;
40
+ authTime?: number;
41
+ acr?: string;
42
+ amr?: string[];
43
+ }
44
+ export interface IdJagClaims {
45
+ iss: string;
46
+ sub: string;
47
+ aud: string;
48
+ client_id: string;
49
+ jti: string;
50
+ exp: number;
51
+ iat: number;
52
+ scope?: string;
53
+ resource?: string;
54
+ auth_time?: number;
55
+ acr?: string;
56
+ amr?: string[];
57
+ act?: IdJagActor;
58
+ }
59
+ export interface IdJagIssuanceResponse {
60
+ access_token: string;
61
+ issued_token_type: typeof ID_JAG_TOKEN_TYPE;
62
+ token_type: 'N_A';
63
+ expires_in: number;
64
+ scope: string;
65
+ }
66
+ export interface IdJagIssuanceContext {
67
+ params: Record<string, string>;
68
+ client: TokenClientInfo;
69
+ issuer: string;
70
+ jwks: JwkSet;
71
+ signingKey: SigningKey;
72
+ allowedAudiences: string[];
73
+ allowedScopes?: string[];
74
+ lifetimeSeconds: number;
75
+ refreshTokenResolver?: RefreshTokenResolver;
76
+ authenticationSessionResolver?: AuthenticationSessionResolver;
77
+ allowActorTokens?: boolean;
78
+ actorTokenResolver?: IdJagActorTokenResolver;
79
+ now?: Date;
80
+ }
81
+ export declare function matchesIdJagIssuanceRequest(params: Record<string, string>): boolean;
82
+ export declare function authorizeIdJagIssuanceClient(client: TokenClientInfo): void;
83
+ export declare function parseIdJagIssuanceParams(params: Record<string, string>, options?: IdJagIssuanceParseOptions): ParsedIdJagIssuanceParams;
84
+ export declare function resolveIdJagSubject(options: {
85
+ subjectToken: string;
86
+ issuer: string;
87
+ clientId: string;
88
+ jwks: JwkSet;
89
+ }): Promise<IdJagSubject>;
90
+ export declare function resolveIdJagSubjectFromRefreshToken(options: {
91
+ refreshToken: string;
92
+ clientId: string;
93
+ refreshTokenResolver: RefreshTokenResolver;
94
+ authenticationSessionResolver?: AuthenticationSessionResolver;
95
+ now?: Date;
96
+ }): Promise<IdJagSubject>;
97
+ export declare function resolveIdJagActor(options: {
98
+ actorToken: string;
99
+ issuer: string;
100
+ clientId: string;
101
+ jwks: JwkSet;
102
+ }): Promise<IdJagActor>;
103
+ export declare function resolveIdJagActorToken(options: {
104
+ actorToken: string;
105
+ actorTokenType: string;
106
+ clientId: string;
107
+ issuer: string;
108
+ jwks: JwkSet;
109
+ resolver?: IdJagActorTokenResolver;
110
+ }): Promise<IdJagActor>;
111
+ export declare function validateIdJagAudience(options: {
112
+ audience: string;
113
+ issuer: string;
114
+ allowedAudiences: string[];
115
+ }): void;
116
+ export declare function validateIdJagScope(requestedScope: string | undefined, allowedScopes: string[] | undefined): string[];
117
+ export declare function buildIdJagClaims(options: {
118
+ issuer: string;
119
+ subject: IdJagSubject;
120
+ audience: string;
121
+ clientId: string;
122
+ scope: string[];
123
+ resource?: string;
124
+ actor?: IdJagActor;
125
+ lifetimeSeconds: number;
126
+ now?: Date;
127
+ }): IdJagClaims;
128
+ export declare function createIdJagJwt(options: {
129
+ claims: IdJagClaims;
130
+ signingKey: SigningKey;
131
+ }): Promise<string>;
132
+ export declare function buildIdJagIssuanceResponse(options: {
133
+ idJag: string;
134
+ expiresIn: number;
135
+ scope: string[];
136
+ }): IdJagIssuanceResponse;
137
+ export declare function processIdJagIssuanceRequest(context: IdJagIssuanceContext): Promise<IdJagIssuanceResponse>;
138
+ //# sourceMappingURL=issue-id-jag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-id-jag.d.ts","sourceRoot":"","sources":["../../src/id-jag/issue-id-jag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ import { IdTokenHintError, TokenError, generateRandomString, resolveRefreshToken, validateIdTokenHint, validateRefreshTokenClient, validateRefreshTokenExpiration, validateRefreshTokenSession, validateRefreshTokenUnused, } from '@maronn-openid-connect/core';
2
+ import { ACTOR_TOKEN_INVALID_DESCRIPTION, IdJagError, SUBJECT_TOKEN_INVALID_DESCRIPTION, } from './errors.js';
3
+ export const TOKEN_EXCHANGE_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:token-exchange';
4
+ export const ID_JAG_TOKEN_TYPE = 'urn:ietf:params:oauth:token-type:id-jag';
5
+ export const TOKEN_TYPE_ID_TOKEN = 'urn:ietf:params:oauth:token-type:id_token';
6
+ export const TOKEN_TYPE_REFRESH_TOKEN = 'urn:ietf:params:oauth:token-type:refresh_token';
7
+ export const TOKEN_TYPE_ACCESS_TOKEN = 'urn:ietf:params:oauth:token-type:access_token';
8
+ export const TOKEN_TYPE_JWT = 'urn:ietf:params:oauth:token-type:jwt';
9
+ export const TOKEN_TYPE_SAML1 = 'urn:ietf:params:oauth:token-type:saml1';
10
+ export const TOKEN_TYPE_SAML2 = 'urn:ietf:params:oauth:token-type:saml2';
11
+ export const ACTOR_TOKEN_TYPES_SUPPORTED = [
12
+ TOKEN_TYPE_ACCESS_TOKEN,
13
+ TOKEN_TYPE_REFRESH_TOKEN,
14
+ TOKEN_TYPE_ID_TOKEN,
15
+ TOKEN_TYPE_JWT,
16
+ TOKEN_TYPE_SAML1,
17
+ TOKEN_TYPE_SAML2,
18
+ ];
19
+ export const ID_JAG_JWT_TYP = 'oauth-id-jag+jwt';
20
+ export const ID_JAG_GRANT_PROFILE = 'urn:ietf:params:oauth:grant-profile:id-jag';
21
+ const ID_JAG_SIGNING_ALG = 'RS256';
22
+ const WEB_CRYPTO_ALGORITHM = 'RSASSA-PKCS1-v1_5';
23
+ export function matchesIdJagIssuanceRequest(params) {
24
+ return (params['grant_type'] === TOKEN_EXCHANGE_GRANT_TYPE &&
25
+ optional(params['requested_token_type']) === ID_JAG_TOKEN_TYPE);
26
+ }
27
+ export function authorizeIdJagIssuanceClient(client) {
28
+ const grantTypes = client.grantTypes ?? ['authorization_code'];
29
+ if (!grantTypes.includes(TOKEN_EXCHANGE_GRANT_TYPE)) {
30
+ throw new IdJagError('unauthorized_client', 'The client is not authorized to use the token-exchange grant type');
31
+ }
32
+ if (client.tokenEndpointAuthMethod === 'none') {
33
+ throw new IdJagError('unauthorized_client', 'Public clients are not allowed to request an ID-JAG');
34
+ }
35
+ }
36
+ export function parseIdJagIssuanceParams(params, options = {}) {
37
+ const subjectToken = optional(params['subject_token']);
38
+ if (subjectToken === undefined) {
39
+ throw new IdJagError('invalid_request', 'subject_token is required');
40
+ }
41
+ const subjectTokenType = optional(params['subject_token_type']);
42
+ if (subjectTokenType === undefined) {
43
+ throw new IdJagError('invalid_request', 'subject_token_type is required');
44
+ }
45
+ const supportedSubjectTypes = [
46
+ TOKEN_TYPE_ID_TOKEN,
47
+ ...(options.allowRefreshTokenSubjects === true ? [TOKEN_TYPE_REFRESH_TOKEN] : []),
48
+ ];
49
+ if (!supportedSubjectTypes.includes(subjectTokenType)) {
50
+ throw new IdJagError('invalid_request', `Unsupported subject_token_type for ID-JAG issuance. Only ${supportedSubjectTypes.join(' or ')} is supported.`);
51
+ }
52
+ const audience = optional(params['audience']);
53
+ if (audience === undefined) {
54
+ throw new IdJagError('invalid_request', 'audience is required');
55
+ }
56
+ const resource = optional(params['resource']);
57
+ if (resource !== undefined && !isAbsoluteUriWithoutFragment(resource)) {
58
+ throw new IdJagError('invalid_request', 'resource must be an absolute URI without a fragment component');
59
+ }
60
+ const actorToken = optional(params['actor_token']);
61
+ const actorTokenType = optional(params['actor_token_type']);
62
+ if (options.allowActorTokens !== true) {
63
+ if (actorToken !== undefined || actorTokenType !== undefined) {
64
+ throw new IdJagError('invalid_request', 'actor_token is not supported for ID-JAG issuance');
65
+ }
66
+ }
67
+ else {
68
+ if (actorToken !== undefined && actorTokenType === undefined) {
69
+ throw new IdJagError('invalid_request', 'actor_token_type is required when actor_token is present');
70
+ }
71
+ if (actorToken === undefined && actorTokenType !== undefined) {
72
+ throw new IdJagError('invalid_request', 'actor_token_type must not be present without actor_token');
73
+ }
74
+ if (actorTokenType !== undefined &&
75
+ !ACTOR_TOKEN_TYPES_SUPPORTED.includes(actorTokenType)) {
76
+ throw new IdJagError('invalid_request', `Unsupported actor_token_type for ID-JAG issuance. Supported values are ${ACTOR_TOKEN_TYPES_SUPPORTED.join(', ')}.`);
77
+ }
78
+ }
79
+ if (optional(params['authorization_details']) !== undefined) {
80
+ throw new IdJagError('invalid_request', 'authorization_details is not supported for ID-JAG issuance');
81
+ }
82
+ return {
83
+ subjectToken,
84
+ subjectTokenType: subjectTokenType,
85
+ audience,
86
+ scope: optional(params['scope']),
87
+ resource,
88
+ ...(actorToken === undefined
89
+ ? {}
90
+ : { actorToken, actorTokenType: actorTokenType }),
91
+ };
92
+ }
93
+ export async function resolveIdJagSubject(options) {
94
+ let payload;
95
+ try {
96
+ payload = await validateIdTokenHint(options.subjectToken, {
97
+ expectedIss: options.issuer,
98
+ expectedAud: options.clientId,
99
+ jwks: options.jwks,
100
+ });
101
+ }
102
+ catch (error) {
103
+ if (error instanceof IdTokenHintError) {
104
+ throw new IdJagError('invalid_request', SUBJECT_TOKEN_INVALID_DESCRIPTION);
105
+ }
106
+ throw error;
107
+ }
108
+ const authTime = typeof payload['auth_time'] === 'number' ? payload['auth_time'] : undefined;
109
+ const acr = typeof payload['acr'] === 'string' ? payload['acr'] : undefined;
110
+ const amr = Array.isArray(payload['amr']) && payload['amr'].every((v) => typeof v === 'string')
111
+ ? payload['amr']
112
+ : undefined;
113
+ return {
114
+ sub: payload.sub,
115
+ ...(authTime === undefined ? {} : { authTime }),
116
+ ...(acr === undefined ? {} : { acr }),
117
+ ...(amr === undefined ? {} : { amr }),
118
+ };
119
+ }
120
+ export async function resolveIdJagSubjectFromRefreshToken(options) {
121
+ let info;
122
+ try {
123
+ const resolved = await resolveRefreshToken({
124
+ grant_type: 'refresh_token',
125
+ refresh_token: options.refreshToken,
126
+ }, options.refreshTokenResolver);
127
+ info = resolved.refreshTokenInfo;
128
+ await validateRefreshTokenUnused(info, options.refreshTokenResolver);
129
+ validateRefreshTokenClient(info, options.clientId);
130
+ validateRefreshTokenExpiration(info, Math.floor((options.now ?? new Date()).getTime() / 1000));
131
+ await validateRefreshTokenSession(info, options.authenticationSessionResolver);
132
+ }
133
+ catch (error) {
134
+ if (error instanceof TokenError) {
135
+ throw invalidSubjectToken();
136
+ }
137
+ throw error;
138
+ }
139
+ if (!info.scope.includes('openid')) {
140
+ throw invalidSubjectToken();
141
+ }
142
+ return {
143
+ sub: info.subject,
144
+ authTime: info.authTime,
145
+ ...(info.acr === undefined ? {} : { acr: info.acr }),
146
+ ...(info.amr === undefined ? {} : { amr: info.amr }),
147
+ };
148
+ }
149
+ export async function resolveIdJagActor(options) {
150
+ let payload;
151
+ try {
152
+ payload = await validateIdTokenHint(options.actorToken, {
153
+ expectedIss: options.issuer,
154
+ expectedAud: options.clientId,
155
+ jwks: options.jwks,
156
+ });
157
+ }
158
+ catch (error) {
159
+ if (error instanceof IdTokenHintError) {
160
+ throw new IdJagError('invalid_request', ACTOR_TOKEN_INVALID_DESCRIPTION);
161
+ }
162
+ throw error;
163
+ }
164
+ return { sub: payload.sub };
165
+ }
166
+ export async function resolveIdJagActorToken(options) {
167
+ if (options.resolver === undefined) {
168
+ throw new IdJagError('invalid_request', ACTOR_TOKEN_INVALID_DESCRIPTION);
169
+ }
170
+ const resolved = await options.resolver({
171
+ actorToken: options.actorToken,
172
+ actorTokenType: options.actorTokenType,
173
+ clientId: options.clientId,
174
+ issuer: options.issuer,
175
+ jwks: options.jwks,
176
+ });
177
+ if (resolved === null) {
178
+ throw new IdJagError('invalid_request', ACTOR_TOKEN_INVALID_DESCRIPTION);
179
+ }
180
+ const actor = copyActorChain(resolved);
181
+ if (actor === undefined) {
182
+ throw new Error('The actorTokenResolver returned a malformed actor: sub must be a non-empty string at every level of the act chain');
183
+ }
184
+ return actor;
185
+ }
186
+ function copyActorChain(value) {
187
+ if (typeof value !== 'object' || value === null) {
188
+ return undefined;
189
+ }
190
+ const record = value;
191
+ const sub = record['sub'];
192
+ if (typeof sub !== 'string' || sub.length === 0) {
193
+ return undefined;
194
+ }
195
+ if (record['act'] === undefined) {
196
+ return { sub };
197
+ }
198
+ const act = copyActorChain(record['act']);
199
+ return act === undefined ? undefined : { sub, act };
200
+ }
201
+ export function validateIdJagAudience(options) {
202
+ if (options.audience === options.issuer) {
203
+ throw new IdJagError('invalid_target', 'The requested audience must belong to a different trust domain than this authorization server');
204
+ }
205
+ if (!options.allowedAudiences.includes(options.audience)) {
206
+ throw new IdJagError('invalid_target', 'The requested audience is not allowed for ID-JAG issuance');
207
+ }
208
+ }
209
+ export function validateIdJagScope(requestedScope, allowedScopes) {
210
+ const requested = splitScope(requestedScope);
211
+ if (allowedScopes === undefined) {
212
+ return requested;
213
+ }
214
+ for (const value of requested) {
215
+ if (!allowedScopes.includes(value)) {
216
+ throw new IdJagError('invalid_scope', 'The requested scope exceeds the scopes allowed for ID-JAG issuance');
217
+ }
218
+ }
219
+ return requested;
220
+ }
221
+ export function buildIdJagClaims(options) {
222
+ if (!Number.isInteger(options.lifetimeSeconds) || options.lifetimeSeconds <= 0) {
223
+ throw new RangeError(`lifetimeSeconds must be a positive integer, received ${options.lifetimeSeconds}`);
224
+ }
225
+ const issuedAt = Math.floor((options.now ?? new Date()).getTime() / 1000);
226
+ return {
227
+ iss: options.issuer,
228
+ sub: options.subject.sub,
229
+ aud: options.audience,
230
+ client_id: options.clientId,
231
+ jti: generateRandomString(32),
232
+ exp: issuedAt + options.lifetimeSeconds,
233
+ iat: issuedAt,
234
+ ...(options.scope.length === 0 ? {} : { scope: options.scope.join(' ') }),
235
+ ...(options.resource === undefined ? {} : { resource: options.resource }),
236
+ ...(options.subject.authTime === undefined ? {} : { auth_time: options.subject.authTime }),
237
+ ...(options.subject.acr === undefined ? {} : { acr: options.subject.acr }),
238
+ ...(options.subject.amr === undefined ? {} : { amr: options.subject.amr }),
239
+ ...(options.actor === undefined ? {} : { act: options.actor }),
240
+ };
241
+ }
242
+ export async function createIdJagJwt(options) {
243
+ const encodedHeader = base64UrlFromJson({
244
+ alg: ID_JAG_SIGNING_ALG,
245
+ typ: ID_JAG_JWT_TYP,
246
+ kid: options.signingKey.keyId,
247
+ });
248
+ const encodedPayload = base64UrlFromJson(options.claims);
249
+ const signingInput = `${encodedHeader}.${encodedPayload}`;
250
+ const signature = await crypto.subtle.sign(WEB_CRYPTO_ALGORITHM, options.signingKey.privateKey, new TextEncoder().encode(signingInput));
251
+ return `${signingInput}.${base64UrlFromBytes(new Uint8Array(signature))}`;
252
+ }
253
+ export function buildIdJagIssuanceResponse(options) {
254
+ return {
255
+ access_token: options.idJag,
256
+ issued_token_type: ID_JAG_TOKEN_TYPE,
257
+ token_type: 'N_A',
258
+ expires_in: options.expiresIn,
259
+ scope: options.scope.join(' '),
260
+ };
261
+ }
262
+ export async function processIdJagIssuanceRequest(context) {
263
+ authorizeIdJagIssuanceClient(context.client);
264
+ const parsed = parseIdJagIssuanceParams(context.params, {
265
+ allowRefreshTokenSubjects: context.refreshTokenResolver !== undefined,
266
+ allowActorTokens: context.allowActorTokens === true,
267
+ });
268
+ const subject = parsed.subjectTokenType === TOKEN_TYPE_REFRESH_TOKEN
269
+ ? await resolveIdJagSubjectFromRefreshToken({
270
+ refreshToken: parsed.subjectToken,
271
+ clientId: context.client.clientId,
272
+ refreshTokenResolver: context.refreshTokenResolver,
273
+ ...(context.authenticationSessionResolver === undefined
274
+ ? {}
275
+ : { authenticationSessionResolver: context.authenticationSessionResolver }),
276
+ ...(context.now === undefined ? {} : { now: context.now }),
277
+ })
278
+ : await resolveIdJagSubject({
279
+ subjectToken: parsed.subjectToken,
280
+ issuer: context.issuer,
281
+ clientId: context.client.clientId,
282
+ jwks: context.jwks,
283
+ });
284
+ const actor = parsed.actorToken === undefined
285
+ ? undefined
286
+ : await resolveIdJagActorToken({
287
+ actorToken: parsed.actorToken,
288
+ actorTokenType: parsed.actorTokenType,
289
+ clientId: context.client.clientId,
290
+ issuer: context.issuer,
291
+ jwks: context.jwks,
292
+ ...(context.actorTokenResolver === undefined
293
+ ? {}
294
+ : { resolver: context.actorTokenResolver }),
295
+ });
296
+ validateIdJagAudience({
297
+ audience: parsed.audience,
298
+ issuer: context.issuer,
299
+ allowedAudiences: context.allowedAudiences,
300
+ });
301
+ const scope = validateIdJagScope(parsed.scope, context.allowedScopes);
302
+ const claims = buildIdJagClaims({
303
+ issuer: context.issuer,
304
+ subject,
305
+ audience: parsed.audience,
306
+ clientId: context.client.clientId,
307
+ scope,
308
+ ...(parsed.resource === undefined ? {} : { resource: parsed.resource }),
309
+ ...(actor === undefined ? {} : { actor }),
310
+ lifetimeSeconds: context.lifetimeSeconds,
311
+ ...(context.now === undefined ? {} : { now: context.now }),
312
+ });
313
+ const idJag = await createIdJagJwt({
314
+ claims,
315
+ signingKey: context.signingKey,
316
+ });
317
+ return buildIdJagIssuanceResponse({
318
+ idJag,
319
+ expiresIn: context.lifetimeSeconds,
320
+ scope,
321
+ });
322
+ }
323
+ function optional(value) {
324
+ if (value === undefined)
325
+ return undefined;
326
+ const trimmed = value.trim();
327
+ return trimmed.length === 0 ? undefined : trimmed;
328
+ }
329
+ function invalidSubjectToken() {
330
+ return new IdJagError('invalid_request', SUBJECT_TOKEN_INVALID_DESCRIPTION);
331
+ }
332
+ function splitScope(scope) {
333
+ if (scope === undefined)
334
+ return [];
335
+ return [...new Set(scope.split(/\s+/).filter((value) => value.length > 0))];
336
+ }
337
+ function isAbsoluteUriWithoutFragment(value) {
338
+ if (value.includes('#'))
339
+ return false;
340
+ let parsed;
341
+ try {
342
+ parsed = new URL(value);
343
+ }
344
+ catch {
345
+ return false;
346
+ }
347
+ return parsed.protocol.length > 0;
348
+ }
349
+ function base64UrlFromBytes(bytes) {
350
+ let binary = '';
351
+ for (const byte of bytes) {
352
+ binary += String.fromCharCode(byte);
353
+ }
354
+ return btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
355
+ }
356
+ function base64UrlFromJson(value) {
357
+ return base64UrlFromBytes(new TextEncoder().encode(JSON.stringify(value)));
358
+ }
359
+ //# sourceMappingURL=issue-id-jag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-id-jag.js","sourceRoot":"","sources":["../../src/id-jag/issue-id-jag.ts"],"names":[],"mappings":"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"}