@continuoussecuritytooling/keycloak-reporter 0.8.5 → 0.8.8

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/.ct.yaml CHANGED
@@ -1,5 +1,5 @@
1
1
  chart-dirs:
2
- - charts/keycloak-reporter/
2
+ - charts/
3
3
  debug: true
4
4
  target-branch: main
5
5
  check-version-increment: false
@@ -123,10 +123,15 @@ jobs:
123
123
  - name: Wait for Keycloak server
124
124
  run: .bin/wait-for-server.sh
125
125
 
126
- - name: Run end2end tests
127
- run: |
128
- env
129
- npm run end2end:test
126
+ - name: Run End2End Tests
127
+ uses: nick-fields/retry@v3
128
+ with:
129
+ max_attempts: 3
130
+ retry_on: error
131
+ timeout_minutes: 10
132
+ command: |
133
+ env
134
+ npm run end2end:test
130
135
  env:
131
136
  WEBHOOK_TESTING_TEAMS: ${{ secrets.WEBHOOK_TESTING_TEAMS }}
132
137
  WEBHOOK_TESTING_SLACK: ${{ secrets.WEBHOOK_TESTING_SLACK }}
package/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ ## [0.8.8](https://github.com/ContinuousSecurityTooling/keycloak-reporter/compare/v0.8.7...v0.8.8) (2024-02-05)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **deps:** update dependency @keycloak/keycloak-admin-client to v23.0.5 ([d85eb6a](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/d85eb6a06607249c2f2cfa66268a19b9edc12d74))
7
+ * **deps:** update dependency @keycloak/keycloak-admin-client to v23.0.6 ([23b1248](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/23b1248d66272b53482ab228275c2b0c1f34f419))
8
+ * **deps:** update dependency npm to v10.4.0 ([1b6058d](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/1b6058ddcaba382ecd31bf470e1ee99f462ecd29))
9
+ * **Helm:** Correcting mapping issues for labels ([0fe2873](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/0fe2873594c91be59f435813174e4bacf7d1e59d))
10
+ * **Helm:** Correcting resource limits ([1cb51b9](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/1cb51b95f83aefd0fae2d9d6d02fb5a6d24a1a42))
11
+ * **Security:** Correcting chart security findings ([3a4bc67](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/3a4bc67bc8aaa0a1c2426a9baf58d32efca6937d))
12
+
13
+
14
+ ### Features
15
+
16
+ * **Chart:** Allowing labels and annotations to be added ([f0f350b](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/f0f350bcc6deecc098743af09ab7e840179b4259))
17
+
18
+
19
+
20
+ ## [0.8.7](https://github.com/ContinuousSecurityTooling/keycloak-reporter/compare/v0.8.6...v0.8.7) (2024-01-29)
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * **Tests:** Correcting test assertions ([1619fb6](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/1619fb6663a68cbbe5daf07a6dcbb786eac77818))
26
+
27
+
28
+
29
+ ## [0.8.6](https://github.com/ContinuousSecurityTooling/keycloak-reporter/compare/v0.8.5...v0.8.6) (2024-01-29)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * **Error-Handling:** Correcting error handling and improve error messages ([25f0ceb](https://github.com/ContinuousSecurityTooling/keycloak-reporter/commit/25f0ceb241446205939b606c4022dc286cc5a965)), closes [#184](https://github.com/ContinuousSecurityTooling/keycloak-reporter/issues/184)
35
+
36
+
37
+
1
38
  ## [0.8.5](https://github.com/ContinuousSecurityTooling/keycloak-reporter/compare/v0.8.4...v0.8.5) (2024-01-29)
2
39
 
3
40
 
package/Dockerfile CHANGED
@@ -17,7 +17,7 @@ COPY dist/ docker_entrypoint.sh package.json /app
17
17
 
18
18
  WORKDIR /app
19
19
 
20
- RUN cd /app && npm install --omit=dev &&\
20
+ RUN npm install --omit=dev &&\
21
21
  chown -R 1000:2000 /app
22
22
 
23
23
  # apt update
@@ -27,4 +27,4 @@ RUN apt-get update && apt-get -y upgrade &&\
27
27
 
28
28
  USER 1000
29
29
 
