'Why I cannot authenticate an app in Azure

I am trying to authenticate app in azure, but getting the following error,

Response status code does not indicate success: 401 (Unauthorized). 

Authentication is done using a powershell cmdlet,

function Get-AzureToken {
    Param(  
        [Parameter(Mandatory)][String]$TenantId,  
        [Parameter(Mandatory)][String]$ApplicationId,  
        [Parameter(Mandatory)][String]$Secret,
        [Parameter()][string]$apiEndpointUri = "https://management.azure.com/.default"
    )
    $encodedSecret = [System.Web.HttpUtility]::UrlEncode($secret)  
    $RequestAccessTokenUri = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"  
    $body = "grant_type=client_credentials&client_id=$applicationId&client_secret=$encodedSecret&scope=$apiEndpointUri"  
    $contentType = 'application/x-www-form-urlencoded' 
    Write-Information "Fetching token for service principal" 
    try {  
        $Token = Invoke-RestMethod -Method Post -Uri $RequestAccessTokenUri -Body $body -ContentType $contentType  
        if (!$token) {
            throw "Something went wrong getting token"
        }
    }
    catch {
        write-error $_.Exception.Message 
        write-error "Failed to get token" -ErrorAction Stop
    }
    return "$($Token.access_token)" 
}

Error in GitHub actions:

enter image description here



Solution 1:[1]

Try URLEncode on the scope URI. Also use double slashes for the URL: https://github.com/MicrosoftDocs/azure-docs/issues/68642?msclkid=908717bbb41f11eca828738506359fcb

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Matt Small