Update plugins/kubernetes-node/src/auth/PinnipedHelper.ts
Co-authored-by: Jamie Klassen <jamie.klassen@broadcom.com> Signed-off-by: Andrés Mauricio Gómez P <andmagom@outlook.com> Update plugins/kubernetes-node/src/auth/PinnipedHelper.ts Co-authored-by: Jamie Klassen <jamie.klassen@broadcom.com> Signed-off-by: Andrés Mauricio Gómez P <andmagom@outlook.com> Update plugins/kubernetes-node/src/auth/PinnipedHelper.ts Co-authored-by: Jamie Klassen <jamie.klassen@broadcom.com> Signed-off-by: Andrés Mauricio Gómez P <andmagom@outlook.com> Update plugins/kubernetes-node/src/auth/PinnipedHelper.ts Co-authored-by: Jamie Klassen <jamie.klassen@broadcom.com> Signed-off-by: Andrés Mauricio Gómez P <andmagom@outlook.com> Update plugins/kubernetes-node/src/auth/PinnipedHelper.ts Co-authored-by: Jamie Klassen <jamie.klassen@broadcom.com> Signed-off-by: Andrés Mauricio Gómez P <andmagom@outlook.com> Signed-off-by: Andres Mauricio Gomez P <andmagom@outlook.com>
This commit is contained in:
committed by
Andres Mauricio Gomez P
parent
6a4724db0c
commit
6d615e781c
@@ -117,10 +117,14 @@ describe('Pinniped - tokenCredentialRequest', () => {
|
||||
) => {
|
||||
const pinnipedHelper = new PinnipedHelper(logger);
|
||||
const pinnipedParams: PinnipedParameters = {
|
||||
clusterIdToken:
|
||||
clusterScopedIdToken:
|
||||
((authConfig.pinniped as JsonObject)
|
||||
?.clusteridtoken as string) || '',
|
||||
JWTAuthenticatorName: 'supervisor',
|
||||
authenticator: {
|
||||
apiGroup: 'authentication.concierge.pinniped.dev',
|
||||
kind: 'JWTAuthenticator',
|
||||
name: 'supervisor',
|
||||
},
|
||||
};
|
||||
const clientCerts =
|
||||
await pinnipedHelper.tokenCredentialRequest(
|
||||
@@ -134,6 +138,7 @@ describe('Pinniped - tokenCredentialRequest', () => {
|
||||
};
|
||||
},
|
||||
validateCluster: jest.fn().mockReturnValue([]),
|
||||
presentAuthMetadata: jest.fn().mockReturnValue({}),
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -281,15 +286,21 @@ describe('Pinniped - tokenCredentialRequest', () => {
|
||||
clusterDetails: ClusterDetails,
|
||||
authConfig: KubernetesRequestAuth,
|
||||
) => {
|
||||
const pinnipedHelper = new PinnipedHelper(
|
||||
logger,
|
||||
'pinniped-tmc',
|
||||
);
|
||||
const pinnipedHelper = new PinnipedHelper(logger);
|
||||
const pinnipedParams: PinnipedParameters = {
|
||||
clusterIdToken:
|
||||
clusterScopedIdToken:
|
||||
((authConfig.pinniped as JsonObject)
|
||||
?.clusteridtoken as string) || '',
|
||||
JWTAuthenticatorName: 'supervisor',
|
||||
authenticator: {
|
||||
apiGroup:
|
||||
'authentication.concierge.pinniped.tmc.cloud.vmware.com',
|
||||
kind: 'WebhookAuthenticator',
|
||||
name: 'supervisor',
|
||||
},
|
||||
tokenCredentialRequest: {
|
||||
apiGroup:
|
||||
'login.concierge.pinniped.tmc.cloud.vmware.com/v1alpha1',
|
||||
},
|
||||
};
|
||||
const clientCerts =
|
||||
await pinnipedHelper.tokenCredentialRequest(
|
||||
@@ -303,6 +314,7 @@ describe('Pinniped - tokenCredentialRequest', () => {
|
||||
};
|
||||
},
|
||||
validateCluster: jest.fn().mockReturnValue([]),
|
||||
presentAuthMetadata: jest.fn().mockReturnValue({}),
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -35,16 +35,15 @@ export type PinnipedClientCerts = {
|
||||
* @public
|
||||
*/
|
||||
export type PinnipedParameters = {
|
||||
clusterIdToken: string;
|
||||
JWTAuthenticatorName: string;
|
||||
};
|
||||
|
||||
type ApiResourcePinniped = {
|
||||
clusterScopedIdToken: string;
|
||||
authenticator: {
|
||||
apiGroup: string;
|
||||
kind: string;
|
||||
name: string;
|
||||
};
|
||||
tokenCredentialRequest?: {
|
||||
apiGroup?: string;
|
||||
};
|
||||
apiVersion: string;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -52,14 +51,7 @@ type ApiResourcePinniped = {
|
||||
* @public
|
||||
*/
|
||||
export class PinnipedHelper {
|
||||
readonly flavour: 'pinniped' | 'pinniped-tmc';
|
||||
|
||||
constructor(
|
||||
private readonly logger: Logger,
|
||||
flavour: 'pinniped' | 'pinniped-tmc' = 'pinniped',
|
||||
) {
|
||||
this.flavour = flavour;
|
||||
}
|
||||
constructor(private readonly logger: Logger) {}
|
||||
|
||||
public async tokenCredentialRequest(
|
||||
clusterDetails: ClusterDetails,
|
||||
@@ -77,16 +69,16 @@ export class PinnipedHelper {
|
||||
pinnipedParams: PinnipedParameters,
|
||||
): Promise<PinnipedClientCerts> {
|
||||
const url: URL = new URL(clusterDetails.url);
|
||||
const apiResourcePinniped: ApiResourcePinniped =
|
||||
this.getApiResourcePinniped();
|
||||
const apiGroup =
|
||||
pinnipedParams.tokenCredentialRequest?.apiGroup ??
|
||||
'login.concierge.pinniped.dev/v1alpha1';
|
||||
|
||||
url.pathname = `/apis/${apiResourcePinniped.apiVersion}/tokencredentialrequests`;
|
||||
url.pathname = `/apis/${apiGroup}/tokencredentialrequests`;
|
||||
|
||||
const requestInit: RequestInit = this.buildRequestForPinniped(
|
||||
url,
|
||||
clusterDetails,
|
||||
pinnipedParams,
|
||||
apiResourcePinniped,
|
||||
);
|
||||
|
||||
this.logger.info(
|
||||
@@ -119,18 +111,15 @@ export class PinnipedHelper {
|
||||
url: URL,
|
||||
clusterDetails: ClusterDetails,
|
||||
pinnipedParams: PinnipedParameters,
|
||||
apiResourcePinniped: ApiResourcePinniped,
|
||||
): RequestInit {
|
||||
const body = {
|
||||
apiVersion: apiResourcePinniped.apiVersion,
|
||||
apiVersion:
|
||||
pinnipedParams.tokenCredentialRequest?.apiGroup ??
|
||||
'login.concierge.pinniped.dev/v1alpha1',
|
||||
kind: 'TokenCredentialRequest',
|
||||
spec: {
|
||||
authenticator: {
|
||||
apiGroup: apiResourcePinniped.authenticator.apiGroup,
|
||||
kind: apiResourcePinniped.authenticator.kind,
|
||||
name: pinnipedParams.JWTAuthenticatorName,
|
||||
},
|
||||
token: pinnipedParams.clusterIdToken,
|
||||
authenticator: pinnipedParams.authenticator,
|
||||
token: pinnipedParams.clusterScopedIdToken,
|
||||
},
|
||||
};
|
||||
const requestInit: RequestInit = {
|
||||
@@ -155,23 +144,4 @@ export class PinnipedHelper {
|
||||
|
||||
return requestInit;
|
||||
}
|
||||
|
||||
private getApiResourcePinniped(): ApiResourcePinniped {
|
||||
if (this.flavour === 'pinniped') {
|
||||
return {
|
||||
authenticator: {
|
||||
apiGroup: 'authentication.concierge.pinniped.dev',
|
||||
kind: 'JWTAuthenticator',
|
||||
},
|
||||
apiVersion: 'login.concierge.pinniped.dev/v1alpha1',
|
||||
};
|
||||
}
|
||||
return {
|
||||
authenticator: {
|
||||
apiGroup: 'authentication.concierge.pinniped.tmc.cloud.vmware.com',
|
||||
kind: 'WebhookAuthenticator',
|
||||
},
|
||||
apiVersion: 'login.concierge.pinniped.tmc.cloud.vmware.com/v1alpha1',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user