From a1e1d22e729360c481d8ab57dfe156af04faf1c7 Mon Sep 17 00:00:00 2001 From: gsadmin Date: Fri, 31 Jul 2026 16:06:33 -0400 Subject: [PATCH] Treat a missing cert-manager project as an empty result rather than an error An organization that has not set up Certificate Manager has nothing to list, so resolution now returns nothing instead of throwing, and the PKI Get-* cmdlets return quietly. -Verbose explains what happened and what to do: -ProjectId was not supplied and this organization has no Certificate Manager project, so there is nothing to resolve to. Create one in Infisical (Certificate Management), or pass -ProjectId to target a specific project. Without the guard the null would have travelled to the client layer and surfaced as "ProjectId is required" from somewhere unrelated to the cause, so each Get-* cmdlet returns as soon as resolution comes back empty. Request-InfisicalCertificate deliberately proceeds, because profile issuance does not need a project: only the reuse search does, and that already degrades to a local match with a warning when the search cannot run. Resolution is now attempted once per cmdlet instance rather than once per non-null result, so an organization with no project does not re-query on every call. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 9 +++++- Module/PSInfisicalAPI/PSInfisicalAPI.psd1 | 4 +-- Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll | Bin 451072 -> 451072 bytes README.md | 8 +++++ .../ProjectScopingTests.cs | 30 ++++++++++++++++++ ...etInfisicalCertificateApplicationCmdlet.cs | 3 ++ ...lCertificateApplicationEnrollmentCmdlet.cs | 3 ++ .../GetInfisicalCertificateAuthorityCmdlet.cs | 3 ++ .../Cmdlets/GetInfisicalCertificateCmdlet.cs | 3 ++ .../GetInfisicalCertificatePolicyCmdlet.cs | 3 ++ .../GetInfisicalCertificateProfileCmdlet.cs | 3 ++ .../GetInfisicalPkiSubscriberCmdlet.cs | 3 ++ .../Cmdlets/InfisicalCmdletBase.cs | 19 +++++++++-- 13 files changed, 85 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ab6f5d..b8b343b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,17 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.07.31.2006 + +- Build produced from commit 276958e3a83a. + +## Unreleased (carried forward) + ## 2026.07.31.1958 - Build produced from commit 633f40c1fa54. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.07.31.1924 @@ -50,6 +56,7 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ### Changed (project scoping, follow-up) +- An organization with **no** Certificate Manager project is no longer an error. Resolution returns nothing and the PKI `Get-*` cmdlets emit no output, with `-Verbose` explaining that none was found and suggesting one be created. Nothing to list is an empty result, not a failure. - Several Certificate Manager projects in one organization is **no longer an error**. Infisical designates one as the organization's active project and serves certificate applications only from it, so resolution now picks that one; when none is designated the first is used and the verbose line says so. - `InfisicalOrganization.DefaultCertManagerProjectId` exposes the organization's active Certificate Manager project. - `Get-InfisicalProject` now calls `/api/v1/projects`, keeping the previously used `/api/v1/workspace` as a fallback candidate — that route mounts Infisical's deprecated project router. diff --git a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 index 9ac6be4..e9852e7 100644 --- a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 +++ b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'PSInfisicalAPI.psm1' - ModuleVersion = '2026.07.31.1958' + ModuleVersion = '2026.07.31.2006' GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51' Author = 'Grace Solutions' CompanyName = 'Grace Solutions' @@ -74,7 +74,7 @@ LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html' ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI' ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.' - CommitHash = '633f40c1fa54' + CommitHash = '276958e3a83a' } } } \ No newline at end of file diff --git a/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll b/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll index 69a2d2cc9890c38798f6803406723bad45f411ec..38948874d50b0482413ff1fad774abc0628d9172 100644 GIT binary patch delta 96655 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 delta 96431 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%0DD$=|;$+-;4B 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 q zC$ebI(1+f{l4U>EV8wF6gMTYhVvlQk;22#@GQ1El#S?CkJw(gFRcC&eEz$2+W7%(YGqhTyb-62d z@#GB2nUKeIs5TlZRI#^RWqSC32H}k+z>3-qfTzcM0nVn0A;#56GURDOHkL<@=k|tl z45d$LVmP{jDXmjZCDFcXJ3}{%C;{{>>Ir4J7?Bgk|7Vz}94C)KXS)*+uV*2SoQHUV z%6+IDYZwR=$1ve^>6pcNwfl}{-tBjBJmzFQ1rkms;{+&79tP$6nM*yPB4!#^?<^wjYeDP=lWv%O7*{uFwXL^j-at%?Ok?m&sr~lzhkK5A+GQD=_p8UAA-E~{*cwg>f zY+aPK+VABqTI_w<$1^=m1<#zTd=*fRc^$A$d+EL$p#C$L+fR;S6m~G-d~VG}d|qI4 zI8^^R`=yyiRAP)##TSnJyiC;YFd?S_$9&02d+9C>TWu@>tkJdrmJ=Q?-45j;r}qH1 zb%65OB&id|iC8Xozvd4lu7EdC=B49UDVAaBz^L_Ycfr7+byatj*`bf{#tOiS+T(zy z$JYWnt`s#CsT{9t+y8K-p!8-K-vGV%2dz5?FD=LLjnfP)x93jo>`&Sdy<)M6lQi@N z++%QNW4*XGgO0tEC~XvJi}gwuV{0>QyIy(xchWMtPqenZw0wlZKpd;=H5b8ze;_UM zDW<0znqVD9Nc)#B3a~sp9fK+*<_ZXnAgs;BQ%p7OO_rR%+G})8)nnHU;8|6U_yL_| z9&^Xt-iNeH6W!9bf1tF?hbxXMKEs95xn8tMqJ4RN40g6N1M!Iwh%e%aO**p{F@GYW zX*eoY`Ct@fuC?L6unEZ$gZt?Ic^k zY5ceDwY~+r+Yak3P=4@U3+0F=;k6c=b$h$q1J=bQrWm}}>If)q47p2jA>bQ9#{eBB z%=*?ar3H$YEJx>)*A)qF__Squ#oX?#qo{IXG#U{w2Cvr}95gDn$fb}t6%)H6*o)f1HPP%<(6`ci+OJ^f^q_h zXuFHS+8^C8OY=1+UvToZ7hidDxN`T6Dae0d9AZWV;-V77XagcE2gg`kfmowANjuhy z7m>Q1OMsPaV&$%px|xx`ifAcc20YCFAicft# zb8;(2Uc)lhqRbgIBT5L*mTw12OZgtaX3lg^jKJ9BrA%Dh{+A0HnDP7TnLLKpT-Mj| zns+%xXw53L;OA|KZTIK6xJ4!-MbZ%OEW?rD8~9mtHWU5Y8UnP92!9^E+barNjdrC> z$K7+Ht=nmbiuR^h?>8!-_M?Nx0UMsh`614XS)*!!zGh|vpg3(EXU4DTE3$2*IVp;x zD30;34O;JoTd#$A|9nZi>8e;VI3={L`DkXwI2_l&vU8vje{$5Gt1rc&OE*tIxA5mm zVwVpr`C7Ic%p}edSK5h5uI0$&GIz{nR#Cj5cN}|Gi1~R$x!jGG=GK|Sr1@IM4xrJ} zU3huTQ{VAGEgrY|&SJo5%mU$C5&8b2mhLZB(*1?w0i4rGtO0xB^S^00=MlspH3NO; z7z6hxbsu^DOQ?;nN1kPrDJRfo{KF|o@z{Zz63&qWK0?ahy30qNsQrj-cljz_ z?H2^cGo2I~927jTU(ld_A+~-h!DFpsafxik00n?DzxbycK$E?Lnk=#gxWp6G~CoJ4>JB0hKvsX diff --git a/README.md b/README.md index a57f620..f8022f4 100644 --- a/README.md +++ b/README.md @@ -216,6 +216,14 @@ VERBOSE: -ProjectId was not supplied; resolved the organization's only Certifica 'Microsoft Endpoint Configuration Manager' (2122628e-...). ``` +An organization with **no** Certificate Manager project is not an error either. There is nothing to list, so the PKI `Get-*` cmdlets return nothing and `-Verbose` explains why: + +```text +VERBOSE: -ProjectId was not supplied and this organization has no Certificate Manager project, so there is + nothing to resolve to. Create one in Infisical (Certificate Management), or pass -ProjectId to + target a specific project. +``` + Several Certificate Manager projects in one organization is not an error. Infisical designates one as the organization's **active** project, and that is what resolution picks: ```text diff --git a/src/PSInfisicalAPI.Tests/ProjectScopingTests.cs b/src/PSInfisicalAPI.Tests/ProjectScopingTests.cs index 63cefa8..979e889 100644 --- a/src/PSInfisicalAPI.Tests/ProjectScopingTests.cs +++ b/src/PSInfisicalAPI.Tests/ProjectScopingTests.cs @@ -109,6 +109,36 @@ namespace PSInfisicalAPI.Tests Assert.Equal(typeof(PSInfisicalAPI.Models.InfisicalProject), finder.ReturnType); } + [Fact] + public void An_Organization_Without_Any_Cert_Manager_Project_Is_Not_An_Error() + { + // Nothing to list is an empty result, not a failure, so resolution returns null and each Get-* + // cmdlet returns quietly rather than surfacing "ProjectId is required" from deep in the client. + MethodInfo resolver = typeof(PSInfisicalAPI.Cmdlets.InfisicalCmdletBase) + .GetMethod("ResolveCertManagerProjectId", BindingFlags.NonPublic | BindingFlags.Instance); + + List called = GetCalledMethodNames(resolver); + Assert.DoesNotContain("ThrowTerminatingForException", called); + Assert.DoesNotContain("WriteErrorForException", called); + + List ungarded = new List(); + foreach (string typeName in PkiCmdletTypes) + { + // Request-InfisicalCertificate can still issue through a profile without a project, so it is + // deliberately allowed to proceed. + if (typeName.EndsWith("RequestInfisicalCertificateCmdlet", StringComparison.Ordinal)) { continue; } + + Type type = ModuleAssembly.GetType(typeName, true); + MethodInfo processRecord = type.GetMethod("ProcessRecord", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); + if (!GetCalledMethodNames(processRecord).Contains("IsNullOrEmpty")) + { + ungarded.Add(type.Name); + } + } + + Assert.Empty(ungarded); + } + [Fact] public void The_Organizations_Active_Cert_Manager_Project_Is_Modelled() { diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationCmdlet.cs index 15e31a7..55fbf9a 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationCmdlet.cs @@ -34,6 +34,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); if (string.Equals(ParameterSetName, "ById", StringComparison.Ordinal)) diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationEnrollmentCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationEnrollmentCmdlet.cs index be8ba71..370afe0 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationEnrollmentCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateApplicationEnrollmentCmdlet.cs @@ -30,6 +30,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); InfisicalCertificateApplicationEnrollment enrollment = client.GetCertificateApplicationEnrollment(connection, ApplicationId, ProfileId, ProjectId); diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateAuthorityCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateAuthorityCmdlet.cs index e125de6..b9d15ff 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateAuthorityCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateAuthorityCmdlet.cs @@ -30,6 +30,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); if (string.Equals(ParameterSetName, "ById", StringComparison.Ordinal)) diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateCmdlet.cs index c9b70f7..3deb08c 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateCmdlet.cs @@ -76,6 +76,9 @@ namespace PSInfisicalAPI.Cmdlets // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } + InfisicalCertificateSearchQuery query = new InfisicalCertificateSearchQuery { ProjectId = ProjectId, diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificatePolicyCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificatePolicyCmdlet.cs index 6d8bb82..4d3da67 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificatePolicyCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificatePolicyCmdlet.cs @@ -30,6 +30,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); if (string.Equals(ParameterSetName, "ById", StringComparison.Ordinal)) diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateProfileCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateProfileCmdlet.cs index 3c985a6..422a1fb 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateProfileCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalCertificateProfileCmdlet.cs @@ -44,6 +44,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); if (string.Equals(ParameterSetName, "ById", StringComparison.Ordinal)) diff --git a/src/PSInfisicalAPI/Cmdlets/GetInfisicalPkiSubscriberCmdlet.cs b/src/PSInfisicalAPI/Cmdlets/GetInfisicalPkiSubscriberCmdlet.cs index 972d449..f2c300a 100644 --- a/src/PSInfisicalAPI/Cmdlets/GetInfisicalPkiSubscriberCmdlet.cs +++ b/src/PSInfisicalAPI/Cmdlets/GetInfisicalPkiSubscriberCmdlet.cs @@ -26,6 +26,9 @@ namespace PSInfisicalAPI.Cmdlets // one; -ProjectId is optional here for the same reason. Assigned back so every call below // sees the resolved value without threading a second variable through. ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + + // No Certificate Manager project means nothing to list; that is an empty result, not a failure. + if (string.IsNullOrEmpty(ProjectId)) { return; } InfisicalPkiClient client = new InfisicalPkiClient(HttpClient, Logger); if (string.Equals(ParameterSetName, "ByName", StringComparison.Ordinal)) diff --git a/src/PSInfisicalAPI/Cmdlets/InfisicalCmdletBase.cs b/src/PSInfisicalAPI/Cmdlets/InfisicalCmdletBase.cs index 1f9b3be..46753a1 100644 --- a/src/PSInfisicalAPI/Cmdlets/InfisicalCmdletBase.cs +++ b/src/PSInfisicalAPI/Cmdlets/InfisicalCmdletBase.cs @@ -23,6 +23,7 @@ namespace PSInfisicalAPI.Cmdlets private IInfisicalHttpClient _httpClient; private bool? _isElevated; private string _resolvedCertManagerProjectId; + private bool _certManagerProjectResolved; protected IInfisicalLogger Logger { @@ -70,10 +71,17 @@ namespace PSInfisicalAPI.Cmdlets /// in the URL path and cannot defer to the server's resolver. Resolved once per cmdlet instance. /// /// + /// + /// The project to use, or null when the organization has no Certificate Manager project. Callers + /// that cannot proceed without one should return quietly rather than failing: an organization that has + /// not set up Certificate Manager has nothing to list, which is an empty result and not an error. + /// protected string ResolveCertManagerProjectId(InfisicalConnection connection, string explicitValue) { if (!string.IsNullOrEmpty(explicitValue)) { return explicitValue; } - if (_resolvedCertManagerProjectId != null) { return _resolvedCertManagerProjectId; } + if (_certManagerProjectResolved) { return _resolvedCertManagerProjectId; } + + _certManagerProjectResolved = true; InfisicalProjectClient client = new InfisicalProjectClient(HttpClient, Logger); InfisicalProject[] projects = client.List(connection, CertManagerProjectType, false); @@ -93,8 +101,13 @@ namespace PSInfisicalAPI.Cmdlets if (certManagerProjects.Count == 0) { - throw new InfisicalConfigurationException( - "This organization has no Certificate Manager project, so there is nothing to resolve -ProjectId to. Create one in Infisical, or pass -ProjectId explicitly."); + Logger.Verbose(GetType().Name, string.Concat( + "-ProjectId was not supplied and this organization has no Certificate Manager project, so there is ", + "nothing to resolve to. Create one in Infisical (Certificate Management), or pass -ProjectId to ", + "target a specific project.")); + + _resolvedCertManagerProjectId = null; + return null; } InfisicalProject chosen = certManagerProjects[0];