From 84b15a79584a8760bb3c718bdbcd455edb9ccf56 Mon Sep 17 00:00:00 2001 From: "dixue@microsoft.com" Date: Sun, 24 Apr 2022 21:02:50 +0800 Subject: [PATCH 1/3] Upgraded System.Reflection.DispatchProxy on Windows PowerShell --- .../development-docs/common-assemblies.md | 9 +++++---- src/Accounts/Accounts/ChangeLog.md | 1 + .../Utilities/CustomAssemblyResolver.cs | 2 +- .../System.Reflection.DispatchProxy.dll | Bin 24992 -> 42632 bytes 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/documentation/development-docs/common-assemblies.md b/documentation/development-docs/common-assemblies.md index da65ef944833..fedfd0dff2b9 100644 --- a/documentation/development-docs/common-assemblies.md +++ b/documentation/development-docs/common-assemblies.md @@ -25,10 +25,11 @@ For further reading, please visit https://docs.microsoft.com/en-us/dotnet/standa 5. Extract DLL file in nuget package folder `lib/net461` (alternatively, `netstandard2.0`) of `Azure.Core` and changed dependencies and copy them to `src/lib/NetFxPreloadAssemblies`. 6. Update assembly version of `Azure.Core` and changed dependencies to .NET Framework in `/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs`. 7. Verify built `Az.Accounts` can work with existing Azure PowerShell modules on PowerShell 7 and Windows PowerShell. - - Import module into PowerShell 7 or Windows PowerShell. - ```powershell - Import-Module .\artifacts\Release\Az.Accounts\Az.Accounts.psd1 - ``` + - Import module into PowerShell 7 or Windows PowerShell, and ensure there is no error in verbose output + ```powershell + $VerbosePreference = "Continue" + Import-Module .\artifacts\Release\Az.Accounts\Az.Accounts.psd1 + ``` - Connect to Azure and switch to your test subscription ```powershell Connect-AzAccount diff --git a/src/Accounts/Accounts/ChangeLog.md b/src/Accounts/Accounts/ChangeLog.md index e60f17bd3279..a362893a602d 100644 --- a/src/Accounts/Accounts/ChangeLog.md +++ b/src/Accounts/Accounts/ChangeLog.md @@ -19,6 +19,7 @@ --> ## Upcoming Release +* Upgraded System.Reflection.DispatchProxy on Windows PowerShell [#17856] ## Version 2.7.6 * Upgraded Microsoft.Rest.ClientRuntime to 2.3.24 diff --git a/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs b/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs index c723b73129c2..94bd79e6f326 100644 --- a/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs +++ b/src/Accounts/Authentication/Utilities/CustomAssemblyResolver.cs @@ -38,7 +38,7 @@ public static class CustomAssemblyResolver {"System.Net.Http.WinHttpHandler", new Version("4.0.2.0")}, {"System.Numerics.Vectors", new Version("4.1.4.0")}, {"System.Private.ServiceModel", new Version("4.7.0.0")}, //used by Compute - {"System.Reflection.DispatchProxy", new Version("4.0.3.0")}, + {"System.Reflection.DispatchProxy", new Version("4.0.4.0")}, {"System.Runtime.CompilerServices.Unsafe", new Version("4.0.6.0")}, {"System.Security.AccessControl", new Version("4.1.1.0")}, {"System.Security.Cryptography.Cng", new Version("4.3.0.0")}, diff --git a/src/lib/NetFxPreloadAssemblies/System.Reflection.DispatchProxy.dll b/src/lib/NetFxPreloadAssemblies/System.Reflection.DispatchProxy.dll index 64a57cbbecce2116fdc8717223283deaab66d387..674ced0460de362869ee14d73d030d79dc6e043c 100644 GIT binary patch literal 42632 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 From 5d733a76a6d48120daec2e6a3a13bde7352a2566 Mon Sep 17 00:00:00 2001 From: "dixue@microsoft.com" Date: Mon, 9 May 2022 21:13:03 +0800 Subject: [PATCH 2/3] Support user specified permission on ResourceUrl --- src/Accounts/Accounts/ChangeLog.md | 1 + .../Accounts/Token/GetAzureRmAccessToken.cs | 12 +++-- .../Accounts/help/Get-AzAccessToken.md | 7 ++- .../Authenticators/AuthenticationHelpers.cs | 44 +++++-------------- 4 files changed, 22 insertions(+), 42 deletions(-) diff --git a/src/Accounts/Accounts/ChangeLog.md b/src/Accounts/Accounts/ChangeLog.md index a362893a602d..46405bf142b4 100644 --- a/src/Accounts/Accounts/ChangeLog.md +++ b/src/Accounts/Accounts/ChangeLog.md @@ -20,6 +20,7 @@ ## Upcoming Release * Upgraded System.Reflection.DispatchProxy on Windows PowerShell [#17856] +* Supported specifying scope in `-ResourceUrl` of `Get-AzAccessToken` [#14085] ## Version 2.7.6 * Upgraded Microsoft.Rest.ClientRuntime to 2.3.24 diff --git a/src/Accounts/Accounts/Token/GetAzureRmAccessToken.cs b/src/Accounts/Accounts/Token/GetAzureRmAccessToken.cs index ddb5d1dcfa3b..41e2f673fe5d 100644 --- a/src/Accounts/Accounts/Token/GetAzureRmAccessToken.cs +++ b/src/Accounts/Accounts/Token/GetAzureRmAccessToken.cs @@ -12,12 +12,6 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Linq; -using System.Management.Automation; -using System.Text.Json; - using Microsoft.Azure.Commands.Common.Authentication; using Microsoft.Azure.Commands.Common.Authentication.Abstractions; using Microsoft.Azure.Commands.Profile.Models; @@ -25,6 +19,10 @@ using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; using Microsoft.Azure.PowerShell.Authenticators; using Microsoft.WindowsAzure.Commands.Utilities.Common; +using System; +using System.Linq; +using System.Management.Automation; +using System.Text.Json; namespace Microsoft.Azure.Commands.Profile { @@ -38,7 +36,7 @@ public class GetAzureRmAccessTokenCommand : AzureRMCmdlet [Parameter(ParameterSetName = ResourceUrlParameterSet, Mandatory = true, - HelpMessage = "Resource url for that you're requesting token, e.g. 'http://graph.windows.net/'.")] + HelpMessage = "Resource url for that you're requesting token, e.g. 'http://graph.windows.net/'. Permission can be appended.")] [ValidateNotNullOrEmpty] [Alias("Resource", "ResourceUri")] public string ResourceUrl { get; set; } diff --git a/src/Accounts/Accounts/help/Get-AzAccessToken.md b/src/Accounts/Accounts/help/Get-AzAccessToken.md index fe620c4680bc..8e6278b09bfd 100644 --- a/src/Accounts/Accounts/help/Get-AzAccessToken.md +++ b/src/Accounts/Accounts/help/Get-AzAccessToken.md @@ -8,7 +8,10 @@ schema: 2.0.0 # Get-AzAccessToken ## SYNOPSIS -Get raw access token. When using -ResourceUrl, please make sure the value does match current Azure environment. You may refer to the value of `(Get-AzContext).Environment`. +Get raw access token. The format of `-ResourceUrl` concatenates a desired resource identifier with an +optional desired OAuth2 permission for that resource. Please make sure resource identifier matches current +Azure environment. You may refer to the value of `(Get-AzContext).Environment`. If permission is not +provided, `/.default` is appended automatically for all app-level permission. ## SYNTAX @@ -83,7 +86,7 @@ Accept wildcard characters: False ``` ### -ResourceUrl -Resource url for that you're requesting token, e.g. 'https://graph.microsoft.com/'. +Resource url for that you're requesting token, e.g. 'https://graph.microsoft.com/'. Permission can be appended. ```yaml Type: System.String diff --git a/src/Accounts/Authenticators/AuthenticationHelpers.cs b/src/Accounts/Authenticators/AuthenticationHelpers.cs index b5671be93264..96d3e51b06bc 100644 --- a/src/Accounts/Authenticators/AuthenticationHelpers.cs +++ b/src/Accounts/Authenticators/AuthenticationHelpers.cs @@ -12,55 +12,33 @@ using Microsoft.Azure.Commands.Common.Authentication; using Microsoft.Azure.Commands.Common.Authentication.Abstractions; using Microsoft.Identity.Client; +using System; namespace Microsoft.Azure.PowerShell.Authenticators { internal static class AuthenticationHelpers { internal const string PowerShellClientId = "1950a258-227b-4e31-a9cf-717495945fc2", - EnableEbdMagicCookie = "site_id=501358&display=popup", - UserImpersonationScope = "{0}/user_impersonation", DefaultScope = "{0}/.default", AdfsScope = "{0}/openid"; /// - /// Get the authority string given a tenant and environment - /// - /// The Azure environment - /// The tenant Id - /// The authrotity string, from the AAD endpoint and tenant ID - internal static string GetAuthority(IAzureEnvironment environment, string tenant) - { - var tenantString = tenant ?? environment?.AdTenant ?? "organizations"; - return $"{environment.ActiveDirectoryAuthority}{tenantString}"; - } - - /// - /// - /// - /// - /// - internal static Prompt GetPromptBehavior(string showDialog) - { - switch (showDialog) - { - case ShowDialog.Always: - return Prompt.ForceLogin; - case ShowDialog.Never: - return Prompt.NoPrompt; - default: - return Prompt.SelectAccount; - } - } - - /// - /// Get the scopes array for a given resource + /// Get the scopes array for a given resource. If resource URI doesn't contain permission, .default should be appended for all app-level permissions. /// /// determines which scope to use /// which resource will be requested /// internal static string[] GetScope(bool onPremise, string resource) { + + if(!string.IsNullOrEmpty(resource)) + { + Uri uri = new Uri(resource); + if(!string.IsNullOrWhiteSpace(uri.AbsolutePath) && !"/".Equals(uri.AbsolutePath)) + { + return new string[] { resource }; + } + } var scopeTemplate = onPremise ? AdfsScope : DefaultScope; return new string[] { string.Format(scopeTemplate, resource) }; } From 0ceb52956ca35ef0418c07f8c33491b788854fe6 Mon Sep 17 00:00:00 2001 From: Dingmeng Xue Date: Tue, 13 Sep 2022 03:09:44 -0700 Subject: [PATCH 3/3] Add or update the Azure App Service build and deployment workflow config --- .github/workflows/main_dixueweb0913.yml | 56 +++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/main_dixueweb0913.yml diff --git a/.github/workflows/main_dixueweb0913.yml b/.github/workflows/main_dixueweb0913.yml new file mode 100644 index 000000000000..5a3afbe919c5 --- /dev/null +++ b/.github/workflows/main_dixueweb0913.yml @@ -0,0 +1,56 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy Node.js app to Azure Web App - dixueweb0913 + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up Node.js version + uses: actions/setup-node@v1 + with: + node-version: '16.x' + + - name: npm install, build, and test + run: | + npm install + npm run build --if-present + npm run test --if-present + + - name: Upload artifact for deployment job + uses: actions/upload-artifact@v2 + with: + name: node-app + path: . + + deploy: + runs-on: ubuntu-latest + needs: build + environment: + name: 'Production' + url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} + + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v2 + with: + name: node-app + + - name: 'Deploy to Azure Web App' + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'dixueweb0913' + slot-name: 'Production' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_7C582EB722D940F78A0850CF913C7D4D }} + package: .