solid-server 5.8.8-22f4cfec → 5.8.8-4cf09686
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/common/js/auth-buttons.mjs +20 -20
- package/common/js/index-buttons.mjs +31 -30
- package/common/js/solid.mjs +11 -11
- package/config/defaults.mjs +1 -1
- package/config/templates/server/index.html +1 -1
- package/coverage/tmp/coverage-2264-1767721071420-0.json +1 -0
- package/coverage/tmp/{coverage-2261-1766832635310-0.json → coverage-2265-1767721050068-0.json} +1 -1
- package/default-templates/server/index.html +1 -1
- package/eslint.config.mjs +102 -0
- package/index.mjs +8 -8
- package/lib/acl-checker.mjs +1 -3
- package/lib/handlers/copy.mjs +0 -2
- package/lib/handlers/cors-proxy.mjs +2 -4
- package/lib/handlers/get.mjs +12 -8
- package/lib/handlers/index.mjs +0 -2
- package/lib/handlers/options.mjs +0 -2
- package/lib/ldp.mjs +0 -3
- package/lib/models/account-manager.mjs +2 -2
- package/lib/models/oidc-manager.mjs +0 -1
- package/lib/resource-mapper.mjs +1 -3
- package/lib/utils.mjs +0 -2
- package/lib/webid/lib/get.mjs +0 -1
- package/lib/webid/tls/index.mjs +0 -1
- package/package.json +28 -27
- package/solid-server-5.8.8.tgz +0 -0
- package/test/index.mjs +0 -1
- package/test/integration/account-manager-test.mjs +2 -3
- package/test/integration/account-template-test.mjs +0 -1
- package/test/integration/acl-oidc-test.mjs +0 -1
- package/test/integration/authentication-oidc-test.mjs +13 -8
- package/test/integration/authentication-oidc-with-strict-origins-turned-off-test.mjs +14 -9
- package/test/integration/capability-discovery-test.mjs +0 -1
- package/test/integration/oidc-manager-test.mjs +95 -2
- package/test/integration/params-test.mjs +5 -5
- package/test/integration/quota-test.mjs +0 -1
- package/test/integration/www-account-creation-oidc-test.mjs +0 -1
- package/test/resources/accounts/db/oidc/op/clients/{_key_5319f8e8e4ea3214c2e92b252520d355.json → _key_69eaaa0e44e3f95d54a021c5b41e6d72.json} +1 -1
- package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -1
- package/test/resources/accounts-scenario/alice/db/oidc/op/clients/{_key_9c0fd8442675a1afbe5115b9ae300c65.json → _key_c07d7590e034645477f72d1d3000b04e.json} +1 -1
- package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +538 -313
- package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -1
- package/test/resources/accounts-scenario/bob/db/oidc/op/clients/{_key_f15f340b6dc71b68d20eca0d7e87a972.json → _key_a10918196ba5adab47f1cf77ec7fa4a6.json} +1 -1
- package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +538 -313
- package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -1
- package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/{_key_7c634dfe325475cc8750e19c72acf6d9.json → _key_e5c13302f9989c257c6967238e7ae2df.json} +1 -1
- package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -1
- package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/{_key_3f1cecaefd21253767f6e047bd9b572f.json → _key_e262eb5992e08f1284fbda4d22e0f363.json} +1 -1
- package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -1
- package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/{_key_a17f603b5907c97a5fac61a2eea7ecb2.json → _key_94d6296485729c61ea033a86a1ee2b9b.json} +1 -1
- package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -1
- package/test/resources/config/templates/server/index.html +1 -1
- package/test/unit/account-manager-test.mjs +2 -2
- package/test/unit/account-template-test.mjs +0 -1
- package/test/unit/add-cert-request-test.mjs +0 -1
- package/test/unit/email-service-test.mjs +0 -1
- package/test/unit/email-welcome-test.mjs +1 -2
- package/test/unit/esm-imports.test.mjs +0 -1
- package/test/unit/oidc-manager-test.mjs +0 -1
- package/test/unit/solid-host-test.mjs +0 -1
- package/test/unit/user-account-test.mjs +0 -1
- package/test/unit/utils-test.mjs +1 -3
- package/test/utils/index.mjs +0 -1
- package/test/utils.mjs +3 -4
- package/test/validate-turtle.mjs +0 -1
- package/common/js/auth-buttons.js +0 -67
- package/common/js/index-buttons.js +0 -44
- package/coverage/tmp/coverage-2260-1766832656715-0.json +0 -1
|
@@ -6,7 +6,6 @@ import { UserStore } from '@solid/oidc-auth-manager'
|
|
|
6
6
|
import UserAccount from '../../lib/models/user-account.mjs'
|
|
7
7
|
import SolidAuthOIDC from '@solid/solid-auth-oidc'
|
|
8
8
|
|
|
9
|
-
import fetch from 'node-fetch'
|
|
10
9
|
import localStorage from 'localstorage-memory'
|
|
11
10
|
import { URL, URLSearchParams } from 'whatwg-url'
|
|
12
11
|
import { cleanDir, cp } from '../utils.mjs'
|
|
@@ -463,7 +462,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => {
|
|
|
463
462
|
// Since user is not logged in, /authorize redirects to /login
|
|
464
463
|
expect(res.status).to.equal(302)
|
|
465
464
|
|
|
466
|
-
loginUri = new URL(res.headers.get('location'))
|
|
465
|
+
loginUri = new URL(res.headers.get('location'), aliceServerUri)
|
|
467
466
|
expect(loginUri.toString().startsWith(aliceServerUri + '/login'))
|
|
468
467
|
.to.be.true()
|
|
469
468
|
|
|
@@ -507,8 +506,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => {
|
|
|
507
506
|
})
|
|
508
507
|
.then(res => {
|
|
509
508
|
expect(res.status).to.equal(302)
|
|
510
|
-
|
|
511
|
-
|
|
509
|
+
const location = res.headers.get('location')
|
|
510
|
+
postLoginUri = new URL(location, aliceServerUri).toString()
|
|
511
|
+
// Native fetch: get first set-cookie header
|
|
512
|
+
const setCookieHeaders = res.headers.getSetCookie ? res.headers.getSetCookie() : [res.headers.get('set-cookie')]
|
|
513
|
+
cookie = setCookieHeaders[0]
|
|
512
514
|
|
|
513
515
|
// Successful login gets redirected back to /authorize and then
|
|
514
516
|
// back to app
|
|
@@ -533,20 +535,23 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => {
|
|
|
533
535
|
})
|
|
534
536
|
.then(res => {
|
|
535
537
|
expect(res.status).to.equal(302)
|
|
536
|
-
const
|
|
537
|
-
const
|
|
538
|
+
const location = res.headers.get('location')
|
|
539
|
+
const postSharingUri = new URL(location, aliceServerUri).toString()
|
|
540
|
+
const setCookieHeaders = res.headers.getSetCookie ? res.headers.getSetCookie() : [res.headers.get('set-cookie')]
|
|
541
|
+
const cookieFromSharing = setCookieHeaders[0] || cookie
|
|
538
542
|
|
|
539
543
|
// Successful login gets redirected back to /authorize and then
|
|
540
544
|
// back to app
|
|
541
|
-
expect(
|
|
545
|
+
expect(postSharingUri.startsWith(aliceServerUri + '/authorize'))
|
|
542
546
|
.to.be.true()
|
|
543
547
|
|
|
544
|
-
return fetch(
|
|
548
|
+
return fetch(postSharingUri, { redirect: 'manual', headers: { cookie: cookieFromSharing } })
|
|
545
549
|
})
|
|
546
550
|
.then(res => {
|
|
547
551
|
// User gets redirected back to original app
|
|
548
552
|
expect(res.status).to.equal(302)
|
|
549
|
-
|
|
553
|
+
const location = res.headers.get('location')
|
|
554
|
+
callbackUri = location.startsWith('http') ? location : new URL(location, aliceServerUri).toString()
|
|
550
555
|
expect(callbackUri.startsWith('https://app.example.com#'))
|
|
551
556
|
})
|
|
552
557
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* eslint-disable no-unused-expressions */
|
|
2
1
|
import { fileURLToPath } from 'url'
|
|
3
2
|
import path from 'path'
|
|
3
|
+
import { URL } from 'url'
|
|
4
4
|
import chai from 'chai'
|
|
5
5
|
import fs from 'fs-extra'
|
|
6
6
|
import { fromServerConfig } from '../../lib/models/oidc-manager.mjs'
|
|
@@ -38,5 +38,98 @@ describe('OidcManager', () => {
|
|
|
38
38
|
expect(oidc.users.backend.path.endsWith('db/oidc/users'))
|
|
39
39
|
expect(oidc.users.saltRounds).to.equal(saltRounds)
|
|
40
40
|
})
|
|
41
|
+
|
|
42
|
+
it('should set the provider issuer which is used for iss claim in tokens', () => {
|
|
43
|
+
const providerUri = 'https://pivot-test.solidproject.org:8443'
|
|
44
|
+
const host = SolidHost.from({ serverUri: providerUri })
|
|
45
|
+
|
|
46
|
+
const saltRounds = 5
|
|
47
|
+
const argv = {
|
|
48
|
+
host,
|
|
49
|
+
dbPath,
|
|
50
|
+
saltRounds
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const oidc = fromServerConfig(argv)
|
|
54
|
+
|
|
55
|
+
// Verify the issuer is set correctly for RFC 9207 compliance
|
|
56
|
+
// The iss claim in tokens should match this issuer value
|
|
57
|
+
expect(oidc.provider.issuer).to.exist
|
|
58
|
+
expect(oidc.provider.issuer).to.not.be.null
|
|
59
|
+
expect(oidc.provider.issuer).to.equal(providerUri)
|
|
60
|
+
console.log('Provider issuer (used for iss claim):', oidc.provider.issuer)
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
describe('RFC 9207 - Authorization redirect with iss parameter', () => {
|
|
65
|
+
it('should include iss parameter when redirecting after authorization', async () => {
|
|
66
|
+
const providerUri = 'https://localhost:8443'
|
|
67
|
+
const host = SolidHost.from({ providerUri })
|
|
68
|
+
|
|
69
|
+
const argv = {
|
|
70
|
+
host,
|
|
71
|
+
dbPath,
|
|
72
|
+
saltRounds: 5
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const oidc = fromServerConfig(argv)
|
|
76
|
+
|
|
77
|
+
// Dynamically import BaseRequest from oidc-op
|
|
78
|
+
const { default: BaseRequest } = await import('@solid/oidc-op/src/handlers/BaseRequest.js')
|
|
79
|
+
|
|
80
|
+
// Create a mock request/response to test the redirect behavior
|
|
81
|
+
const mockReq = {
|
|
82
|
+
method: 'GET',
|
|
83
|
+
query: {
|
|
84
|
+
response_type: 'code',
|
|
85
|
+
redirect_uri: 'https://app.example.com/callback',
|
|
86
|
+
client_id: 'https://app.example.com',
|
|
87
|
+
state: 'test-state'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const mockRes = {
|
|
92
|
+
redirectCalled: false,
|
|
93
|
+
redirectUrl: '',
|
|
94
|
+
redirect (url) {
|
|
95
|
+
this.redirectCalled = true
|
|
96
|
+
this.redirectUrl = url
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const request = new BaseRequest(mockReq, mockRes, oidc.provider)
|
|
101
|
+
request.params = mockReq.query
|
|
102
|
+
|
|
103
|
+
// Simulate a successful authorization by calling redirect with auth data
|
|
104
|
+
try {
|
|
105
|
+
request.redirect({ code: 'test-auth-code' })
|
|
106
|
+
} catch (err) {
|
|
107
|
+
// The redirect throws a HandledError, which is expected behavior
|
|
108
|
+
// We just need to check that the redirect was called with the right URL
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
expect(mockRes.redirectCalled).to.be.true
|
|
112
|
+
expect(mockRes.redirectUrl).to.exist
|
|
113
|
+
|
|
114
|
+
// Parse the redirect URL to check for iss parameter
|
|
115
|
+
const redirectUrl = new URL(mockRes.redirectUrl)
|
|
116
|
+
|
|
117
|
+
// The iss parameter can be in either the query string or hash fragment
|
|
118
|
+
// depending on the response_mode (query or fragment)
|
|
119
|
+
let issParam = redirectUrl.searchParams.get('iss')
|
|
120
|
+
if (!issParam && redirectUrl.hash) {
|
|
121
|
+
// Check in the hash fragment
|
|
122
|
+
const hashParams = new URLSearchParams(redirectUrl.hash.substring(1))
|
|
123
|
+
issParam = hashParams.get('iss')
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
console.log('Redirect URL:', mockRes.redirectUrl)
|
|
127
|
+
console.log('RFC 9207 - iss parameter in redirect:', issParam)
|
|
128
|
+
|
|
129
|
+
// RFC 9207: The iss parameter MUST be present and match the provider issuer
|
|
130
|
+
expect(issParam, 'RFC 9207: iss parameter must be present in authorization response').to.exist
|
|
131
|
+
expect(issParam).to.not.be.null
|
|
132
|
+
expect(issParam).to.equal(providerUri)
|
|
133
|
+
})
|
|
41
134
|
})
|
|
42
|
-
})
|
|
135
|
+
})
|
|
@@ -11,7 +11,7 @@ import ldnode, { createServer } from '../../index.mjs'
|
|
|
11
11
|
|
|
12
12
|
const __filename = fileURLToPath(import.meta.url)
|
|
13
13
|
const __dirname = path.dirname(__filename)
|
|
14
|
-
console.log(getTestRoot())
|
|
14
|
+
// console.log(getTestRoot())
|
|
15
15
|
|
|
16
16
|
describe('LDNODE params', function () {
|
|
17
17
|
describe('suffixMeta', function () {
|
|
@@ -46,7 +46,7 @@ describe('LDNODE params', function () {
|
|
|
46
46
|
|
|
47
47
|
it('should fallback on current working directory', function () {
|
|
48
48
|
assert.equal(path.normalize(ldp.locals.ldp.resourceMapper._rootPath), path.normalize(process.cwd()))
|
|
49
|
-
console.log('Root path is', ldp.locals.ldp.resourceMapper._rootPath)
|
|
49
|
+
// console.log('Root path is', ldp.locals.ldp.resourceMapper._rootPath)
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
it('new : should find resource in correct path', function (done) {
|
|
@@ -57,7 +57,7 @@ describe('LDNODE params', function () {
|
|
|
57
57
|
const fileContent = '<#current> <#temp> 123 .'
|
|
58
58
|
fs.mkdirSync(dirPath, { recursive: true })
|
|
59
59
|
fs.writeFileSync(filePath, fileContent)
|
|
60
|
-
console.log('Wrote file to', filePath)
|
|
60
|
+
// console.log('Wrote file to', filePath)
|
|
61
61
|
server.get('/sampleContainer/example.ttl')
|
|
62
62
|
.expect('Link', /http:\/\/www.w3.org\/ns\/ldp#Resource/)
|
|
63
63
|
.expect(200)
|
|
@@ -71,7 +71,7 @@ describe('LDNODE params', function () {
|
|
|
71
71
|
it.skip('initial : should find resource in correct path', function (done) {
|
|
72
72
|
// Write to the default resources directory, matching the server's root
|
|
73
73
|
const resourcePath = path.join('sampleContainer', 'example.ttl')
|
|
74
|
-
console.log('initial : Writing test resource to', resourcePath)
|
|
74
|
+
// console.log('initial : Writing test resource to', resourcePath)
|
|
75
75
|
setTestRoot(path.join(__dirname, '../resources/'))
|
|
76
76
|
write('<#current> <#temp> 123 .', resourcePath)
|
|
77
77
|
|
|
@@ -102,7 +102,7 @@ describe('LDNODE params', function () {
|
|
|
102
102
|
const fileContent = '<#current> <#temp> 123 .'
|
|
103
103
|
fs.mkdirSync(dirPath, { recursive: true })
|
|
104
104
|
fs.writeFileSync(filePath, fileContent)
|
|
105
|
-
console.log('Wrote file to', filePath)
|
|
105
|
+
// console.log('Wrote file to', filePath)
|
|
106
106
|
|
|
107
107
|
server.get('/sampleContainer/example.ttl')
|
|
108
108
|
.expect('Link', /http:\/\/www.w3.org\/ns\/ldp#Resource/)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"
|
|
1
|
+
{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"69eaaa0e44e3f95d54a021c5b41e6d72","client_secret":"676dd69f6581893b7f99c474575e8e35","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"provider":{"url":"https://localhost:3457","configuration":{"issuer":"https://localhost:3457","jwks_uri":"https://localhost:3457/jwks","scopes_supported":["openid","offline_access"],"response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"token_types_supported":["legacyPop","dpop"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:3457/session","end_session_endpoint":"https://localhost:3457/logout","authorization_endpoint":"https://localhost:3457/authorize","token_endpoint":"https://localhost:3457/token","userinfo_endpoint":"https://localhost:3457/userinfo","registration_endpoint":"https://localhost:3457/register"},"jwks":{"keys":[{"kid":"lNZOB-DPE1k","kty":"RSA","alg":"RS256","n":"uvih8HfZj7Wu5Y8knLHxRY6v7oHL2jXWD-B6hXCreYhwaG9EEUt6Rp94p8-JBug3ywo8C_9dNg0RtQLEttcIC_vhqqlJI3pZxpGKXuD9h7XK-PppFVvgnfIGADG0Z-WzbcGDxlefStohR31Hjw5U3ioG3VtXGAYbqlOHM1l2UgDMJwBD5qwFmPP8gp5E2WQKCsuLvxDuOrkAbSDjw2zaI3RRmbLzdj4QkGej8GXhBptgM9RwcKmnoXu0sUdlootmcdiEg74yQ9M6EshNMhiv4k_W0rl7RqVOEL2PsAdmdbF_iWL8a90rGYOEILBrlU6bBR2mTvjV_Hvq-ifFy1YAmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y38YKDtydoE","kty":"RSA","alg":"RS384","n":"tfgZKLjc8UMIblfAlVibJI_2uAxDNprn2VVLebS0sp6d1mtCXQkMYLlJ6e-7kavl8we391Ovnq5bRgpsFRq_LtRX9MpVlfioAUHwWPEG-R6vrQjgo4uynVhI3UEPHyNmZA5J4u34HNVTfAgmquomwwOmOv29ZNRxuYP1kVtscz1JeFPwg6LA7BxWrLc9ev4FQR6tjJKdo2kdLjAXR92odbCzJZ_jdYT3vIVCexMHxhoKnqCImkhfgKbGXcPHXWcelmuA2tzBaLut-Jjo0nJVQjRNDqy0Gyac0TptwFIxaiyHeTqugolUmEaJSfBSLszIRdlOTIGPJ7zdg5dJFK_Lxw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"WyMVv6BJ5Dk","kty":"RSA","alg":"RS512","n":"5JDlpbm2TjSW1wpdUZc5NHOqVVrNH_GumoODK_mk-MqImaIRpdR9b1ZJrK6FrW7HIF2bXvebD7olmp9a1goqe-ILbL_ORmhzlhRtyhjWQ-UOZqK5yOXqXXGQXgmok6TN-s55A-h_g12A7Yk5Y5S8EVa9EA4Axwqvm-Q_AkH0yS1qJo6BXYXb1fx205ucx-Ccot2LEBfxv8M7NOFTa-_G-sNchiKQMRoLhbZtLbSK2R1jkqGciEiRSLeXNG4nDu7Wd91-vhBixA1McxnzW96mW8lQwNXXo4gNH7SjONtYLlPQhZVEbmsQmXrOQN8a5RDkybFOIsbucItizSE9V_D7WQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"UykSj_HLgFA","kty":"RSA","alg":"RS256","n":"u79eQlGJN2XFNR-uEmPVtrB_ENRqaS81o6m63tZ5-PwhGHCwJ7rfVnnnvf6Ij_p91Z9pNpWBIVyZcw6UmQIoIBH-3BfxdaqhBxX9bf_N78TKj8_HU5IYjGijale4gog3kj9W2tJJO7R9iA43msjwLRD7pbAHp1iKFJgVTSXJlyLRbC82Dj4ivsEgJjPGvZt16OsGP5myIQwXEGzSPcEI0R9daZE5iM6xFZosaJ8B77eU-Aj3ciwxUBPi5BSZi2P1ZsF4QgSj3N7ZLbVKNW4FFr84IamA2YI0D7PyyNAE2PUZT8n0jHWRJKunuZuy5mgBY8H41KdBI6gNJqY90nHeJw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BJDNTt8RpPE","kty":"RSA","alg":"RS384","n":"nXTd5AoT220nBkW6Zeax8caUI7_Tt0y4v9TEW8TOrzCVvhLBiKpQPjILUTfkGHzxPtysEzDQFSYdHWvg_fvGYItjJBunBMsKCNcb2_CDr2HXD6C0s62bAgct8bBSoaT1MLQ_3MaFKXSF3ZuB87X2B8CVUJ386HP2GY1kl54BuMdFELNZYhy9S_D0KHnQls52Vvb99X9WaYOyxvfr03PG-9EycnkWas5tn1pPFzT0DtJtBJ4IBtXQxTr98jpn_MCz1gRnMgzzkfSOcrMkkMXxePqxNINVKFXtRy7DaJiFOcCMbuK2RJUkSfY2uKcx0aKbp5Xhvix1W8N7c0Y90i6_6w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"z8iijSOOIs4","kty":"RSA","alg":"RS512","n":"rPCHP9XeTGOLf1Ezxeq_bdGdvYQZa993YcSVudT0EN6drTWqjykhUVEkT4MGAvLvax38kLARbPUTgMUV9UckDDWn6lRq4q6IZ5pytNOieQKZHzjEmQGzlbnEn1F2m1i5SAfBL-qsnt5q2RXMAiIUXk9q1ChJEHJxOZxnRIoQMc7yTsjjSdtIZKePFiYFn0nsl3A234ByyIBRjzZeoYEtTQKjDR7fP9LO78oZAgpwoGqmfI4IltqQYkFoqrN8I8l1yiJGyuvZRgDXUZ2fxGOQx2WD4xvlFL2TOCfN1UaPE9R4JdbRLLAOf5u1Sqnh4XTjDBhBbVodsmmbtvk4wFo-GQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"zD76wa11A2Y","kty":"RSA","alg":"RS256","n":"nMaSioq1An1J3tbkmc-zRrR8lkbP-WUVRuYhDxQvV-OcBw1R6cdyCcoeFJ1zuUT7ne6BlU6GMPRHuRKaH0KuOaiktUYtXm06T_HvtKFgCQSAKjMUj_ZHfTAJP8ahUsIc0D995XKp7nIGRF7Iy7I24QQFPRh7PmGlREZ52GJgYQgbm020-sWani0MqHoUFBlWxZW9NEqY1c3brN_qWnzjRKly6Kkk3sW1XHPcRLvoHnHQ6TKXJ8pfl-bNjTfK6zq9fDCZ_TY3qQZy66yT_2XPO6X0GHTdJsZlCj7Jg0qrilTHUkJra1bppTSAtVSQnSmYt_IV8zOYiVdJ3kw2khPcKw","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{},"registration":{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"
|
|
1
|
+
{"provider":{"url":"https://localhost:3457","configuration":{"issuer":"https://localhost:3457","jwks_uri":"https://localhost:3457/jwks","scopes_supported":["openid","offline_access"],"response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"token_types_supported":["legacyPop","dpop"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:3457/session","end_session_endpoint":"https://localhost:3457/logout","authorization_endpoint":"https://localhost:3457/authorize","token_endpoint":"https://localhost:3457/token","userinfo_endpoint":"https://localhost:3457/userinfo","registration_endpoint":"https://localhost:3457/register"},"jwks":{"keys":[{"kid":"lNZOB-DPE1k","kty":"RSA","alg":"RS256","n":"uvih8HfZj7Wu5Y8knLHxRY6v7oHL2jXWD-B6hXCreYhwaG9EEUt6Rp94p8-JBug3ywo8C_9dNg0RtQLEttcIC_vhqqlJI3pZxpGKXuD9h7XK-PppFVvgnfIGADG0Z-WzbcGDxlefStohR31Hjw5U3ioG3VtXGAYbqlOHM1l2UgDMJwBD5qwFmPP8gp5E2WQKCsuLvxDuOrkAbSDjw2zaI3RRmbLzdj4QkGej8GXhBptgM9RwcKmnoXu0sUdlootmcdiEg74yQ9M6EshNMhiv4k_W0rl7RqVOEL2PsAdmdbF_iWL8a90rGYOEILBrlU6bBR2mTvjV_Hvq-ifFy1YAmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y38YKDtydoE","kty":"RSA","alg":"RS384","n":"tfgZKLjc8UMIblfAlVibJI_2uAxDNprn2VVLebS0sp6d1mtCXQkMYLlJ6e-7kavl8we391Ovnq5bRgpsFRq_LtRX9MpVlfioAUHwWPEG-R6vrQjgo4uynVhI3UEPHyNmZA5J4u34HNVTfAgmquomwwOmOv29ZNRxuYP1kVtscz1JeFPwg6LA7BxWrLc9ev4FQR6tjJKdo2kdLjAXR92odbCzJZ_jdYT3vIVCexMHxhoKnqCImkhfgKbGXcPHXWcelmuA2tzBaLut-Jjo0nJVQjRNDqy0Gyac0TptwFIxaiyHeTqugolUmEaJSfBSLszIRdlOTIGPJ7zdg5dJFK_Lxw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"WyMVv6BJ5Dk","kty":"RSA","alg":"RS512","n":"5JDlpbm2TjSW1wpdUZc5NHOqVVrNH_GumoODK_mk-MqImaIRpdR9b1ZJrK6FrW7HIF2bXvebD7olmp9a1goqe-ILbL_ORmhzlhRtyhjWQ-UOZqK5yOXqXXGQXgmok6TN-s55A-h_g12A7Yk5Y5S8EVa9EA4Axwqvm-Q_AkH0yS1qJo6BXYXb1fx205ucx-Ccot2LEBfxv8M7NOFTa-_G-sNchiKQMRoLhbZtLbSK2R1jkqGciEiRSLeXNG4nDu7Wd91-vhBixA1McxnzW96mW8lQwNXXo4gNH7SjONtYLlPQhZVEbmsQmXrOQN8a5RDkybFOIsbucItizSE9V_D7WQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"UykSj_HLgFA","kty":"RSA","alg":"RS256","n":"u79eQlGJN2XFNR-uEmPVtrB_ENRqaS81o6m63tZ5-PwhGHCwJ7rfVnnnvf6Ij_p91Z9pNpWBIVyZcw6UmQIoIBH-3BfxdaqhBxX9bf_N78TKj8_HU5IYjGijale4gog3kj9W2tJJO7R9iA43msjwLRD7pbAHp1iKFJgVTSXJlyLRbC82Dj4ivsEgJjPGvZt16OsGP5myIQwXEGzSPcEI0R9daZE5iM6xFZosaJ8B77eU-Aj3ciwxUBPi5BSZi2P1ZsF4QgSj3N7ZLbVKNW4FFr84IamA2YI0D7PyyNAE2PUZT8n0jHWRJKunuZuy5mgBY8H41KdBI6gNJqY90nHeJw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BJDNTt8RpPE","kty":"RSA","alg":"RS384","n":"nXTd5AoT220nBkW6Zeax8caUI7_Tt0y4v9TEW8TOrzCVvhLBiKpQPjILUTfkGHzxPtysEzDQFSYdHWvg_fvGYItjJBunBMsKCNcb2_CDr2HXD6C0s62bAgct8bBSoaT1MLQ_3MaFKXSF3ZuB87X2B8CVUJ386HP2GY1kl54BuMdFELNZYhy9S_D0KHnQls52Vvb99X9WaYOyxvfr03PG-9EycnkWas5tn1pPFzT0DtJtBJ4IBtXQxTr98jpn_MCz1gRnMgzzkfSOcrMkkMXxePqxNINVKFXtRy7DaJiFOcCMbuK2RJUkSfY2uKcx0aKbp5Xhvix1W8N7c0Y90i6_6w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"z8iijSOOIs4","kty":"RSA","alg":"RS512","n":"rPCHP9XeTGOLf1Ezxeq_bdGdvYQZa993YcSVudT0EN6drTWqjykhUVEkT4MGAvLvax38kLARbPUTgMUV9UckDDWn6lRq4q6IZ5pytNOieQKZHzjEmQGzlbnEn1F2m1i5SAfBL-qsnt5q2RXMAiIUXk9q1ChJEHJxOZxnRIoQMc7yTsjjSdtIZKePFiYFn0nsl3A234ByyIBRjzZeoYEtTQKjDR7fP9LO78oZAgpwoGqmfI4IltqQYkFoqrN8I8l1yiJGyuvZRgDXUZ2fxGOQx2WD4xvlFL2TOCfN1UaPE9R4JdbRLLAOf5u1Sqnh4XTjDBhBbVodsmmbtvk4wFo-GQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"zD76wa11A2Y","kty":"RSA","alg":"RS256","n":"nMaSioq1An1J3tbkmc-zRrR8lkbP-WUVRuYhDxQvV-OcBw1R6cdyCcoeFJ1zuUT7ne6BlU6GMPRHuRKaH0KuOaiktUYtXm06T_HvtKFgCQSAKjMUj_ZHfTAJP8ahUsIc0D995XKp7nIGRF7Iy7I24QQFPRh7PmGlREZ52GJgYQgbm020-sWani0MqHoUFBlWxZW9NEqY1c3brN_qWnzjRKly6Kkk3sW1XHPcRLvoHnHQ6TKXJ8pfl-bNjTfK6zq9fDCZ_TY3qQZy66yT_2XPO6X0GHTdJsZlCj7Jg0qrilTHUkJra1bppTSAtVSQnSmYt_IV8zOYiVdJ3kw2khPcKw","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{},"registration":{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"69eaaa0e44e3f95d54a021c5b41e6d72","client_secret":"676dd69f6581893b7f99c474575e8e35","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"],"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDozNDU3IiwiYXVkIjoiNjllYWFhMGU0NGUzZjk1ZDU0YTAyMWM1YjQxZTZkNzIiLCJzdWIiOiI2OWVhYWEwZTQ0ZTNmOTVkNTRhMDIxYzViNDFlNmQ3MiJ9.RYkuJ1wcFa-9J-wDyxnPkGjzQYV-DhkB-13VOzceJrT9zAL93P_ubUG0UEB7VPkzOYUg9j_TrX7Rc2Y0uYYZoOH0Vq43xrn0mEVY9wyBafKIexKJWb67rRi-3n3oRlHjC65AP_PLpuusCxQBdqq2Hv6YyR4cDfJs_C2ch3AEUfbKXWIndAmDjeLABum1RoD8LAOfda_bvLdVJEd5KnkTX3_ivKHH1IAcwZROuZdh5exwExrA2VOGDGTM_S34Vm-1tgFLusr_y7-7CYpsA9LBg7LL9KB4_kh6b50d640eV0KpeQUOCC4eQs7VCtvkh2Y0Tjz5HRQqEoFks0MJmbLcEw","registration_client_uri":"https://localhost:3457/register/69eaaa0e44e3f95d54a021c5b41e6d72","client_id_issued_at":1767721054,"client_secret_expires_at":0},"store":{}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"client_id":"
|
|
1
|
+
{"redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"client_id":"c07d7590e034645477f72d1d3000b04e","client_secret":"1ba8ff54cc77601349cf9312d77c3336","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7000/goodbye"]}
|