Просмотр исходного кода

Normalize issuer host

https://youtrack.weseek.co.jp/issue/GW-7821
- Modify getOIDCIssuerHostName to return full url instead of hostname
- Change issuerHost params of OIDCIssuer.discover()
- Fix invalid url error on OIDC issuer discovery
mudana 3 лет назад
Родитель
Сommit
cbaae28613
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      packages/app/src/server/service/passport.ts

+ 5 - 2
packages/app/src/server/service/passport.ts

@@ -728,7 +728,9 @@ class PassportService implements S2sMessageHandlable {
     const pattern = /^https?:\/\//i;
     const pattern = /^https?:\/\//i;
     // Set protocol if not available on url
     // Set protocol if not available on url
     const absUrl = !pattern.test(issuerHost) ? `${protocol}${issuerHost}` : issuerHost;
     const absUrl = !pattern.test(issuerHost) ? `${protocol}${issuerHost}` : issuerHost;
-    return new URL(absUrl).origin;
+    const url = new URL(absUrl).href;
+    // Remove trailing slash if exists
+    return url.replace(/\/+$/, '');
   }
   }
 
 
   /**
   /**
@@ -775,8 +777,9 @@ class PassportService implements S2sMessageHandlable {
       logger.error('OidcStrategy: setup failed');
       logger.error('OidcStrategy: setup failed');
       return;
       return;
     }
     }
+    const metadataURL = this.getOIDCIssuerHostName(issuerHost);
     const oidcIssuer = await pRetry(async() => {
     const oidcIssuer = await pRetry(async() => {
-      return OIDCIssuer.discover(issuerHost);
+      return OIDCIssuer.discover(metadataURL);
     }, {
     }, {
       onFailedAttempt: (error) => {
       onFailedAttempt: (error) => {
         // get current OIDCIssuer timeout options
         // get current OIDCIssuer timeout options