@sphereon/ssi-sdk.siopv2-oid4vp-rp-rest-api 0.34.1-feature.SSISDK.58.host.nonce.endpoint.145 → 0.34.1-feature.SSISDK.62.218
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/dist/index.cjs +186 -133
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -9
- package/dist/index.d.ts +49 -9
- package/dist/index.js +185 -132
- package/dist/index.js.map +1 -1
- package/package.json +21 -18
- package/src/index.ts +1 -1
- package/src/middleware/validationMiddleware.ts +20 -0
- package/src/siop-api-functions.ts +31 -20
- package/src/siopv2-rp-api-server.ts +9 -10
- package/src/types/types.ts +60 -3
- package/src/universal-oid4vp-api-functions.ts +195 -0
- package/src/webapp-api-functions.ts +26 -28
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { AuthorizationRequestState, AuthorizationResponseStateStatus } from '@sphereon/did-auth-siop'
|
|
1
|
+
import { AuthorizationRequestState, AuthorizationResponseStateStatus, AuthorizationResponseStateWithVerifiedData } from '@sphereon/did-auth-siop'
|
|
2
2
|
import { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'
|
|
3
3
|
import { AuthStatusResponse, GenerateAuthRequestURIResponse, uriWithBase } from '@sphereon/ssi-sdk.siopv2-oid4vp-common'
|
|
4
|
-
import {
|
|
4
|
+
import { VerifiedDataMode } from '@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth'
|
|
5
|
+
import { shaHasher as defaultHasher } from '@sphereon/ssi-sdk.core'
|
|
5
6
|
import { Request, Response, Router } from 'express'
|
|
6
7
|
import uuid from 'short-uuid'
|
|
7
8
|
import { ICreateAuthRequestWebappEndpointOpts, IRequiredContext } from './types'
|
|
8
|
-
import { shaHasher as defaultHasher } from '@sphereon/ssi-sdk.core'
|
|
9
9
|
|
|
10
10
|
export function createAuthRequestWebappEndpoint(router: Router, context: IRequiredContext, opts?: ICreateAuthRequestWebappEndpointOpts) {
|
|
11
11
|
if (opts?.enabled === false) {
|
|
12
12
|
console.log(`createAuthRequest Webapp endpoint is disabled`)
|
|
13
13
|
return
|
|
14
14
|
}
|
|
15
|
-
const path = opts?.path ?? '/webapp/
|
|
15
|
+
const path = opts?.path ?? '/webapp/queries/:queryId/auth-requests'
|
|
16
16
|
router.post(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {
|
|
17
17
|
try {
|
|
18
18
|
// if (!request.agent) throw Error('No agent configured')
|
|
19
|
-
const
|
|
20
|
-
if (!
|
|
21
|
-
return sendErrorResponse(response, 400, 'No
|
|
19
|
+
const queryId = request.params.queryId
|
|
20
|
+
if (!queryId) {
|
|
21
|
+
return sendErrorResponse(response, 400, 'No queryId query parameter provided')
|
|
22
22
|
}
|
|
23
23
|
const state: string = request.body.state ?? uuid.uuid()
|
|
24
24
|
const correlationId = request.body.correlationId ?? state
|
|
25
25
|
const qrCodeOpts = request.body.qrCodeOpts ?? opts?.qrCodeOpts
|
|
26
26
|
|
|
27
|
-
const requestByReferenceURI = uriWithBase(`/siop/
|
|
27
|
+
const requestByReferenceURI = uriWithBase(`/siop/queries/${queryId}/auth-requests/${state}`, {
|
|
28
28
|
baseURI: opts?.siopBaseURI,
|
|
29
29
|
})
|
|
30
|
-
const responseURI = uriWithBase(`/siop/
|
|
30
|
+
const responseURI = uriWithBase(`/siop/queries/${queryId}/auth-responses/${state}`, { baseURI: opts?.siopBaseURI })
|
|
31
31
|
// first version is for backwards compat
|
|
32
32
|
const responseRedirectURI =
|
|
33
33
|
('response_redirect_uri' in request.body && (request.body.response_redirect_uri as string | undefined)) ??
|
|
34
34
|
('responseRedirectURI' in request.body && (request.body.responseRedirectURI as string | undefined))
|
|
35
35
|
|
|
36
36
|
const authRequestURI = await context.agent.siopCreateAuthRequestURI({
|
|
37
|
-
|
|
37
|
+
queryId,
|
|
38
38
|
correlationId,
|
|
39
39
|
state,
|
|
40
40
|
nonce: uuid.uuid(),
|
|
@@ -53,7 +53,7 @@ export function createAuthRequestWebappEndpoint(router: Router, context: IRequir
|
|
|
53
53
|
const authRequestBody: GenerateAuthRequestURIResponse = {
|
|
54
54
|
correlationId,
|
|
55
55
|
state,
|
|
56
|
-
|
|
56
|
+
queryId,
|
|
57
57
|
authRequestURI,
|
|
58
58
|
authStatusURI: `${uriWithBase(opts?.webappAuthStatusPath ?? '/webapp/auth-status', { baseURI: opts?.webappBaseURI })}`,
|
|
59
59
|
...(qrCodeDataUri && { qrCodeDataUri }),
|
|
@@ -76,26 +76,24 @@ export function authStatusWebappEndpoint(router: Router, context: IRequiredConte
|
|
|
76
76
|
try {
|
|
77
77
|
console.log('Received auth-status request...')
|
|
78
78
|
const correlationId: string = request.body.correlationId as string
|
|
79
|
-
const
|
|
79
|
+
const queryId: string = request.body.queryId as string
|
|
80
80
|
|
|
81
81
|
const requestState =
|
|
82
|
-
correlationId &&
|
|
82
|
+
correlationId && queryId
|
|
83
83
|
? await context.agent.siopGetAuthRequestState({
|
|
84
84
|
correlationId,
|
|
85
|
-
|
|
85
|
+
queryId,
|
|
86
86
|
errorOnNotFound: false,
|
|
87
87
|
})
|
|
88
88
|
: undefined
|
|
89
|
-
if (!requestState || !
|
|
90
|
-
console.log(
|
|
91
|
-
`No authentication request mapping could be found for the given URL. correlation: ${correlationId}, definitionId: ${definitionId}`,
|
|
92
|
-
)
|
|
89
|
+
if (!requestState || !queryId || !correlationId) {
|
|
90
|
+
console.log(`No authentication request mapping could be found for the given URL. correlation: ${correlationId}, queryId: ${queryId}`)
|
|
93
91
|
response.statusCode = 404
|
|
94
92
|
const statusBody: AuthStatusResponse = {
|
|
95
93
|
status: requestState ? requestState.status : 'error',
|
|
96
94
|
error: 'No authentication request mapping could be found for the given URL.',
|
|
97
95
|
correlationId,
|
|
98
|
-
|
|
96
|
+
queryId,
|
|
99
97
|
lastUpdated: requestState ? requestState.lastUpdated : Date.now(),
|
|
100
98
|
}
|
|
101
99
|
return response.json(statusBody)
|
|
@@ -107,10 +105,10 @@ export function authStatusWebappEndpoint(router: Router, context: IRequiredConte
|
|
|
107
105
|
}
|
|
108
106
|
|
|
109
107
|
let responseState
|
|
110
|
-
if (requestState.status === '
|
|
108
|
+
if (requestState.status === 'authorization_request_retrieved') {
|
|
111
109
|
responseState = (await context.agent.siopGetAuthResponseState({
|
|
112
110
|
correlationId,
|
|
113
|
-
|
|
111
|
+
queryId,
|
|
114
112
|
includeVerifiedData: includeVerifiedData,
|
|
115
113
|
errorOnNotFound: false,
|
|
116
114
|
})) as AuthorizationResponseStateWithVerifiedData
|
|
@@ -121,7 +119,7 @@ export function authStatusWebappEndpoint(router: Router, context: IRequiredConte
|
|
|
121
119
|
status: overallState.status,
|
|
122
120
|
...(overallState.error ? { error: overallState.error?.message } : {}),
|
|
123
121
|
correlationId,
|
|
124
|
-
|
|
122
|
+
queryId,
|
|
125
123
|
lastUpdated: overallState.lastUpdated,
|
|
126
124
|
...(responseState && responseState.status === AuthorizationResponseStateStatus.VERIFIED
|
|
127
125
|
? {
|
|
@@ -148,17 +146,17 @@ export function removeAuthRequestStateWebappEndpoint(router: Router, context: IR
|
|
|
148
146
|
console.log(`removeAuthStatus Webapp endpoint is disabled`)
|
|
149
147
|
return
|
|
150
148
|
}
|
|
151
|
-
const path = opts?.path ?? '/webapp/
|
|
149
|
+
const path = opts?.path ?? '/webapp/queries/:queryId/auth-requests/:correlationId'
|
|
152
150
|
router.delete(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {
|
|
153
151
|
try {
|
|
154
152
|
const correlationId: string = request.params.correlationId
|
|
155
|
-
const
|
|
156
|
-
if (!correlationId || !
|
|
157
|
-
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId},
|
|
153
|
+
const queryId: string = request.params.queryId
|
|
154
|
+
if (!correlationId || !queryId) {
|
|
155
|
+
console.log(`No authorization request could be found for the given url. correlationId: ${correlationId}, queryId: ${queryId}`)
|
|
158
156
|
return sendErrorResponse(response, 404, 'No authorization request could be found')
|
|
159
157
|
}
|
|
160
158
|
response.statusCode = 200
|
|
161
|
-
return response.json(await context.agent.siopDeleteAuthState({
|
|
159
|
+
return response.json(await context.agent.siopDeleteAuthState({ queryId, correlationId }))
|
|
162
160
|
} catch (error) {
|
|
163
161
|
return sendErrorResponse(response, 500, error.message, error)
|
|
164
162
|
}
|
|
@@ -170,7 +168,7 @@ export function getDefinitionsEndpoint(router: Router, context: IRequiredContext
|
|
|
170
168
|
console.log(`getDefinitions Webapp endpoint is disabled`)
|
|
171
169
|
return
|
|
172
170
|
}
|
|
173
|
-
const path = opts?.path ?? '/webapp/
|
|
171
|
+
const path = opts?.path ?? '/webapp/queries'
|
|
174
172
|
router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {
|
|
175
173
|
try {
|
|
176
174
|
const definitions = await context.agent.pdmGetDefinitions()
|