@atproto/oauth-provider 0.1.3 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/account/account.d.ts +6 -2
  3. package/dist/account/account.d.ts.map +1 -1
  4. package/dist/assets/app/bundle-manifest.json +3 -3
  5. package/dist/assets/app/main.css +1 -1
  6. package/dist/assets/app/main.js +1 -1
  7. package/dist/assets/app/main.js.map +1 -1
  8. package/dist/assets/assets-middleware.d.ts +2 -1
  9. package/dist/assets/assets-middleware.d.ts.map +1 -1
  10. package/dist/assets/assets-middleware.js +7 -0
  11. package/dist/assets/assets-middleware.js.map +1 -1
  12. package/dist/client/client-manager.d.ts +4 -3
  13. package/dist/client/client-manager.d.ts.map +1 -1
  14. package/dist/client/client-manager.js +60 -37
  15. package/dist/client/client-manager.js.map +1 -1
  16. package/dist/client/client.d.ts.map +1 -1
  17. package/dist/client/client.js +1 -3
  18. package/dist/client/client.js.map +1 -1
  19. package/dist/constants.d.ts +2 -0
  20. package/dist/constants.d.ts.map +1 -1
  21. package/dist/constants.js +3 -1
  22. package/dist/constants.js.map +1 -1
  23. package/dist/device/device-manager.d.ts +1 -1
  24. package/dist/device/device-manager.d.ts.map +1 -1
  25. package/dist/device/device-manager.js +2 -2
  26. package/dist/device/device-manager.js.map +1 -1
  27. package/dist/errors/invalid-authorization-details-error.d.ts +4 -3
  28. package/dist/errors/invalid-authorization-details-error.d.ts.map +1 -1
  29. package/dist/errors/invalid-authorization-details-error.js +4 -4
  30. package/dist/errors/invalid-authorization-details-error.js.map +1 -1
  31. package/dist/lib/http/request.d.ts +3 -0
  32. package/dist/lib/http/request.d.ts.map +1 -1
  33. package/dist/lib/http/request.js +24 -12
  34. package/dist/lib/http/request.js.map +1 -1
  35. package/dist/metadata/build-metadata.d.ts +0 -1
  36. package/dist/metadata/build-metadata.d.ts.map +1 -1
  37. package/dist/metadata/build-metadata.js +9 -35
  38. package/dist/metadata/build-metadata.js.map +1 -1
  39. package/dist/oauth-hooks.d.ts +3 -10
  40. package/dist/oauth-hooks.d.ts.map +1 -1
  41. package/dist/oauth-provider.d.ts +8 -13
  42. package/dist/oauth-provider.d.ts.map +1 -1
  43. package/dist/oauth-provider.js +169 -109
  44. package/dist/oauth-provider.js.map +1 -1
  45. package/dist/oauth-verifier.d.ts +1 -2
  46. package/dist/oauth-verifier.d.ts.map +1 -1
  47. package/dist/oauth-verifier.js.map +1 -1
  48. package/dist/output/build-authorize-data.d.ts +6 -0
  49. package/dist/output/build-authorize-data.d.ts.map +1 -1
  50. package/dist/output/build-authorize-data.js +1 -0
  51. package/dist/output/build-authorize-data.js.map +1 -1
  52. package/dist/replay/replay-manager.d.ts +1 -0
  53. package/dist/replay/replay-manager.d.ts.map +1 -1
  54. package/dist/replay/replay-manager.js +3 -0
  55. package/dist/replay/replay-manager.js.map +1 -1
  56. package/dist/replay/replay-store.d.ts +1 -1
  57. package/dist/request/request-info.d.ts +2 -0
  58. package/dist/request/request-info.d.ts.map +1 -1
  59. package/dist/request/request-manager.d.ts +3 -9
  60. package/dist/request/request-manager.d.ts.map +1 -1
  61. package/dist/request/request-manager.js +52 -77
  62. package/dist/request/request-manager.js.map +1 -1
  63. package/dist/request/types.d.ts +10 -10
  64. package/dist/signer/signed-token-payload.d.ts +85 -85
  65. package/dist/signer/signer.d.ts +23 -30
  66. package/dist/signer/signer.d.ts.map +1 -1
  67. package/dist/signer/signer.js +0 -40
  68. package/dist/signer/signer.js.map +1 -1
  69. package/dist/token/token-claims.d.ts +81 -81
  70. package/dist/token/token-manager.d.ts +1 -2
  71. package/dist/token/token-manager.d.ts.map +1 -1
  72. package/dist/token/token-manager.js +10 -37
  73. package/dist/token/token-manager.js.map +1 -1
  74. package/dist/token/types.d.ts +10 -10
  75. package/package.json +2 -3
  76. package/src/account/account.ts +11 -7
  77. package/src/assets/app/backend-data.ts +9 -2
  78. package/src/assets/app/components/accept-form.tsx +65 -51
  79. package/src/assets/app/components/client-name.tsx +24 -16
  80. package/src/assets/app/views/accept-view.tsx +7 -4
  81. package/src/assets/app/views/authorize-view.tsx +2 -1
  82. package/src/assets/assets-middleware.ts +14 -2
  83. package/src/client/client-manager.ts +78 -60
  84. package/src/client/client.ts +1 -4
  85. package/src/constants.ts +3 -0
  86. package/src/device/device-manager.ts +7 -1
  87. package/src/errors/invalid-authorization-details-error.ts +9 -4
  88. package/src/lib/http/request.ts +61 -15
  89. package/src/metadata/build-metadata.ts +9 -42
  90. package/src/oauth-hooks.ts +3 -13
  91. package/src/oauth-provider.ts +181 -159
  92. package/src/oauth-verifier.ts +1 -2
  93. package/src/output/build-authorize-data.ts +8 -0
  94. package/src/replay/replay-manager.ts +9 -0
  95. package/src/replay/replay-store.ts +1 -1
  96. package/src/request/request-info.ts +2 -0
  97. package/src/request/request-manager.ts +81 -107
  98. package/src/signer/signer.ts +0 -63
  99. package/src/token/token-manager.ts +8 -41
  100. package/dist/oidc/claims.d.ts +0 -16
  101. package/dist/oidc/claims.d.ts.map +0 -1
  102. package/dist/oidc/claims.js +0 -29
  103. package/dist/oidc/claims.js.map +0 -1
  104. package/dist/oidc/userinfo.d.ts +0 -7
  105. package/dist/oidc/userinfo.d.ts.map +0 -1
  106. package/dist/oidc/userinfo.js +0 -3
  107. package/dist/oidc/userinfo.js.map +0 -1
  108. package/dist/parameters/claims-requested.d.ts +0 -3
  109. package/dist/parameters/claims-requested.d.ts.map +0 -1
  110. package/dist/parameters/claims-requested.js +0 -77
  111. package/dist/parameters/claims-requested.js.map +0 -1
  112. package/dist/parameters/oidc-payload.d.ts +0 -31
  113. package/dist/parameters/oidc-payload.d.ts.map +0 -1
  114. package/dist/parameters/oidc-payload.js +0 -25
  115. package/dist/parameters/oidc-payload.js.map +0 -1
  116. package/src/assets/app/components/client-identifier.tsx +0 -31
  117. package/src/oidc/claims.ts +0 -35
  118. package/src/oidc/userinfo.ts +0 -11
  119. package/src/parameters/claims-requested.ts +0 -106
  120. package/src/parameters/oidc-payload.ts +0 -28