30
- ENTRYPOINT ["/app/docker_entrypoint.sh"]
30
+ ENTRYPOINT ["/app/docker_entrypoint.sh"]
@@ -15,14 +15,14 @@ type: application
15
15
  # This is the chart version. This version number should be incremented each time you make changes
16
16
  # to the chart and its templates, including the app version.
17
17
  # Versions are expected to follow Semantic Versioning (https://semver.org/)
18
- version: 1.2.4
18
+ version: 1.3.1
19
19
 
20
20
  # This is the version number of the application being deployed. This version number should be
21
21
  # incremented each time you make changes to the application. Versions are not expected to
22
22
  # follow Semantic Versioning. They should reflect the version the application is using.
23
23
  # It is recommended to use it with quotes.
24
24
  # renovate: datasource=docker depName=ContinuousSecurityTooling/keycloak-reporter
25
- appVersion: '0.8.5'
25
+ appVersion: '0.8.8'
26
26
  maintainers:
27
27
  # Martin Reinhardt
28
28
  - name: hypery2k
@@ -1,6 +1,6 @@
1
1
  # keycloak-reporter
2
2
 
3
- ![Version: 1.2.3](https://img.shields.io/badge/Version-1.2.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.8.2](https://img.shields.io/badge/AppVersion-0.8.2-informational?style=flat-square)
3
+ ![Version: 1.3.1](https://img.shields.io/badge/Version-1.3.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.8.8](https://img.shields.io/badge/AppVersion-0.8.8-informational?style=flat-square)
4
4
 
5
5
  Keycloak user and client reporting tool for automated regular access checks.
6
6
 
@@ -26,7 +26,8 @@ Keycloak user and client reporting tool for automated regular access checks.
26
26
  | keycloak.config.webhookMessage | string | `""` | optional message for the webhook post |
27
27
  | nameOverride | string | `""` | |
28
28
  | nodeSelector | object | `{}` | |
29
- | podAnnotations | object | `{}` | |
29
+ | podAnnotations | map | `{}` | labels to be added to job pod(s) |
30
+ | podLabels | map | `{}` | labels to be added to job pod(s) |
30
31
  | replicaCount | int | `1` | |
31
32
  | serviceAccount.annotations | object | `{}` | |
32
33
  | serviceAccount.create | bool | `true` | |
@@ -34,4 +35,4 @@ Keycloak user and client reporting tool for automated regular access checks.
34
35
  | tolerations | list | `[]` | |
35
36
 
36
37
  ----------------------------------------------
37
- Autogenerated from chart metadata using [helm-docs v1.11.3](https://github.com/norwoodj/helm-docs/releases/v1.11.3)
38
+ Autogenerated from chart metadata using [helm-docs v1.12.0](https://github.com/norwoodj/helm-docs/releases/v1.12.0)
@@ -6,6 +6,11 @@ env:
6
6
  secretKeyRef:
7
7
  key: clientSecret
8
8
  name: kc-reporter
9
+ podLabels:
10
+ a: "b"
11
+ podAnnotations:
12
+ # see https://www.elastic.co/guide/en/beats/filebeat/current/configuration-autodiscover-hints.html
13
+ co.elastic.logs/enabled: "true"
9
14
  keycloak:
10
15
  config:
11
16
  url: http://localhost:8080
@@ -30,6 +30,16 @@ Create chart name and version as used by the chart label.
30
30
  {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
31
31
  {{- end }}
32
32
 
33
+ {{/*
34
+ Common labels
35
+ */}}
36
+ {{- define "keycloak-reporter.annotations" -}}
37
+ net.cst.kc-reporter/config-checksum: {{ include (print $.Template.BasePath "/secret.yaml") $ | sha256sum }}
38
+ {{- range $k, $v := .Values.podAnnotations }}
39
+ {{ $k }}: {{ $v | quote }}
40
+ {{- end }}
41
+ {{- end }}
42
+
33
43
  {{/*
34
44
  Common labels
35
45
  */}}
@@ -40,6 +50,9 @@ helm.sh/chart: {{ include "keycloak-reporter.chart" . }}
40
50
  app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41
51
  {{- end }}
42
52
  app.kubernetes.io/managed-by: {{ .Release.Service }}
53
+ {{- range $k, $v := .Values.podLabels }}
54
+ {{ $k }}: {{ $v | quote }}
55
+ {{- end }}
43
56
  {{- end }}
44
57
 
45
58
  {{/*
@@ -4,15 +4,19 @@ apiVersion: batch/v1
4
4
  kind: CronJob
5
5
  metadata:
6
6
  name: {{ printf "%s-job-%s" $fullName $name }}
7
+ annotations:
8
+ {{- include "keycloak-reporter.annotations" $ | nindent 4 }}
9
+ labels:
10
+ {{- include "keycloak-reporter.labels" $ | nindent 4 }}
7
11
  spec:
8
12
  schedule: {{ $config.schedule }}
9
13
  jobTemplate:
10
14
  spec:
11
15
  template:
12
- {{- with $.Values.podAnnotations }}
13
16
  annotations:
14
- {{- toYaml $ | nindent 10 }}
15
- {{- end }}
17
+ {{- include "keycloak-reporter.annotations" $ | nindent 8 }}
18
+ labels:
19
+ {{- include "keycloak-reporter.labels" $ | nindent 8 }}
16
20
  spec:
17
21
  {{- with $.Values.imagePullSecrets }}
18
22
  imagePullSecrets:
@@ -69,4 +73,4 @@ spec:
69
73
  claimName: {{ $fullName }}-reports
70
74
  {{- end }}
71
75
  ---
72
- {{- end -}}
76
+ {{- end -}}
@@ -7,7 +7,11 @@ metadata:
7
7
  helm.sh/hook: test
8
8
  helm.sh/hook-delete-policy: "hook-succeeded,before-hook-creation"
9
9
  helm.sh/hook-weight: "5"
10
+ {{- include "keycloak-reporter.annotations" . | nindent 4 }}
11
+ labels:
12
+ {{- include "keycloak-reporter.labels" . | nindent 4 }}
10
13
  spec:
14
+ automountServiceAccountToken: false
11
15
  containers:
12
16
  - name: config-test
13
17
  image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag | default $.Chart.AppVersion }}"
@@ -8,7 +8,7 @@ image:
8
8
  repository: continuoussecuritytooling/keycloak-reporting-cli
9
9
  pullPolicy: IfNotPresent
10
10
  # Overrides the image tag whose default is the chart appVersion.
11
- tag: ""
11
+ tag: ''
12
12
 
13
13
  imagePullSecrets: []
14
14
  nameOverride: ''
@@ -22,7 +22,9 @@ serviceAccount:
22
22
  # The name of the service account to use.
23
23
  # If not set and create is true, a name is generated using the fullname template
24
24
  name: ''
25
-
25
+ # -- (map) labels to be added to job pod(s)
26
+ podLabels: {}
27
+ # -- (map) labels to be added to job pod(s)
26
28
  podAnnotations: {}
27
29
  # @ignore, Configure pod security context
28
30
  podSecurityContext:
@@ -67,9 +69,11 @@ resources:
67
69
  limits:
68
70
  cpu: 200m
69
71
  memory: 256Mi
72
+ ephemeral-storage: 200Mi
70
73
  requests:
71
74
  cpu: 100m
72
75
  memory: 128Mi
76
+ ephemeral-storage: 100Mi
73
77
 
74
78
  nodeSelector: {}
75
79
 
@@ -16,9 +16,9 @@ export async function createClient(options) {
16
16
  });
17
17
  }
18
18
  catch (e) {
19
- console.error('Check Client Config:', e.response ? e.response.data.error_description : e);
20
- return Promise.reject();
19
+ console.error('Check Client Config:', e.response ? e.responseData.error_description : e);
20
+ return Promise.reject(e.response ? e.responseData.error_description : e);
21
21
  }
22
- return new Promise((resolve) => resolve(kcAdminClient));
22
+ return Promise.resolve(kcAdminClient);
23
23
  }
24
24
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAS1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB;QAC/C,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5C,CAAC,CAAC,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACP,IAAI,CAAC;QACH,eAAe;QACf,MAAM,aAAa,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,oBAAoB;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAS1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,mBAAmB;QAC/C,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5C,CAAC,CAAC,IAAI,aAAa,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACP,IAAI,CAAC;QACH,eAAe;QACf,MAAM,aAAa,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,oBAAoB;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC"}
@@ -6,7 +6,6 @@ var WebhookType;
6
6
  WebhookType["TEAMS"] = "teams";
7
7
  })(WebhookType || (WebhookType = {}));
8
8
  export async function post2Webhook(type, url, title, reportContent, text) {
9
- //const title= 'Keycloak Reporting';
10
9
  const date = new Date();
11
10
  switch (type) {
12
11
  case WebhookType.TEAMS.toString():
@@ -35,7 +34,7 @@ export async function post2Webhook(type, url, title, reportContent, text) {
35
34
  },
36
35
  {
37
36
  type: 'TextBlock',
38
- text: text != null ? text : '',
37
+ text: text !== null && text !== void 0 ? text : '',
39
38
  wrap: true
40
39
  }
41
40
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../lib/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../lib/output.ts"],"names":[],"mappings":"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"}
package/dist/lib/user.js CHANGED
@@ -10,7 +10,7 @@ export async function clientListing(client) {
10
10
  }
11
11
  catch (e) {
12
12
  console.error('Check Client role:', e.response.statusText);
13
- return Promise.reject();
13
+ return Promise.reject(new Error('Client Role Error'));
14
14
  }
15
15
  for (const realm of realms) {
16
16
  // switch realm
@@ -51,7 +51,7 @@ export async function clientListing(client) {
51
51
  });
52
52
  }
53
53
  }
54
- return new Promise((resolve) => resolve(allClients));
54
+ return Promise.resolve(allClients);
55
55
  }
56
56
  export async function userListing(client) {
57
57
  let allUsers = new Array();
@@ -64,7 +64,7 @@ export async function userListing(client) {
64
64
  }
65
65
  catch (e) {
66
66
  console.error('Check Client role:', e.response.statusText);
67
- return Promise.reject();
67
+ return Promise.reject(new Error('Client Role Error'));
68
68
  }
69
69
  for (const realm of realms) {
70
70
  // switch realm
@@ -92,6 +92,9 @@ export async function userListing(client) {
92
92
  }
93
93
  else {
94
94
  const users = await client.userListing();
95
+ if ('error' in users) {
96
+ return Promise.reject(new Error('Auditing endpoint not reachable'));
97
+ }
95
98
  for (const user of users) {
96
99
  allUsers.push({
97
100
  username: user.username,
@@ -105,6 +108,6 @@ export async function userListing(client) {
105
108
  });
106
109
  }
107
110
  }
108
- return new Promise((resolve) => resolve(allUsers));
111
+ return Promise.resolve(allUsers);
109
112
  }
110
113
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../lib/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../lib/user.ts"],"names":[],"mappings":"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"}
package/dist/lib/utils.js CHANGED
@@ -24,12 +24,13 @@ export function getConvertConfig(config, argv, name, title, json) {
24
24
  }, new WebhookConfig(config.webhookType ? config.webhookType : argv.webhookType, config.webhookUrl ? config.webhookUrl : argv.webhookUrl, title, config.webhookMessage ? config.webhookMessage : argv.webhookMessage), json);
25
25
  }
26
26
  export function getKeycloakConfig(config, argv) {
27
- var _a;
28
27
  return {
29
28
  clientId: config.clientId ? config.clientId : argv === null || argv === void 0 ? void 0 : argv.clientId,
30
29
  clientSecret: config.clientSecret ? config.clientSecret : argv === null || argv === void 0 ? void 0 : argv.clientSecret,
31
30
  rootUrl: config.url ? config.url : argv === null || argv === void 0 ? void 0 : argv.url,
32
- useAuditingEndpoint: (argv === null || argv === void 0 ? void 0 : argv.useAuditingEndpoint) == true || ((_a = config.useAuditingEndpoint) === null || _a === void 0 ? void 0 : _a.toLowerCase()) == 'true',
31
+ useAuditingEndpoint: 'useAuditingEndpoint' in argv
32
+ ? String(argv.useAuditingEndpoint).toLowerCase() == 'true'
33
+ : String(config.useAuditingEndpoint).toLowerCase() == 'true',
33
34
  };
34
35
  }
35
36
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAKxB,YAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,OAAgB;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,YAAY;CAGjB;AAED,MAAM,OAAO,aAAa;IAMxB,YAAY,MAAc,EAAE,MAAc,EAAE,OAAqB,EAAE,MAAqB,EAAE,IAAY;QACpG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AACD,MAAM,UAAU,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY;IACtF,OAAO,IAAI,aAAa,CACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,MAAiB,EACvD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,MAAiB,EACvD;QACE,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,OAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;KACpE,EACD,IAAI,aAAa,CACf,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,CAAC,WAAsB,EACtE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,IAAI,CAAC,UAAqB,EACnE,KAAK,EACL,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAE,IAAI,CAAC,cAAyB,CAChF,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAM,EAAE,IAAI;;IAC5C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAmB;QACxE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAuB;QACxF,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAc;QACxD,mBAAmB,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,KAAI,IAAI,IAAI,CAAA,MAAA,MAAM,CAAC,mBAAmB,0CAAE,WAAW,EAAE,KAAI,MAAM;KAC9G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAKxB,YAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,OAAgB;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,YAAY;CAGjB;AAED,MAAM,OAAO,aAAa;IAMxB,YAAY,MAAc,EAAE,MAAc,EAAE,OAAqB,EAAE,MAAqB,EAAE,IAAY;QACpG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AACD,MAAM,UAAU,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY;IACtF,OAAO,IAAI,aAAa,CACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,MAAiB,EACvD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,MAAiB,EACvD;QACE,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,OAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;KACpE,EACD,IAAI,aAAa,CACf,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,CAAC,WAAsB,EACtE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,IAAI,CAAC,UAAqB,EACnE,KAAK,EACL,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAE,IAAI,CAAC,cAAyB,CAChF,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAM,EAAE,IAAI;IAC5C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAmB;QACxE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAuB;QACxF,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAc;QACxD,mBAAmB,EACjB,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM;YAC1D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM;KACjE,CAAC;AACJ,CAAC"}
@@ -9,22 +9,20 @@ function kcClient(options) {
9
9
  });
10
10
  }
11
11
  export async function listUsers(options) {
12
- const users = await userListing(await kcClient(options));
13
- return new Promise((resolve) => resolve(users));
12
+ return userListing(await kcClient(options));
14
13
  }
15
14
  export async function listClients(options) {
16
- const clients = await clientListing(await kcClient(options));
17
- return new Promise((resolve) => resolve(clients));
15
+ return clientListing(await kcClient(options));
18
16
  }
19
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
20
18
  export async function configTest(options) {
21
19
  try {
22
- await userListing(await kcClient(options));
23
- console.log(`Connection to ${options.rootUrl} was successfull`);
20
+ const users = await userListing(await kcClient(options));
21
+ console.log(`Connection to ${options.rootUrl} was successfull: ${users.length} users found.`);
24
22
  }
25
23
  catch (e) {
26
- console.error(`Connection to ${options.rootUrl} was not: successfull`, e.response);
27
- return Promise.reject(e.response.statusText);
24
+ console.error(`Connection to ${options.rootUrl} was not successfull`, e);
25
+ return;
28
26
  }
29
27
  }
30
28
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAQ,WAAW,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAE1E,SAAS,QAAQ,CAAC,OAAgB;IAChC,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC9C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB;IAChD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,OAAO,uBAAuB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAQ,WAAW,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAE1E,SAAS,QAAQ,CAAC,OAAgB;IAChC,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAgB;IAC9C,OAAO,WAAW,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB;IAChD,OAAO,aAAa,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,OAAO,qBAAqB,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,OAAO,sBAAsB,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;AACH,CAAC"}
@@ -5,49 +5,35 @@ import { spawn } from 'node:child_process';
5
5
  import path from 'node:path';
6
6
 
7
7
  test('Should use config file', { timeout: 3000 }, (t) => {
8
- const cli = spawn(
9
- path.join(path.dirname('.'), 'node'),
10
- [
11
- 'dist/cli.js',
12
- 'listClients'
13
- ],
14
- {
15
- env: {
16
- CONFIG_FILE: process.cwd() + '/e2e/fixtures/config.json',
17
- ...process.env,
18
- },
19
- }
20
- );
8
+ const cli = spawn(path.join(path.dirname('.'), 'node'), ['dist/cli.js', 'listClients'], {
9
+ env: {
10
+ CONFIG_FILE: process.cwd() + '/e2e/fixtures/config.json',
11
+ ...process.env,
12
+ },
13
+ });
21
14
  cli.stdout.on('data', (chunk) => {
22
15
  console.log('Response', JSON.parse(chunk.toString()));
23
16
  t.equal(JSON.parse(chunk.toString()).length, 24);
24
17
  t.end();
25
18
  });
26
19
  cli.stderr.on('data', (msg) => {
27
- t.fail(msg)
20
+ t.fail(msg);
28
21
  });
29
22
  });
30
23
 
31
24
  test('Should validate config', { timeout: 3000 }, (t) => {
32
- const cli = spawn(
33
- path.join(path.dirname('.'), 'node'),
34
- [
35
- 'dist/cli.js',
36
- 'configTest'
37
- ],
38
- {
39
- env: {
40
- CONFIG_FILE: process.cwd() + '/e2e/fixtures/config.json',
41
- ...process.env,
42
- },
43
- }
44
- );
25
+ const cli = spawn(path.join(path.dirname('.'), 'node'), ['dist/cli.js', 'configTest'], {
26
+ env: {
27
+ CONFIG_FILE: process.cwd() + '/e2e/fixtures/config.json',
28
+ ...process.env,
29
+ },
30
+ });
45
31
  cli.stdout.on('data', (chunk) => {
46
- console.log(chunk.toString())
47
- t.equal(chunk.toString(), 'Connection to http://localhost:8080 was successfull\n');
32
+ console.log(chunk.toString());
33
+ t.equal(chunk.toString(), 'Connection to http://localhost:8080 was successfull: 3 users found.\n');
48
34
  t.end();
49
35
  });
50
36
  cli.stderr.on('data', (msg) => {
51
- t.fail(msg)
37
+ t.fail(msg);
52
38
  });
53
39
  });
package/lib/client.ts CHANGED
@@ -23,9 +23,8 @@ export async function createClient(options: Options): Promise<KcAdminClient | Au
23
23
  grantType: 'client_credentials',
24
24
  });
25
25
  } catch (e) {
26
- console.error('Check Client Config:', e.response ? e.response.data.error_description : e);
27
- return Promise.reject();
26
+ console.error('Check Client Config:', e.response ? e.responseData.error_description : e);
27
+ return Promise.reject(e.response ? e.responseData.error_description : e);
28
28
  }
29
-
30
- return new Promise((resolve) => resolve(kcAdminClient));
29
+ return Promise.resolve(kcAdminClient);
31
30
  }
package/lib/output.ts CHANGED
@@ -19,7 +19,6 @@ export async function post2Webhook(
19
19
  reportContent: string,
20
20
  text?: string
21
21
  ): Promise<unknown> {
22
- //const title= 'Keycloak Reporting';
23
22
  const date = new Date();
24
23
  switch (type) {
25
24
  case WebhookType.TEAMS.toString():
@@ -50,7 +49,7 @@ export async function post2Webhook(
50
49
  },
51
50
  {
52
51
  type: 'TextBlock',
53
- text: text != null ? text : '',
52
+ text: text ?? '',
54
53
  wrap: true
55
54
  }
56
55
  ],
package/lib/user.ts CHANGED
@@ -37,7 +37,7 @@ export async function clientListing(
37
37
  realms = await client.realms.find();
38
38
  } catch (e) {
39
39
  console.error('Check Client role:', e.response.statusText);
40
- return Promise.reject();
40
+ return Promise.reject(new Error('Client Role Error'));
41
41
  }
42
42
  for (const realm of realms) {
43
43
  // switch realm
@@ -77,7 +77,7 @@ export async function clientListing(
77
77
  });
78
78
  }
79
79
  }
80
- return new Promise((resolve) => resolve(allClients));
80
+ return Promise.resolve(allClients);
81
81
  }
82
82
 
83
83
  export async function userListing(
@@ -92,7 +92,7 @@ export async function userListing(
92
92
  realms = await client.realms.find();
93
93
  } catch (e) {
94
94
  console.error('Check Client role:', e.response.statusText);
95
- return Promise.reject();
95
+ return Promise.reject(new Error('Client Role Error'));
96
96
  }
97
97
  for (const realm of realms) {
98
98
  // switch realm
@@ -119,6 +119,9 @@ export async function userListing(
119
119
  });
120
120
  } else {
121
121
  const users = await client.userListing();
122
+ if ('error' in users) {
123
+ return Promise.reject(new Error('Auditing endpoint not reachable'));
124
+ }
122
125
  for (const user of users) {
123
126
  allUsers.push({
124
127
  username: user.username,
@@ -132,5 +135,5 @@ export async function userListing(
132
135
  });
133
136
  }
134
137
  }
135
- return new Promise((resolve) => resolve(allUsers));
138
+ return Promise.resolve(allUsers);
136
139
  }
package/lib/utils.ts CHANGED
@@ -55,6 +55,9 @@ export function getKeycloakConfig(config, argv): Options {
55
55
  clientId: config.clientId ? config.clientId : (argv?.clientId as string),
56
56
  clientSecret: config.clientSecret ? config.clientSecret : (argv?.clientSecret as string),
57
57
  rootUrl: config.url ? config.url : (argv?.url as string),
58
- useAuditingEndpoint: argv?.useAuditingEndpoint == true || config.useAuditingEndpoint?.toLowerCase() == 'true',
58
+ useAuditingEndpoint:
59
+ 'useAuditingEndpoint' in argv
60
+ ? String(argv.useAuditingEndpoint).toLowerCase() == 'true'
61
+ : String(config.useAuditingEndpoint).toLowerCase() == 'true',
59
62
  };
60
63
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@continuoussecuritytooling/keycloak-reporter",
3
- "version": "0.8.5",
3
+ "version": "0.8.8",
4
4
  "description": "Reporting Tools for Keycloak",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/commands.ts CHANGED
@@ -17,21 +17,19 @@ function kcClient(options: Options): Promise<KcAdminClient | AuditClient> {
17
17
  }
18
18
 
19
19
  export async function listUsers(options: Options): Promise<Array<User | AuditedUserRepresentation>> {
20
- const users = await userListing(await kcClient(options));
21
- return new Promise((resolve) => resolve(users));
20
+ return userListing(await kcClient(options));
22
21
  }
23
22
 
24
23
  export async function listClients(options: Options): Promise<Array<Client | AuditedClientRepresentation>> {
25
- const clients = await clientListing(await kcClient(options));
26
- return new Promise((resolve) => resolve(clients));
24
+ return clientListing(await kcClient(options));
27
25
  }
28
26
  /* eslint-disable @typescript-eslint/no-explicit-any */
29
- export async function configTest(options: Options): Promise<any> {
27
+ export async function configTest(options: Options) {
30
28
  try {
31
- await userListing(await kcClient(options));
32
- console.log(`Connection to ${options.rootUrl} was successfull`);
29
+ const users = await userListing(await kcClient(options));
30
+ console.log(`Connection to ${options.rootUrl} was successfull: ${users.length} users found.`);
33
31
  } catch (e) {
34
- console.error(`Connection to ${options.rootUrl} was not: successfull`, e.response);
35
- return Promise.reject(e.response.statusText);
32
+ console.error(`Connection to ${options.rootUrl} was not successfull`, e);
33
+ return;
36
34
  }
37
35
  }
@@ -1,10 +1,28 @@
1
1
  /// <reference types="jest-extended" />
2
2
  import { getKeycloakConfig } from '../lib/utils';
3
- test('no config', async () => {
4
- expect(getKeycloakConfig({}, null)).toEqual({
3
+ test('no config', () => {
4
+ expect(getKeycloakConfig({}, {})).toEqual({
5
5
  clientId: undefined,
6
6
  clientSecret: undefined,
7
7
  rootUrl: undefined,
8
8
  useAuditingEndpoint: false,
9
9
  });
10
10
  });
11
+
12
+ test('config with useAuditingEndpoint', () => {
13
+ expect(getKeycloakConfig({ useAuditingEndpoint: 'true' }, {})).toEqual({
14
+ clientId: undefined,
15
+ clientSecret: undefined,
16
+ rootUrl: undefined,
17
+ useAuditingEndpoint: true,
18
+ });
19
+ });
20
+
21
+ test('argv with useAuditingEndpoint', () => {
22
+ expect(getKeycloakConfig({}, { useAuditingEndpoint: 'true' })).toEqual({
23
+ clientId: undefined,
24
+ clientSecret: undefined,
25
+ rootUrl: undefined,
26
+ useAuditingEndpoint: true,
27
+ });
28
+ });