0

I am trying to make a request to an SSRS Web API using powershell but I always get a 401 error when I try running to script to make the rest request from a powershell 7 container.

401 error

The code is as seen below:

$REPORT_SERVER_API_URL = $Env:REPORT_SERVER_API_URL

$username = "$Env:REPORT_SERVER_DOMAIN\$Env:REPORT_SERVER_USERNAME"
$password = $Env:REPORT_SERVER_PASSWORD | ConvertTo-SecureString -asPlainText -Force


$cred = New-Object System.Management.Automation.PSCredential($username,$password)

echo "Cred $Cred"

Write-Output "Create Datasource"

$DatasourceName = "DataSourceName"
$checkDatasourceAlreadyExistsUrl =  $REPORT_SERVER_API_URL + '/Datasources/?$filter=contains(Name, ''{0}'')&$select=Id, Name' -f $DatasourceName 

#Make Request to check if datasource already exists

Write-Output "Checking if Datasource $DatasourceName already exists...."

$Params = @{
    Uri = $checkDatasourceAlreadyExistsUrl
    Credential = $cred
    #PreserveAuthorizationOnRedirect = $true
}

try
{
$UriLower = $checkDatasourceAlreadyExistsUrl.ToLower()
echo "UriLower - $UriLower"
#$checkDataSourceAlreadyExistsResponse = Invoke-WebRequest -uri $checkDatasourceAlreadyExistsUrl -Credential $cred -SessionVariable s
$checkDataSourceAlreadyExistsResponse = Invoke-RestMethod -Uri $UriLower  @Params  -UseBasicParsing  -SkipCertificateCheck
}
catch {
$Wrong = $_.Exception.Response
echo "Wrong - $Wrong"
throw $_.Exception.Response
}

The implementation of the Dockerfile is as seen below:

FROM mcr.microsoft.com/powershell:lts-7.2-debian-10

RUN apt-get update &&  apt-get install -y --no-install-recommends gss-ntlmssp

ENV DATASOURCE_CONNECTION_STRING  XXX
ENV DATASOURCE_DATABASE_PASSWORD  XXX
ENV DATASOURCE_DATABASE_USERNAME  XXX
ENV REPORT_SERVER_URI  XXX
ENV REPORT_SERVER_USERNAME  XXX
ENV REPORT_SERVER_PASSWORD  XXX
ENV REPORT_SERVER_API_URL XXX

COPY ./SSRSProject ./SSRSProject
#COPY ./ssrs_deploy_script.ps1 .

Clement Okyere
  • 251
  • 1
  • 6
  • 12
  • You want to use OAUTH authentication. See : https://learn.microsoft.com/en-us/sql/connect/ado-net/sql/azure-active-directory-authentication?view=sql-server-ver16#using-active-directory-device-code-flow-authentication Example show c# and should also work with PS since PS is written in c#. Read all paragraphs for "Active Directory authentication" – jdweng Mar 24 '23 at 14:42

0 Answers0