@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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/dist/access-token-issuer.d.ts +14 -0
  4. package/dist/access-token-issuer.d.ts.map +1 -0
  5. package/dist/access-token-issuer.js +32 -0
  6. package/dist/access-token-issuer.js.map +1 -0
  7. package/dist/access-token.d.ts +19 -0
  8. package/dist/access-token.d.ts.map +1 -0
  9. package/dist/access-token.js +46 -0
  10. package/dist/access-token.js.map +1 -0
  11. package/dist/auth-transaction.d.ts +86 -0
  12. package/dist/auth-transaction.d.ts.map +1 -0
  13. package/dist/auth-transaction.js +187 -0
  14. package/dist/auth-transaction.js.map +1 -0
  15. package/dist/authorization-code-grant.d.ts +15 -0
  16. package/dist/authorization-code-grant.d.ts.map +1 -0
  17. package/dist/authorization-code-grant.js +109 -0
  18. package/dist/authorization-code-grant.js.map +1 -0
  19. package/dist/authorization-code.d.ts +28 -0
  20. package/dist/authorization-code.d.ts.map +1 -0
  21. package/dist/authorization-code.js +41 -0
  22. package/dist/authorization-code.js.map +1 -0
  23. package/dist/authorization-request.d.ts +128 -0
  24. package/dist/authorization-request.d.ts.map +1 -0
  25. package/dist/authorization-request.js +457 -0
  26. package/dist/authorization-request.js.map +1 -0
  27. package/dist/client-auth.d.ts +16 -0
  28. package/dist/client-auth.d.ts.map +1 -0
  29. package/dist/client-auth.js +116 -0
  30. package/dist/client-auth.js.map +1 -0
  31. package/dist/crypto-utils.d.ts +18 -0
  32. package/dist/crypto-utils.d.ts.map +1 -0
  33. package/dist/crypto-utils.js +197 -0
  34. package/dist/crypto-utils.js.map +1 -0
  35. package/dist/discovery.d.ts +56 -0
  36. package/dist/discovery.d.ts.map +1 -0
  37. package/dist/discovery.js +133 -0
  38. package/dist/discovery.js.map +1 -0
  39. package/dist/error-utils.d.ts +2 -0
  40. package/dist/error-utils.d.ts.map +1 -0
  41. package/dist/error-utils.js +13 -0
  42. package/dist/error-utils.js.map +1 -0
  43. package/dist/id-token.d.ts +39 -0
  44. package/dist/id-token.d.ts.map +1 -0
  45. package/dist/id-token.js +193 -0
  46. package/dist/id-token.js.map +1 -0
  47. package/dist/index.d.ts +34 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +19 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/introspection.d.ts +66 -0
  52. package/dist/introspection.d.ts.map +1 -0
  53. package/dist/introspection.js +139 -0
  54. package/dist/introspection.js.map +1 -0
  55. package/dist/jwks.d.ts +29 -0
  56. package/dist/jwks.d.ts.map +1 -0
  57. package/dist/jwks.js +36 -0
  58. package/dist/jwks.js.map +1 -0
  59. package/dist/loopback.d.ts +2 -0
  60. package/dist/loopback.d.ts.map +1 -0
  61. package/dist/loopback.js +6 -0
  62. package/dist/loopback.js.map +1 -0
  63. package/dist/refresh-token-grant.d.ts +14 -0
  64. package/dist/refresh-token-grant.d.ts.map +1 -0
  65. package/dist/refresh-token-grant.js +87 -0
  66. package/dist/refresh-token-grant.js.map +1 -0
  67. package/dist/request-object.d.ts +11 -0
  68. package/dist/request-object.d.ts.map +1 -0
  69. package/dist/request-object.js +92 -0
  70. package/dist/request-object.js.map +1 -0
  71. package/dist/revocation.d.ts +51 -0
  72. package/dist/revocation.d.ts.map +1 -0
  73. package/dist/revocation.js +93 -0
  74. package/dist/revocation.js.map +1 -0
  75. package/dist/signing-key.d.ts +21 -0
  76. package/dist/signing-key.d.ts.map +1 -0
  77. package/dist/signing-key.js +99 -0
  78. package/dist/signing-key.js.map +1 -0
  79. package/dist/token-error.d.ts +16 -0
  80. package/dist/token-error.d.ts.map +1 -0
  81. package/dist/token-error.js +31 -0
  82. package/dist/token-error.js.map +1 -0
  83. package/dist/token-request.d.ts +111 -0
  84. package/dist/token-request.d.ts.map +1 -0
  85. package/dist/token-request.js +44 -0
  86. package/dist/token-request.js.map +1 -0
  87. package/dist/token-response.d.ts +111 -0
  88. package/dist/token-response.d.ts.map +1 -0
  89. package/dist/token-response.js +173 -0
  90. package/dist/token-response.js.map +1 -0
  91. package/dist/userinfo.d.ts +98 -0
  92. package/dist/userinfo.d.ts.map +1 -0
  93. package/dist/userinfo.js +188 -0
  94. package/dist/userinfo.js.map +1 -0
  95. package/package.json +52 -0
