Active IQ Unified Manager Discussions

Calling a WFA Workflow Using Rest over HTTPS

sheelnidhig

Hello Guys,

 

I am new to the Workflow Rest API. all seems to be working weel when i write the code in powershell and execute.

 

but then i put the same code on Workflow command it gives me the below error:

 

"The underlying connection was closed: An unexpected error occurred on a send."

 

I am plaving the below lines in the code to work with SSL/TLS, and as i mentioned it works well with simple Powershell Script, but not though Workflow engine. specially when using HTTPS connection. Http connection is no problems.

 

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

 

I am also attaching the workflow which calls another workflow with this post.

 

Any possible support suggestations would help me taking it further.

 

,Sheelnidhi

1 ACCEPTED SOLUTION

sheelnidhig

Hello,

 

I did some more powershell and it seems that i have found a way, added the below code:

 

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

 


function Get-BasicAuthCreds {
param([string]$Username,[string]$Password)
$AuthString = "{0}:{1}" -f $Username,$Password
$AuthBytes = [System.Text.Encoding]::Ascii.GetBytes($AuthString)
return [Convert]::ToBase64String($AuthBytes)
}
$BasicCreds = Get-BasicAuthCreds -Username $user -Password $pass
$credential = New-Object System.Management.Automation.PSCredential ($user, (ConvertTo-SecureString $pass -AsPlainText -Force))

 

 

,Sheelnidhi

View solution in original post

4 REPLIES 4

Damien_Queen

Are you sure you do not have any troubles related to WFA using a self-signed certificate?

sheelnidhig

Nops, i dont have any issues with Self Signed Certificates. as i can easily open the HTTPS page and also able to execute the Workflow using REST API using powershell CLI.

but i get this error then i put the same powershell command in WFA.

 

,Sheelnidhi

GregGuignard

Are you providing credentials in the header of the REST call via PowerShell? If not, you'll need to add that. One way to do that is with a base64 encoded encoded Basic Authorization header like this example.

 

# Create base64 encoded credential
$mycred = Get-Credential
$EncodedAuthorization = [System.Text.Encoding]::UTF8.GetBytes($mycred.username + ':' + $mycred.GetNetworkCredential().password)
$EncodedPassword = [System.Convert]::ToBase64String($EncodedAuthorization)
$Headers = @{"Authorization"="Basic $($EncodedPassword)"}

 

Use the created $Headers in the call to the workflow vie Invoke-WebRequest or Invoke-RestMethod

 

Invoke-WebRequest -Method GET -Uri $URi -Headers $Headers 
Invoke-RestMethod -Method GET -Uri $URi -Headers $Headers 

sheelnidhig

Hello,

 

I did some more powershell and it seems that i have found a way, added the below code:

 

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

 


function Get-BasicAuthCreds {
param([string]$Username,[string]$Password)
$AuthString = "{0}:{1}" -f $Username,$Password
$AuthBytes = [System.Text.Encoding]::Ascii.GetBytes($AuthString)
return [Convert]::ToBase64String($AuthBytes)
}
$BasicCreds = Get-BasicAuthCreds -Username $user -Password $pass
$credential = New-Object System.Management.Automation.PSCredential ($user, (ConvertTo-SecureString $pass -AsPlainText -Force))

 

 

,Sheelnidhi

View solution in original post

Announcements
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner
Public