@muze-nl/metro-oidc 0.3.4 → 0.3.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muze-nl/metro-oidc",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "oidc client middleware for @muze-nl/metro",
5
5
  "type": "module",
6
6
  "source": [
@@ -49,6 +49,6 @@
49
49
  "dependencies": {
50
50
  "@muze-nl/assert": "^0.3.3",
51
51
  "@muze-nl/metro": "^0.6.5",
52
- "@muze-nl/metro-oauth2": "^0.5.4"
52
+ "@muze-nl/metro-oauth2": "^0.5.6"
53
53
  }
54
54
  }
package/src/oidcmw.mjs CHANGED
@@ -76,6 +76,7 @@ export default function oidcmw(options={}) {
76
76
  // now initialize an oauth2 client stack, using options.client as default
77
77
  // with forceAuthentication: true
78
78
  const scope = options.scope || 'openid'
79
+
79
80
  const oauth2Options = Object.assign(
80
81
  {
81
82
  site: options.issuer,
@@ -91,12 +92,19 @@ export default function oidcmw(options={}) {
91
92
  authorization_endpoint: options.openid_configuration.authorization_endpoint,
92
93
  token_endpoint: options.openid_configuration.token_endpoint,
93
94
  scope, //FIXME: should only use scopes supported by server
94
- redirect_uri: options.client_info.redirect_uris[0] //FIXME: find the best match?
95
+ redirect_uri: options.client_info.redirect_uris[0]
95
96
  }
96
97
  }
97
98
  //...
98
99
  )
99
100
 
101
+ const pkceSupported = options.openid_configuration.code_challenge_methods_supported.length
102
+ if (pkceSupported) {
103
+ delete oauth2Options.oauth2_configuration.client_secret
104
+ } else {
105
+ oauth2Options.oauth2_configuration.code_verifier = false
106
+ }
107
+
100
108
  const storeIdToken = async (req, next) => {
101
109
  const res = await next(req)
102
110
  const contentType = res.headers.get('content-type')