@@ -87,6 +87,10 @@ class TokenManager {
87
87
  if (!('code_verifier' in input) || !input.code_verifier) {
88
88
  throw new invalid_grant_error_js_1.InvalidGrantError('code_verifier is required');
89
89
  }
90
+ // Prevent client from generating too short code_verifiers
91
+ if (input.code_verifier.length < 43) {
92
+ throw new invalid_grant_error_js_1.InvalidGrantError('code_verifier too short');
93
+ }
90
94
  switch (parameters.code_challenge_method) {
91
95
  case undefined: // Default is "plain" (per spec)
92
96
  case 'plain': {
@@ -121,8 +125,7 @@ class TokenManager {
121
125
  }
122
126
  }
123
127
  const tokenId = await (0, token_id_js_1.generateTokenId)();
124
- const scopes = parameters.scope?.split(' ');
125
- const refreshToken = scopes?.includes('offline_access')
128
+ const refreshToken = client.metadata.grant_types.includes('refresh_token')
126
129
  ? await (0, refresh_token_js_1.generateRefreshToken)()
127
130
  : undefined;
128
131
  const now = new Date();
@@ -153,25 +156,14 @@ class TokenManager {
153
156
  cnf: parameters.dpop_jkt ? { jkt: parameters.dpop_jkt } : undefined,
154
157
  authorization_details: authorizationDetails,
155
158
  });
156
- const idToken = scopes?.includes('openid')
157
- ? await this.signer.idToken(client, parameters, account, {
158
- exp: expiresAt,
159
- iat: now,
160
- // If there is no deviceInfo, we are in a "password_grant" context
161
- auth_time: device?.info.authenticatedAt || new Date(),
162
- access_token: accessToken,
163
- code,
164
- })
165
- : undefined;
166
- return this.buildTokenResponse(client, accessToken, refreshToken, idToken, expiresAt, parameters, account, authorizationDetails);
159
+ return this.buildTokenResponse(client, accessToken, refreshToken, expiresAt, parameters, account, authorizationDetails);
167
160
  }
