From ca6f259244af428a957d98ea497ff6650bbaf1ba Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 8 Apr 2022 13:36:55 +0200 Subject: [PATCH] auth-backend: migrate gcp-iap provider to use resolver context Signed-off-by: Patrik Oldsberg --- .../src/providers/gcp-iap/provider.test.ts | 7 +-- .../src/providers/gcp-iap/provider.ts | 43 ++++--------------- 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/plugins/auth-backend/src/providers/gcp-iap/provider.test.ts b/plugins/auth-backend/src/providers/gcp-iap/provider.test.ts index eb2f5c478d..b1b2a3f66e 100644 --- a/plugins/auth-backend/src/providers/gcp-iap/provider.test.ts +++ b/plugins/auth-backend/src/providers/gcp-iap/provider.test.ts @@ -14,9 +14,9 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; +import { AuthResolverContext } from '../types'; import { GcpIapProvider } from './provider'; beforeEach(() => { @@ -27,16 +27,13 @@ describe('GcpIapProvider', () => { const authHandler = jest.fn(); const signInResolver = jest.fn(); const tokenValidator = jest.fn(); - const logger = getVoidLogger(); it('runs the happy path', async () => { const provider = new GcpIapProvider({ authHandler, signInResolver, tokenValidator, - tokenIssuer: {} as any, - catalogIdentityClient: {} as any, - logger, + resolverContext: {} as AuthResolverContext, }); // { "sub": "user:default/me", "ent": ["group:default/home"] } diff --git a/plugins/auth-backend/src/providers/gcp-iap/provider.ts b/plugins/auth-backend/src/providers/gcp-iap/provider.ts index 388d1902c4..e1fe5a4f01 100644 --- a/plugins/auth-backend/src/providers/gcp-iap/provider.ts +++ b/plugins/auth-backend/src/providers/gcp-iap/provider.ts @@ -16,14 +16,12 @@ import express from 'express'; import { TokenPayload } from 'google-auth-library'; -import { Logger } from 'winston'; -import { TokenIssuer } from '../../identity/types'; -import { CatalogIdentityClient } from '../../lib/catalog'; import { prepareBackstageIdentityResponse } from '../prepareBackstageIdentityResponse'; import { AuthHandler, AuthProviderFactory, AuthProviderRouteHandlers, + AuthResolverContext, SignInResolver, } from '../types'; import { @@ -31,35 +29,24 @@ import { defaultAuthHandler, parseRequestToken, } from './helpers'; -import { - GcpIapProviderOptions, - GcpIapResponse, - GcpIapResult, - IAP_JWT_HEADER, -} from './types'; +import { GcpIapResponse, GcpIapResult, IAP_JWT_HEADER } from './types'; export class GcpIapProvider implements AuthProviderRouteHandlers { private readonly authHandler: AuthHandler; private readonly signInResolver: SignInResolver; private readonly tokenValidator: (token: string) => Promise; - private readonly tokenIssuer: TokenIssuer; - private readonly catalogIdentityClient: CatalogIdentityClient; - private readonly logger: Logger; + private readonly resolverContext: AuthResolverContext; constructor(options: { authHandler: AuthHandler; signInResolver: SignInResolver; tokenValidator: (token: string) => Promise; - tokenIssuer: TokenIssuer; - catalogIdentityClient: CatalogIdentityClient; - logger: Logger; + resolverContext: AuthResolverContext; }) { this.authHandler = options.authHandler; this.signInResolver = options.signInResolver; this.tokenValidator = options.tokenValidator; - this.tokenIssuer = options.tokenIssuer; - this.catalogIdentityClient = options.catalogIdentityClient; - this.logger = options.logger; + this.resolverContext = options.resolverContext; } async start() {} @@ -71,17 +58,12 @@ export class GcpIapProvider implements AuthProviderRouteHandlers { req.header(IAP_JWT_HEADER), this.tokenValidator, ); - const context = { - logger: this.logger, - catalogIdentityClient: this.catalogIdentityClient, - tokenIssuer: this.tokenIssuer, - }; - const { profile } = await this.authHandler(result, context); + const { profile } = await this.authHandler(result, this.resolverContext); const backstageIdentity = await this.signInResolver( { profile, result }, - context, + this.resolverContext, ); const response: GcpIapResponse = { @@ -118,25 +100,18 @@ export function createGcpIapProvider(options: { resolver: SignInResolver; }; }): AuthProviderFactory { - return ({ config, tokenIssuer, catalogApi, logger, tokenManager }) => { + return ({ config, resolverContext }) => { const audience = config.getString('audience'); const authHandler = options.authHandler ?? defaultAuthHandler; const signInResolver = options.signIn.resolver; const tokenValidator = createTokenValidator(audience); - const catalogIdentityClient = new CatalogIdentityClient({ - catalogApi, - tokenManager, - }); - return new GcpIapProvider({ authHandler, signInResolver, tokenValidator, - tokenIssuer, - catalogIdentityClient, - logger, + resolverContext, }); }; }