Get-SamlFederationMetadata.ps1
<#
.SYNOPSIS .EXAMPLE PS C:\>Get-MicrosoftIdpAuthority -TenantId tenant.onmicrosoft.com | Get-SamlFederationMetadata Get SAML or WS-Fed Federation Metadata for a specific Microsoft tenant. .EXAMPLE PS C:\>Get-SamlFederationMetadata 'https://accounts.google.com/' Get SAML or WS-Fed Federation Metadata for Google Accounts. .INPUTS System.Uri #> function Get-SamlFederationMetadata { [CmdletBinding()] [Alias('Get-WsFedFederationMetadata')] [OutputType([xml],[System.Xml.XmlElement[]])] param ( # [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=1)] [uri] $Issuer, # Azure AD Application Id [Parameter(Mandatory=$false, Position=2)] [guid] $AppId ) $uriFederationMetadata = New-Object System.UriBuilder $Issuer.AbsoluteUri $uriFederationMetadata.Path += '/FederationMetadata/2007-06/FederationMetadata.xml' if ($AppId) { $uriFederationMetadata.Query = ConvertTo-QueryString @{ AppId = $AppId } } $FederationMetadata = Invoke-RestMethod -Uri $uriFederationMetadata.Uri.AbsoluteUri -ContentType 'application/samlmetadata+xml' if ($FederationMetadata -is [string]) { #[xml] $FederationMetadata = $FederationMetadata.Substring(1) [xml] $FederationMetadata = $FederationMetadata.Trim('') } return $FederationMetadata.GetElementsByTagName('EntityDescriptor') } |