168
- async buildTokenResponse(client, accessToken, refreshToken, idToken, expiresAt, parameters, account, authorizationDetails) {
161
+ async buildTokenResponse(client, accessToken, refreshToken, expiresAt, parameters, account, authorizationDetails) {
169
162
  const tokenResponse = {
170
163
  access_token: accessToken,
171
164
  token_type: parameters.dpop_jkt ? 'DPoP' : 'Bearer',
172
165
  refresh_token: refreshToken,
173
- id_token: idToken,
174
- scope: parameters.scope ?? '',
166
+ scope: parameters.scope,
175
167
  authorization_details: authorizationDetails,
176
168
  get expires_in() {
177
169
  return (0, date_js_1.dateToRelativeSeconds)(expiresAt);
@@ -181,11 +173,6 @@ class TokenManager {
181
173
  // mechanism.
182
174
  sub: account.sub,
183
175
  };
184
- await this.hooks.onTokenResponse?.call(null, tokenResponse, {
185
- client,
186
- parameters,
187
- account,
188
- });
189
176
  return tokenResponse;
190
177
  }
191
178
  async validateAccess(client, clientAuth, tokenInfo) {
@@ -207,7 +194,7 @@ class TokenManager {
207
194
  if (!tokenInfo?.currentRefreshToken) {
208
195
  throw new invalid_grant_error_js_1.InvalidGrantError(`Invalid refresh token`);
209
196
  }
210
- const { account, info, data } = tokenInfo;
197
+ const { account, data } = tokenInfo;
211
198
  const { parameters } = data;
212
199
  try {
213
200
  if (tokenInfo.currentRefreshToken !== input.refresh_token) {
@@ -273,21 +260,7 @@ class TokenManager {
273
260
  cnf: parameters.dpop_jkt ? { jkt: parameters.dpop_jkt } : undefined,
274
261
  authorization_details,
275
262
  });
276
- // https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.3.3
277
- //
278
- // > In addition to the response parameters specified by OAuth 2.0, the
279
- // > following parameters MUST be included in the response:
280
- // > - id_token: ID Token value associated with the authenticated session.
281
- const scopes = parameters.scope?.split(' ');
282
- const idToken = scopes?.includes('openid')
283
- ? await this.signer.idToken(client, parameters, account, {
284
- exp: expiresAt,
285
- iat: now,
286
- auth_time: info?.authenticatedAt,
287
- access_token: accessToken,
288
- })
289
- : undefined;
290
- return this.buildTokenResponse(client, accessToken, nextRefreshToken, idToken, expiresAt, parameters, account, authorization_details);
263
+ return this.buildTokenResponse(client, accessToken, nextRefreshToken, expiresAt, parameters, account, authorization_details);
291
264
  }
292
265
  catch (err) {
293
266
  if (err instanceof invalid_request_error_js_1.InvalidRequestError) {
@@ -1 +1 @@
1
- {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../../src/token/token-manager.ts"],"names":[],"mappings":"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"}
@@ -77,12 +77,12 @@ export declare const refreshGrantRequestSchema: z.ZodIntersection<z.ZodUnion<[z.
77
77
  refresh_token: z.ZodEffects<z.ZodString, `ref-${string}`, string>;
78
78
  client_id: z.ZodString;
79
79
  }, "strip", z.ZodTypeAny, {
80
- client_id: string;
81
80
  refresh_token: `ref-${string}`;
81
+ client_id: string;
82
82
  grant_type: "refresh_token";
83
83
  }, {
84
- client_id: string;
85
84
  refresh_token: string;
85
+ client_id: string;
86
86
  grant_type: "refresh_token";
87
87
  }>>;
88
88
  export type RefreshGrantRequest = z.infer<typeof refreshGrantRequestSchema>;
@@ -161,12 +161,12 @@ export declare const tokenRequestSchema: z.ZodUnion<[z.ZodIntersection<z.ZodUnio
161
161
  refresh_token: z.ZodEffects<z.ZodString, `ref-${string}`, string>;
162
162
  client_id: z.ZodString;
163
163
  }, "strip", z.ZodTypeAny, {
164
- client_id: string;
165
164
  refresh_token: `ref-${string}`;
165
+ client_id: string;
166
166
  grant_type: "refresh_token";
167
167
  }, {
168
- client_id: string;
169
168
  refresh_token: string;
169
+ client_id: string;
170
170
  grant_type: "refresh_token";
171
171
  }>>]>;
172
172
  export type TokenRequest = z.infer<typeof tokenRequestSchema>;
@@ -175,10 +175,10 @@ export declare const tokenIdentification: z.ZodObject<{
175
175
  token_type_hint: z.ZodOptional<z.ZodEnum<["access_token", "refresh_token"]>>;
176
176
  }, "strip", z.ZodTypeAny, {
177
177
  token: string;
178
- token_type_hint?: "access_token" | "refresh_token" | undefined;
178
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
179
179
  }, {
180
180
  token: string;
181
- token_type_hint?: "access_token" | "refresh_token" | undefined;
181
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
182
182
  }>;
183
183
  export type TokenIdentification = z.infer<typeof tokenIdentification>;
184
184
  export declare const revokeSchema: z.ZodObject<{
@@ -186,10 +186,10 @@ export declare const revokeSchema: z.ZodObject<{
186
186
  token_type_hint: z.ZodOptional<z.ZodEnum<["access_token", "refresh_token"]>>;
187
187
  }, "strip", z.ZodTypeAny, {
188
188
  token: string;
189
- token_type_hint?: "access_token" | "refresh_token" | undefined;
189
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
190
190
  }, {
191
191
  token: string;
192
- token_type_hint?: "access_token" | "refresh_token" | undefined;
192
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
193
193
  }>;
194
194
  export type Revoke = z.infer<typeof revokeSchema>;
195
195
  export declare const introspectSchema: z.ZodIntersection<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
@@ -224,10 +224,10 @@ export declare const introspectSchema: z.ZodIntersection<z.ZodUnion<[z.ZodUnion<
224
224
  token_type_hint: z.ZodOptional<z.ZodEnum<["access_token", "refresh_token"]>>;
225
225
  }, "strip", z.ZodTypeAny, {
226
226
  token: string;
227
- token_type_hint?: "access_token" | "refresh_token" | undefined;
227
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
228
228
  }, {
229
229
  token: string;
230
- token_type_hint?: "access_token" | "refresh_token" | undefined;
230
+ token_type_hint?: "refresh_token" | "access_token" | undefined;
231
231
  }>>;
232
232
  export type Introspect = z.infer<typeof introspectSchema>;
233
233
  export type IntrospectionResponse = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/oauth-provider",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "license": "MIT",
5
5
  "description": "Generic OAuth2 and OpenID Connect provider for Node.js. Currently only supports features needed for Atproto.",
6
6
  "keywords": [
@@ -36,7 +36,6 @@
36
36
  "ioredis": "^5.3.2",
37
37
  "jose": "^5.2.0",
38
38
  "keygrip": "^1.1.0",
39
- "oidc-token-hash": "^5.0.3",
40
39
  "psl": "^1.9.0",
41
40
  "zod": "^3.23.8",
42
41
  "@atproto-labs/fetch": "0.1.0",
@@ -46,7 +45,7 @@
46
45
  "@atproto-labs/simple-store-memory": "0.1.1",
47
46
  "@atproto/jwk": "0.1.1",
48
47
  "@atproto/jwk-jose": "0.1.2",
49
- "@atproto/oauth-types": "0.1.3"
48
+ "@atproto/oauth-types": "0.1.4"
50
49
  },
51
50
  "devDependencies": {
52
51
  "@rollup/plugin-commonjs": "^25.0.7",
@@ -1,10 +1,14 @@
1
- import { OIDCStandardPayload } from '../oidc/claims.js'
2
1
  import { Sub } from '../oidc/sub.js'
3
2
  import { Simplify } from '../lib/util/type.js'
4
3
 
5
- export type Account = Simplify<
6
- {
7
- sub: Sub // Account id
8
- aud: string | [string, ...string[]] // Resource server URL
9
- } & OIDCStandardPayload
10
- >
4
+ export type Account = Simplify<{
5
+ sub: Sub // Account id
6
+ aud: string | [string, ...string[]] // Resource server URL
7
+
8
+ // OIDC inspired
9
+ preferred_username?: string
10
+ email?: string
11
+ email_verified?: boolean
12
+ picture?: string
13
+ name?: string
14
+ }>
@@ -14,6 +14,7 @@ export type Account = {
14
14
 
15
15
  export type Session = {
16
16
  account: Account
17
+ info?: never // Prevent relying on this in the frontend
17
18
 
18
19
  selected: boolean
19
20
  loginRequired: boolean
@@ -37,15 +38,21 @@ export type ErrorData = {
37
38
  error_description: string
38
39
  }
39
40
 
41
+ export type ScopeDetail = {
42
+ scope: string
43
+ description?: string
44
+ }
45
+
40
46
  export type AuthorizeData = {
41
47
  clientId: string
42
48
  clientMetadata: OAuthClientMetadata
43
49
  clientTrusted: boolean
44
50
  requestUri: string
45
51
  csrfCookie: string
46
- sessions: Session[]
47
- newSessionsRequireConsent: boolean
48
52
  loginHint?: string
53
+ scopeDetails?: ScopeDetail[]
54
+ newSessionsRequireConsent: boolean
55
+ sessions: Session[]
49
56
  }
50
57
 
51
58
  // see "declareBackendData()" in the backend
@@ -1,22 +1,23 @@
1
1
  import { OAuthClientMetadata } from '@atproto/oauth-types'
2
2
  import { FormEvent } from 'react'
3
3
 
4
- import { Account } from '../backend-data'
4
+ import { Account, ScopeDetail } from '../backend-data'
5
5
  import { Override } from '../lib/util'
6
6
  import { AccountIdentifier } from './account-identifier'
7
7
  import { Button } from './button'
8
- import { ClientIdentifier } from './client-identifier'
9
8
  import { ClientName } from './client-name'
10
9
  import { FormCard, FormCardProps } from './form-card'
11
- import { Fieldset } from './fieldset'
12
10
 
13
11
  export type AcceptFormProps = Override<
14
12
  FormCardProps,
15
13
  {
16
- account: Account
17
14
  clientId: string
18
15
  clientMetadata: OAuthClientMetadata
19
16
  clientTrusted: boolean
17
+
18
+ account: Account
19
+ scopeDetails?: ScopeDetail[]
20
+
20
21
  onAccept: () => void
21
22
  acceptLabel?: string
22
23
 
@@ -29,10 +30,13 @@ export type AcceptFormProps = Override<
29
30
  >
30
31
 
31
32
  export function AcceptForm({
32
- account,
33
33
  clientId,
34
34
  clientMetadata,
35
35
  clientTrusted,
36
+
37
+ account,
38
+ scopeDetails,
39
+
36
40
  onAccept,
37
41
  acceptLabel = 'Accept',
38
42
  onReject,
@@ -62,54 +66,64 @@ export function AcceptForm({
62
66
  }
63
67
  {...props}
64
68
  >
65
- <Fieldset
66
- title={
67
- <ClientName clientId={clientId} clientMetadata={clientMetadata} />
68
- }
69
- >
70
- {clientTrusted && clientMetadata.logo_uri && (
71
- <div key="logo" className="flex items-center justify-center">
72
- <img
73
- crossOrigin="anonymous"
74
- src={clientMetadata.logo_uri}
75
- alt={clientMetadata.client_name}
76
- className="w-16 h-16 rounded-full"
77
- />
78
- </div>
79
- )}
69
+ {clientTrusted && clientMetadata.logo_uri && (
70
+ <div key="logo" className="flex items-center justify-center">
71
+ <img
72
+ crossOrigin="anonymous"
73
+ src={clientMetadata.logo_uri}
74
+ alt={clientMetadata.client_name}
75
+ className="w-16 h-16 rounded-full"
76
+ />
77
+ </div>
78
+ )}
79
+ <p>
80
+ <ClientName clientId={clientId} clientMetadata={clientMetadata} /> is
81
+ asking for permission to access your account (
82
+ <AccountIdentifier account={account} />
83
+ ).
84
+ </p>
80
85
 
81
- <p>
82
- <ClientIdentifier
83
- clientId={clientId}
84
- clientMetadata={clientMetadata}
85
- />{' '}
86
- is asking for permission to access your{' '}
87
- <AccountIdentifier account={account} /> account.
88
- </p>
86
+ <p>
87
+ By clicking <b>{acceptLabel}</b>, you allow this application to perform
88
+ the following actions in accordance to their{' '}
89
+ <a
90
+ href={clientMetadata.tos_uri}
91
+ rel="nofollow noopener"
92
+ target="_blank"
93
+ className="text-brand underline"
94
+ >
95
+ terms of service
96
+ </a>
97
+ {' and '}
98
+ <a
99
+ href={clientMetadata.policy_uri}
100
+ rel="nofollow noopener"
101
+ target="_blank"
102
+ className="text-brand underline"
103
+ >
104
+ privacy policy
105
+ </a>
106
+ :
107
+ </p>
89
108
 
90
- <p>
91
- By clicking <b>{acceptLabel}</b>, you allow this application to access
92
- your information in accordance to their{' '}
93
- <a
94
- href={clientMetadata.tos_uri}
95
- rel="nofollow noopener"
96
- target="_blank"
97
- className="text-brand underline"
98
- >
99
- terms of service
100
- </a>
101
- {' and '}
102
- <a
103
- href={clientMetadata.policy_uri}
104
- rel="nofollow noopener"
105
- target="_blank"
106
- className="text-brand underline"
107
- >
108
- privacy policy
109
- </a>
110
- .
111
- </p>
112
- </Fieldset>
109
+ {scopeDetails?.length ? (
110
+ <ul className="list-disc list-inside">
111
+ {scopeDetails.map(
112
+ ({ scope, description = getScopeDescription(scope) }) => (
113
+ <li key={scope}>{description}</li>
114
+ ),
115
+ )}
116
+ </ul>
117
+ ) : null}
113
118
  </FormCard>
114
119
  )
115
120
  }
121
+
122
+ function getScopeDescription(scope: string): string {
123
+ switch (scope) {
124
+ case 'atproto':
125
+ return 'Uniquely identify you'
126
+ default:
127
+ return scope
128
+ }
129
+ }
@@ -1,30 +1,38 @@
1
- import { OAuthClientMetadata } from '@atproto/oauth-types'
1
+ import {
2
+ isOAuthClientIdDiscoverable,
3
+ isOAuthClientIdLoopback,
4
+ OAuthClientMetadata,
5
+ } from '@atproto/oauth-types'
2
6
  import { HTMLAttributes } from 'react'
3
7
 
4
- import { ClientIdentifier } from './client-identifier'
8
+ import { UrlViewer } from './url-viewer'
5
9
 
6
10
  export type ClientNameProps = {
7
11
  clientId: string
8
12
  clientMetadata: OAuthClientMetadata
9
- as?: keyof JSX.IntrinsicElements
10
- }
13
+ } & HTMLAttributes<Element>
11
14
 
12
15
  export function ClientName({
13
16
  clientId,
14
17
  clientMetadata,
15
- as: As = 'span',
16
18
  ...attrs
17
- }: ClientNameProps & HTMLAttributes<Element>) {
18
- if (clientMetadata.client_name) {
19
- return <As {...attrs}>{clientMetadata.client_name}</As>
19
+ }: ClientNameProps) {
20
+ if (isOAuthClientIdLoopback(clientId)) {
21
+ return <span {...attrs}>An application on your device</span>
22
+ }
23
+
24
+ if (isOAuthClientIdDiscoverable(clientId)) {
25
+ if (clientMetadata.client_name) {
26
+ return (
27
+ <span {...attrs}>
28
+ {clientMetadata.client_name} (
29
+ <UrlViewer url={clientId} path />)
30
+ </span>
31
+ )
32
+ }
33
+
34
+ return <UrlViewer {...attrs} url={clientId} path />
20
35
  }
21
36
 
22
- return (
23
- <ClientIdentifier
24
- clientId={clientId}
25
- clientMetadata={clientMetadata}
26
- as={As}
27
- {...attrs}
28
- />
29
- )
37
+ return <span {...attrs}>{clientMetadata.client_name || clientId}</span>
30
38
  }
@@ -1,6 +1,6 @@
1
1
  import { OAuthClientMetadata } from '@atproto/oauth-types'
2
2
 
3
- import { Session } from '../backend-data'
3
+ import { Account, ScopeDetail } from '../backend-data'
4
4
  import { AcceptForm } from '../components/accept-form'
5
5
  import { LayoutTitlePage } from '../components/layout-title-page'
6
6
 
@@ -8,7 +8,9 @@ export type AcceptViewProps = {
8
8
  clientId: string
9
9
  clientMetadata: OAuthClientMetadata
10
10
  clientTrusted: boolean
11
- session: Session
11
+
12
+ account: Account
13
+ scopeDetails?: ScopeDetail[]
12
14
 
13
15
  onAccept: () => void
14
16
  onReject: () => void
@@ -19,12 +21,12 @@ export function AcceptView({
19
21
  clientId,
20
22
  clientMetadata,
21
23
  clientTrusted,
22
- session,
24
+ account,
25
+ scopeDetails,
23
26
  onAccept,
24
27
  onReject,
25
28
  onBack,
26
29
  }: AcceptViewProps) {
27
- const { account } = session
28
30
  return (
29
31
  <LayoutTitlePage
30
32
  title="Authorize"
@@ -43,6 +45,7 @@ export function AcceptView({
43
45
  clientMetadata={clientMetadata}
44
46
  clientTrusted={clientTrusted}
45
47
  account={account}
48
+ scopeDetails={scopeDetails}
46
49
  onBack={onBack}
47
50
  onAccept={onAccept}
48
51
  onReject={onReject}
@@ -79,10 +79,11 @@ export function AuthorizeView({
79
79
  if (view === 'accept' && session) {
80
80
  return (
81
81
  <AcceptView
82
- session={session}
83
82
  clientId={authorizeData.clientId}
84
83
  clientMetadata={authorizeData.clientMetadata}
85
84
  clientTrusted={authorizeData.clientTrusted}
85
+ account={session.account}
86
+ scopeDetails={authorizeData.scopeDetails}
86
87
  onAccept={() => doAccept(session.account)}
87
88
  onReject={doReject}
88
89
  onBack={
@@ -1,8 +1,13 @@
1
- import { writeStream } from '../lib/http/index.js'
1
+ import {
2
+ Middleware,
3
+ validateFetchDest,
4
+ validateFetchSite,
5
+ writeStream,
6
+ } from '../lib/http/index.js'
2
7
 
3
8
  import { ASSETS_URL_PREFIX, getAsset } from './index.js'
4
9
 
5
- export function authorizeAssetsMiddleware() {
10
+ export function authorizeAssetsMiddleware(): Middleware {
6
11
  return async function assetsMiddleware(req, res, next): Promise<void> {
7
12
  if (req.method !== 'GET' && req.method !== 'HEAD') return next()
8
13
  if (!req.url?.startsWith(ASSETS_URL_PREFIX)) return next()
@@ -17,6 +22,13 @@ export function authorizeAssetsMiddleware() {
17
22
  const asset = await getAsset(filename).catch(() => null)
18
23
  if (!asset) return next()
19
24
 
25
+ try {
26
+ validateFetchSite(req, res, ['same-origin'])
27
+ validateFetchDest(req, res, ['style', 'script'])
28
+ } catch (err) {
29
+ return next(err)
30
+ }
31
+
20
32
  if (req.headers['if-none-match'] === asset.sha256) {
21
33
  return void res.writeHead(304).end()
22
34
  }