Skip to content

Commit 0a173ce

Browse files
committed
docs(passport): expand descriptions and structure
1 parent 4004070 commit 0a173ce

File tree

1 file changed

+78
-14
lines changed

1 file changed

+78
-14
lines changed

src/passport.ts

Lines changed: 78 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import * as client from './index.js'
22

3-
import type { PrivateKey } from 'oauth4webapi'
43
import type * as express from 'express'
54
import type passport from 'passport'
65

@@ -29,6 +28,8 @@ export interface AuthenticateOptions extends passport.AuthenticateOptions {
2928
* authorization request or token endpoint request, depending on whether it's
3029
* part of {@link Strategy.authenticate} options during the initial redirect or
3130
* callback phase.
31+
*
32+
* This is a request-specific override for {@link StrategyOptions.resource}.
3233
*/
3334
resource?: string | string[]
3435

@@ -47,6 +48,9 @@ export interface AuthenticateOptions extends passport.AuthenticateOptions {
4748
/**
4849
* OAuth 2.0 Rich Authorization Requests to use for the authorization request.
4950
* It is ignored for token endpoint requests.
51+
*
52+
* This is a request-specific override for
53+
* {@link StrategyOptions.authorizationDetails}.
5054
*/
5155
authorizationDetails?:
5256
| client.AuthorizationDetails
@@ -61,6 +65,8 @@ export interface AuthenticateOptions extends passport.AuthenticateOptions {
6165
/**
6266
* OAuth 2.0 scope to use for the authorization request. It is ignored for
6367
* token endpoint requests.
68+
*
69+
* This is a request-specific override for {@link StrategyOptions.scope}.
6470
*/
6571
scope?: string | string[]
6672

@@ -98,22 +104,26 @@ interface StrategyOptionsBase {
98104
* Openid-client Configuration instance.
99105
*/
100106
config: client.Configuration
107+
101108
/**
102109
* Name of the strategy, default is the host component of the authorization
103110
* server's issuer identifier.
104111
*/
105112
name?: string
113+
106114
/**
107115
* Property in the session to use for storing the authorization request state,
108116
* default is the host component of the authorization server's issuer
109117
* identifier.
110118
*/
111119
sessionKey?: string
120+
112121
/**
113122
* Function used to retrieve an openid-client DPoPHandle for a given request,
114123
* when provided the strategy will use DPoP where applicable.
115124
*/
116125
DPoP?: getDPoPHandle
126+
117127
/**
118128
* An absolute URL to which the authorization server will redirect the user
119129
* after obtaining authorization. The {@link !URL} instance's `href` will be
@@ -122,11 +132,13 @@ interface StrategyOptionsBase {
122132
* {@link URL} instance.
123133
*/
124134
callbackURL?: URL | string
135+
125136
/**
126137
* OAuth 2.0 Authorization Request Scope. This will be used as the `scope`
127138
* authorization request parameter unless specified through other means.
128139
*/
129140
scope?: string
141+
130142
/**
131143
* OAuth 2.0 Rich Authorization Request(s). This will be used as the
132144
* `authorization_details` authorization request parameter unless specified
@@ -135,15 +147,18 @@ interface StrategyOptionsBase {
135147
authorizationDetails?:
136148
| client.AuthorizationDetails
137149
| client.AuthorizationDetails[]
150+
138151
/**
139152
* OAuth 2.0 Resource Indicator(s). This will be used as the `resource`
140153
* authorization request parameter unless specified through other means.
141154
*/
142155
resource?: string | string[]
156+
143157
/**
144158
* Whether the strategy will use PAR. Default is `false`.
145159
*/
146160
usePAR?: boolean
161+
147162
/**
148163
* Whether the strategy will use JAR. Its value can be a private key to sign
149164
* with or an array with the private key and a modify assertion function that
@@ -153,8 +168,9 @@ interface StrategyOptionsBase {
153168
useJAR?:
154169
| false
155170
| client.CryptoKey
156-
| PrivateKey
157-
| [client.CryptoKey | PrivateKey, client.ModifyAssertionFunction]
171+
| client.PrivateKey
172+
| [client.CryptoKey | client.PrivateKey, client.ModifyAssertionFunction]
173+
158174
/**
159175
* Whether the verify function should get the `req` as first argument instead.
160176
* Default is `false`.
@@ -200,7 +216,7 @@ export class Strategy implements passport.Strategy {
200216
/**
201217
* @internal
202218
*/
203-
_config: client.Configuration
219+
_config: StrategyOptionsBase['config']
204220
/**
205221
* @internal
206222
*/
@@ -212,27 +228,27 @@ export class Strategy implements passport.Strategy {
212228
/**
213229
* @internal
214230
*/
215-
_sessionKey: string
231+
_sessionKey: NonNullable<StrategyOptionsBase['sessionKey']>
216232
/**
217233
* @internal
218234
*/
219-
_passReqToCallback?: boolean
235+
_passReqToCallback: StrategyOptionsBase['passReqToCallback']
220236
/**
221237
* @internal
222238
*/
223-
_usePAR?: boolean
239+
_usePAR: StrategyOptionsBase['usePAR']
224240
/**
225241
* @internal
226242
*/
227-
_useJAR?: StrategyOptionsBase['useJAR']
243+
_useJAR: StrategyOptionsBase['useJAR']
228244
/**
229245
* @internal
230246
*/
231-
_DPoP?: StrategyOptionsBase['DPoP']
247+
_DPoP: StrategyOptionsBase['DPoP']
232248
/**
233249
* @internal
234250
*/
235-
_scope?: string
251+
_scope: StrategyOptionsBase['scope']
236252
/**
237253
* @internal
238254
*/
@@ -278,7 +294,24 @@ export class Strategy implements passport.Strategy {
278294
}
279295

280296
/**
281-
* Return extra parameters to be included an authorization request.
297+
* [Strategy method] Return additional authorization request parameters.
298+
*
299+
* This method is intended to be overloaded if additional parameters need to
300+
* be included an authorization request are needed.
301+
*
302+
* By default this method takes care of adding the corresponding authorization
303+
* endpoint parameters when
304+
* {@link AuthenticateOptions.authorizationDetails authorizationDetails},
305+
* {@link AuthenticateOptions.idTokenHint idTokenHint},
306+
* {@link AuthenticateOptions.loginHint loginHint},
307+
* {@link AuthenticateOptions.prompt prompt},
308+
* {@link AuthenticateOptions.resource resource}, or
309+
* {@link AuthenticateOptions.scope scope} properties of
310+
* {@link AuthenticateOptions} are used.
311+
*
312+
* @param req
313+
* @param options This is the value originally passed to
314+
* `passport.authenticate()` as its `options` argument.
282315
*/
283316
authorizationRequestParams<TOptions extends AuthenticateOptions>(
284317
// @ts-ignore
@@ -323,8 +356,18 @@ export class Strategy implements passport.Strategy {
323356
}
324357

325358
/**
326-
* Return extra parameters to be included in the authorization code grant
327-
* token endpoint request.
359+
* [Strategy method] Return additional token endpoint request parameters.
360+
*
361+
* This method is intended to be overloaded if additional parameters to be
362+
* included in the authorization code grant token endpoint request are
363+
* needed.
364+
*
365+
* By default this method takes care of adding the `resource` token endpoint
366+
* parameters when {@link AuthenticateOptions.resource} is used.
367+
*
368+
* @param req
369+
* @param options This is the value originally passed to
370+
* `passport.authenticate()` as its `options` argument.
328371
*/
329372
authorizationCodeGrantParameters<TOptions extends AuthenticateOptions>(
330373
// @ts-ignore
@@ -341,6 +384,8 @@ export class Strategy implements passport.Strategy {
341384
}
342385

343386
/**
387+
* @private
388+
*
344389
* @internal
345390
*/
346391
async authorizationRequest<TOptions extends AuthenticateOptions>(
@@ -458,6 +503,8 @@ export class Strategy implements passport.Strategy {
458503
}
459504

460505
/**
506+
* @private
507+
*
461508
* @internal
462509
*/
463510
async authorizationCodeGrant<TOptions extends AuthenticateOptions>(
@@ -500,6 +547,7 @@ export class Strategy implements passport.Strategy {
500547
},
501548
new Headers(),
502549
),
550+
// @ts-ignore
503551
body: req,
504552
duplex: 'half',
505553
})
@@ -561,13 +609,29 @@ export class Strategy implements passport.Strategy {
561609
* {@link StrategyOptionsBase.callbackURL} are used in which case those are
562610
* used as the `redirect_uri` parameter instead.
563611
*
612+
* Default is
613+
*
614+
* ```ts
615+
* function currentUrl(req: express.Request): URL {
616+
* return new URL(
617+
* `${req.protocol}://${req.host}${req.originalUrl ?? req.url}`,
618+
* )
619+
* }
620+
* ```
621+
*
622+
* When behind a reverse proxy it assumes common proxy headers are in use and
623+
* that
624+
* {@link https://expressjs.com/en/guide/behind-proxies.html Express (behind proxies docs)},
625+
* or
626+
* {@link https://fastify.dev/docs/latest/Reference/Server/#trustproxy Fastify (trustProxy docs)}
627+
* are properly configured to trust them.
564628
*/
565629
currentUrl(req: express.Request): URL {
566630
return new URL(`${req.protocol}://${req.host}${req.originalUrl ?? req.url}`)
567631
}
568632

569633
/**
570-
* Authenticate request.
634+
* [Passport method] Authenticate the request.
571635
*/
572636
authenticate<TOptions extends AuthenticateOptions>(
573637
this: passport.StrategyCreated<

0 commit comments

Comments
 (0)