@@ -0,0 +1,188 @@
1
+ import { sign, arrayBufferToBase64Url, stringToArrayBuffer, getJwaAlgorithm } from './crypto-utils.js';
2
+ import { sanitizeErrorDescription } from './error-utils.js';
3
+ export var UserInfoErrorCode;
4
+ (function (UserInfoErrorCode) {
5
+ UserInfoErrorCode["InvalidToken"] = "invalid_token";
6
+ UserInfoErrorCode["InsufficientScope"] = "insufficient_scope";
7
+ })(UserInfoErrorCode || (UserInfoErrorCode = {}));
8
+ export class UserInfoError extends Error {
9
+ error;
10
+ errorDescription;
11
+ constructor(error, errorDescription) {
12
+ const sanitized = sanitizeErrorDescription(errorDescription);
13
+ super(sanitized);
14
+ this.name = 'UserInfoError';
15
+ this.error = error;
16
+ this.errorDescription = sanitized;
17
+ }
18
+ get statusCode() {
19
+ return this.error === UserInfoErrorCode.InvalidToken ? 401 : 403;
20
+ }
21
+ }
22
+ export const SCOPE_CLAIMS_MAP = {
23
+ profile: [
24
+ 'name',
25
+ 'family_name',
26
+ 'given_name',
27
+ 'middle_name',
28
+ 'nickname',
29
+ 'preferred_username',
30
+ 'profile',
31
+ 'picture',
32
+ 'website',
33
+ 'gender',
34
+ 'birthdate',
35
+ 'zoneinfo',
36
+ 'locale',
37
+ 'updated_at',
38
+ ],
39
+ email: ['email', 'email_verified'],
40
+ address: ['address'],
41
+ phone: ['phone_number', 'phone_number_verified'],
42
+ };
43
+ export function filterClaimsByScope(userClaims, scopes) {
44
+ const result = { sub: userClaims.sub };
45
+ for (const scope of scopes) {
46
+ const claimNames = SCOPE_CLAIMS_MAP[scope];
47
+ if (!claimNames)
48
+ continue;
49
+ for (const claimName of claimNames) {
50
+ const value = userClaims[claimName];
51
+ if (value !== undefined && value !== null) {
52
+ result[claimName] = value;
53
+ }
54
+ }
55
+ }
56
+ return result;
57
+ }
58
+ function getRequestedClaimNames(claimsParameter) {
59
+ if (!claimsParameter?.userinfo)
60
+ return [];
61
+ return Object.keys(claimsParameter.userinfo);
62
+ }
63
+ function deepEqual(a, b) {
64
+ if (a === b)
65
+ return true;
66
+ if (typeof a === 'number' && typeof b === 'number') {
67
+ return Number.isNaN(a) && Number.isNaN(b);
68
+ }
69
+ if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
70
+ return false;
71
+ }
72
+ const aIsArray = Array.isArray(a);
73
+ const bIsArray = Array.isArray(b);
74
+ if (aIsArray !== bIsArray)
75
+ return false;
76
+ if (aIsArray && bIsArray) {
77
+ if (a.length !== b.length)
78
+ return false;
79
+ return a.every((item, index) => deepEqual(item, b[index]));
80
+ }
81
+ const aObj = a;
82
+ const bObj = b;
83
+ const aKeys = Object.keys(aObj);
84
+ const bKeys = Object.keys(bObj);
85
+ if (aKeys.length !== bKeys.length)
86
+ return false;
87
+ return aKeys.every((key) => Object.prototype.hasOwnProperty.call(bObj, key) &&
88
+ deepEqual(aObj[key], bObj[key]));
89
+ }
90
+ function matchesRequestedValue(actual, entry) {
91
+ if (entry === null)
92
+ return true;
93
+ if (entry.value !== undefined) {
94
+ return deepEqual(actual, entry.value);
95
+ }
96
+ if (Array.isArray(entry.values)) {
97
+ return entry.values.some((candidate) => deepEqual(actual, candidate));
98
+ }
99
+ return true;
100
+ }
101
+ export async function resolveUserInfoAccessToken(accessToken, accessTokenResolver) {
102
+ if (!accessToken) {
103
+ throw new UserInfoError(UserInfoErrorCode.InvalidToken, 'Access token is required');
104
+ }
105
+ const tokenInfo = await accessTokenResolver.findAccessToken(accessToken);
106
+ if (!tokenInfo) {
107
+ throw new UserInfoError(UserInfoErrorCode.InvalidToken, 'Access token is invalid');
108
+ }
109
+ return tokenInfo;
110
+ }
111
+ export function validateUserInfoTokenExpiration(tokenInfo, now = Math.floor(Date.now() / 1000)) {
112
+ if (tokenInfo.expiresAt < now) {
113
+ throw new UserInfoError(UserInfoErrorCode.InvalidToken, 'The access token expired');
114
+ }
115
+ }
116
+ export function validateUserInfoScope(tokenInfo) {
117
+ if (!tokenInfo.scope.includes('openid')) {
118
+ throw new UserInfoError(UserInfoErrorCode.InsufficientScope, 'The openid scope is required');
119
+ }
120
+ }
121
+ export function validateUserInfoAudience(tokenInfo, expectedAudience) {
122
+ if (expectedAudience !== undefined &&
123
+ (tokenInfo.audience === undefined || !tokenInfo.audience.includes(expectedAudience))) {
124
+ throw new UserInfoError(UserInfoErrorCode.InvalidToken, 'The access token is not intended for the UserInfo endpoint');
125
+ }
126
+ }
127
+ export async function resolveUserInfoClaims(tokenInfo, userClaimsResolver) {
128
+ const userClaims = await userClaimsResolver.findUserClaims(tokenInfo.sub);
129
+ if (!userClaims) {
130
+ throw new UserInfoError(UserInfoErrorCode.InvalidToken, 'User not found for the given access token');
131
+ }
132
+ return userClaims;
133
+ }
134
+ export function applyRequestedClaims(response, userClaims, claimsParameter) {
135
+ const result = { ...response };
136
+ const requestedClaims = getRequestedClaimNames(claimsParameter);
137
+ for (const claimName of requestedClaims) {
138
+ if (claimName === 'sub')
139
+ continue;
140
+ const value = userClaims[claimName];
141
+ if (value === undefined || value === null)
142
+ continue;
143
+ const entry = claimsParameter?.userinfo?.[claimName] ?? null;
144
+ if (!matchesRequestedValue(value, entry))
145
+ continue;
146
+ result[claimName] = value;
147
+ }
148
+ return result;
149
+ }
150
+ export async function handleUserInfoRequest(context) {
151
+ const { accessToken, accessTokenResolver, userClaimsResolver, claimsParameter, expectedAudience, } = context;
152
+ const tokenInfo = await resolveUserInfoAccessToken(accessToken, accessTokenResolver);
153
+ validateUserInfoTokenExpiration(tokenInfo);
154
+ validateUserInfoScope(tokenInfo);
155
+ validateUserInfoAudience(tokenInfo, expectedAudience);
156
+ const userClaims = await resolveUserInfoClaims(tokenInfo, userClaimsResolver);
157
+ const scopedResponse = filterClaimsByScope(userClaims, tokenInfo.scope);
158
+ return applyRequestedClaims(scopedResponse, userClaims, claimsParameter);
159
+ }
160
+ const DEFAULT_USERINFO_JWT_EXPIRES_IN = 3600;
161
+ function base64UrlEncode(str) {
162
+ return arrayBufferToBase64Url(stringToArrayBuffer(str));
163
+ }
164
+ export async function generateUserInfoJwt(userInfoResponse, options) {
165
+ const { issuer, audience, privateKey, keyId, expiresIn } = options;
166
+ const now = Math.floor(Date.now() / 1000);
167
+ const ttl = expiresIn ?? DEFAULT_USERINFO_JWT_EXPIRES_IN;
168
+ const header = {
169
+ alg: getJwaAlgorithm(privateKey),
170
+ typ: 'JWT',
171
+ };
172
+ if (keyId) {
173
+ header.kid = keyId;
174
+ }
175
+ const payload = {
176
+ ...userInfoResponse,
177
+ iss: issuer,
178
+ aud: audience,
179
+ iat: now,
180
+ exp: now + ttl,
181
+ };
182
+ const headerB64 = base64UrlEncode(JSON.stringify(header));
183
+ const payloadB64 = base64UrlEncode(JSON.stringify(payload));
184
+ const signingInput = `${headerB64}.${payloadB64}`;
185
+ const signature = await sign(signingInput, privateKey);
186
+ return `${signingInput}.${signature}`;
187
+ }
188
+ //# sourceMappingURL=userinfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userinfo.js","sourceRoot":"","sources":["../src/userinfo.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@maronn-openid-connect/core",
3
+ "version": "0.0.1",
4
+ "description": "OpenID Connect Provider core implementation",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "LICENSE",
17
+ "README.md"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "keywords": [
23
+ "openid-connect",
24
+ "oauth2.1",
25
+ "authentication"
26
+ ],
27
+ "author": "maronnjapan",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/maronnjapan/maronn-oidc.git",
32
+ "directory": "packages/core"
33
+ },
34
+ "bugs": {
35
+ "url": "https://github.com/maronnjapan/maronn-oidc/issues"
36
+ },
37
+ "homepage": "https://github.com/maronnjapan/maronn-oidc/tree/main/packages/core#readme",
38
+ "devDependencies": {
39
+ "@edge-runtime/vm": "^5.0.0",
40
+ "@types/node": "^26.1.2",
41
+ "typescript": "^5.7.2",
42
+ "vitest": "^2.1.8"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc",
46
+ "typecheck": "tsc --noEmit",
47
+ "test": "vitest run",
48
+ "test:ci": "vitest run",
49
+ "test:watch": "vitest",
50
+ "test:coverage": "vitest --coverage"
51
+ }
52
+ }