From 6382939e1ea6f0ed3c5d985fb37e1b0ae7d5182e Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Sat, 30 Jul 2022 03:13:57 -0300 Subject: [PATCH 1/5] FEAT: snowflake sso --- src/modules/auth/auth.controller.ts | 15 +++++++++++++++ src/modules/auth/auth.service.ts | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index e664c96..078e9fc 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -21,9 +21,15 @@ import { AuthVerifyTotpMfaRequest, } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages'; +import { PERMISSIONS } from 'src/authentication/permissions.enum'; +import { + Authenticated, + RequireAllPermissions, +} from 'src/authentication/authentication.decorator'; import { AuthClientService } from './auth.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter'; +import { RequestUser, User } from 'src/authentication/user.decorator'; @ApiTags('Auth') @UseFilters(new GrpcToHttpExceptionFilter()) @@ -39,6 +45,15 @@ export class AuthController { this.logger = dadosferaLogger.logger; } + @Post('/sso/snowflake') + @RequireAllPermissions(PERMISSIONS.SNOWFLAKE.permissions.OPEN) + @HttpCode(HttpStatus.OK) + async snowflakeSignIn(@User() user: RequestUser) { + this.logger.info('/auth - snowflakeSignIn'); + + return this.authClient.snowflakeSignIn({ userId: user.user_id }); + } + @Post('sign-in') @HttpCode(HttpStatus.OK) async signIn(@Body() { username, password, totp }: AuthSignInRequest) { diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts index 0da58eb..ba8b2a4 100644 --- a/src/modules/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -6,6 +6,7 @@ import { lastValueFrom } from 'rxjs'; import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc'; import { AuthProtoService as AuthServiceInterface } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service'; import { + AuthSnowflakeSignInRequest, AuthSignInRequest, AuthRefreshAccessTokenRequest, AuthEnableTotpMfaRequest, @@ -43,6 +44,12 @@ export class AuthClientService implements OnModuleInit { return lastValueFrom(this.authService.AuthGetPublicKeys({})); } + async snowflakeSignIn(input: AuthSnowflakeSignInRequest) { + this.logger.info('snowflakeSignIn'); + + return lastValueFrom(this.authService.AuthSnowflakeSignIn(input)); + } + async signIn({ username, password, totp }: AuthSignInRequest) { this.logger.info('SignIn'); From 2673e75f8103233f9127eb9f443bbdd0efc8ddef Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Tue, 2 Aug 2022 16:13:12 -0300 Subject: [PATCH 2/5] CHORE: protospack-v2 bumped --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b093142..ec0b1ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.10.0", + "@dadosfera/protospack-v2": "3.11.0-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", + "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", + "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 3b5ed08..5863f93 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.10.0", + "@dadosfera/protospack-v2": "3.11.0-beta.2", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", From 7cf178db429f70493647409978edf93ab471a0ab Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Tue, 2 Aug 2022 16:49:36 -0300 Subject: [PATCH 3/5] FEAT: fake commit From 89a02a4e8a09cfbab6414a8e6c047d7d286ee8df Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Thu, 4 Aug 2022 11:11:42 -0300 Subject: [PATCH 4/5] FIX: added snowflake sso relaystate field --- package-lock.json | 14 +++++++------- package.json | 2 +- src/modules/auth/auth.controller.ts | 11 +++++++++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec0b1ca..b809aa0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.2", + "@dadosfera/protospack-v2": "3.11.0-beta.3", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", - "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", + "version": "3.11.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", + "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", - "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", + "version": "3.11.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", + "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 5863f93..598a946 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.11.0-beta.2", + "@dadosfera/protospack-v2": "3.11.0-beta.3", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 078e9fc..427077a 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -7,6 +7,7 @@ import { HttpStatus, Inject, UseFilters, + Query, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { @@ -48,10 +49,16 @@ export class AuthController { @Post('/sso/snowflake') @RequireAllPermissions(PERMISSIONS.SNOWFLAKE.permissions.OPEN) @HttpCode(HttpStatus.OK) - async snowflakeSignIn(@User() user: RequestUser) { + async snowflakeSignIn( + @User() user: RequestUser, + @Body('RelayState') relayState: string, + ) { this.logger.info('/auth - snowflakeSignIn'); - return this.authClient.snowflakeSignIn({ userId: user.user_id }); + return this.authClient.snowflakeSignIn({ + userId: user.user_id, + relayState, + }); } @Post('sign-in') From ec418b00e797abc0b609c6a854cb7d1c3ac09ce6 Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Thu, 4 Aug 2022 11:29:05 -0300 Subject: [PATCH 5/5] FIX: relay state in response --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b809aa0..199f001 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0-beta.4", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", - "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", + "version": "3.11.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz", + "integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", - "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", + "version": "3.11.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz", + "integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 598a946..0534f25 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.11.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0-beta.4", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5",