From 4946d9769ea4887c7c70fc4b6bd02392c4427ee2 Mon Sep 17 00:00:00 2001 From: Crash Collison <3751389+tehcrashxor@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:46:46 -0700 Subject: [PATCH 1/2] Add FederatedCredential type --- src/pac/auth/authParameters.ts | 11 ++++++++++- src/pac/auth/authenticate.ts | 22 ++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/pac/auth/authParameters.ts b/src/pac/auth/authParameters.ts index 7249f7c2..8ec84050 100644 --- a/src/pac/auth/authParameters.ts +++ b/src/pac/auth/authParameters.ts @@ -8,6 +8,15 @@ export interface ClientCredentials scheme: string; } +export interface FederatedCredentials +{ + appId: string; + tenantId: string; + cloudInstance: string; + scheme: string; + federationProvider : "AzureDevOps" | "GitHub"; +} + export interface UsernamePassword { username: string; @@ -16,5 +25,5 @@ export interface UsernamePassword cloudInstance: string; } -export type AuthCredentials = UsernamePassword | ClientCredentials; +export type AuthCredentials = UsernamePassword | ClientCredentials | FederatedCredentials; diff --git a/src/pac/auth/authenticate.ts b/src/pac/auth/authenticate.ts index 8ffda9b6..fa47bffe 100644 --- a/src/pac/auth/authenticate.ts +++ b/src/pac/auth/authenticate.ts @@ -1,6 +1,6 @@ import { CommandRunner } from "../../CommandRunner"; import { Logger } from "../../Logger"; -import { ClientCredentials, AuthCredentials, UsernamePassword } from "./authParameters"; +import { ClientCredentials, AuthCredentials, UsernamePassword, FederatedCredentials } from "./authParameters"; export function authenticateAdmin(pac: CommandRunner, credentials: AuthCredentials, logger: Logger): Promise { logger.log(`authN to admin API: authType=${isUsernamePassword(credentials) ? 'UserPass' : 'SPN'}; cloudInstance: ${credentials.cloudInstance || ''}`); @@ -23,13 +23,31 @@ function addUrl(url: string) { } function addCredentials(credentials: AuthCredentials) { - return isUsernamePassword(credentials) ? addUsernamePassword(credentials) : addClientCredentials(credentials); + if (isUsernamePassword(credentials)) { + return addUsernamePassword(credentials); + } else if (isFederatedCredentials(credentials)) { + return addFederatedCredentials(credentials); + } else { + return addClientCredentials(credentials); + } } function isUsernamePassword(credentials: AuthCredentials): credentials is UsernamePassword { return "username" in credentials; } +function isFederatedCredentials(credentials: AuthCredentials): credentials is FederatedCredentials { + return "federationProvider" in credentials; +} + +function addFederatedCredentials(parameters: FederatedCredentials) { + return [ + "--applicationId", parameters.appId, + "--tenant", parameters.tenantId, + parameters.federationProvider == "AzureDevOps" ? "--azureDevOpsFederated" : "--githubFederated", + ]; +} + function addClientCredentials(parameters: ClientCredentials) { if (parameters.scheme == "ManagedServiceIdentity"){ From a19acc27830022afb2b254930105de7c6d4ac8da Mon Sep 17 00:00:00 2001 From: Crash Collison <3751389+tehcrashxor@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:47:26 -0700 Subject: [PATCH 2/2] Move to public nuget for GH Actions builds --- nuget.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/nuget.json b/nuget.json index 0931e0e6..b1b7d0cb 100644 --- a/nuget.json +++ b/nuget.json @@ -4,28 +4,28 @@ "name": "nuget.org", "url": "https://api.nuget.org/v3-flatcontainer/", "authenticated": false, - "packages": [ - ] - }, - { - "name": "CAP_ISVExp_Tools_Stable", - "url": "https://pkgs.dev.azure.com/msazure/_packaging/b0441cf8-0bc8-4fad-b126-841a6184e784/nuget/v3/flat2/", - "authenticated": true, - "patEnvironmentVariable": "AZ_DevOps_Read_PAT", "packages": [ { "name": "Microsoft.PowerApps.CLI", - "version": "1.28.3", + "version": "1.31.6", "internalName": "pac" }, { "name": "Microsoft.PowerApps.CLI.Core.linux-x64", - "version": "1.28.3", + "version": "1.31.6", "internalName": "pac_linux", "chmod": "tools/pac" } ] }, + { + "name": "CAP_ISVExp_Tools_Stable", + "url": "https://pkgs.dev.azure.com/msazure/_packaging/b0441cf8-0bc8-4fad-b126-841a6184e784/nuget/v3/flat2/", + "authenticated": true, + "patEnvironmentVariable": "AZ_DevOps_Read_PAT", + "packages": [ + ] + }, { "name": "CAP_ISVExp_Tools_Daily", "url": "https://pkgs.dev.azure.com/msazure/_packaging/d3fb5788-d047-47f9-9aba-76890f5cecf0/nuget/v3/flat2/",