Certain Azure AD attributes, such as businessPhones, are not available through the Azure AD PowerShell module. Here is a super quick way to work with the graph using PowerShell, without needing separate app registrations etc.
Continue reading “Clearing an attribute for all users through Microsoft Graph”PowerShell for verifying Norwegian social security number / personnummer
function Get-IsSSNValid
{
[CmdletBinding()]
[Alias()]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
Position=0)]
[String] $SSN
)
Process
{
$FirstPart = $SSN.Substring(0,9)
$Check = $SSN.Substring(9,2)
$k1 = 11 - ((3 * [int]::Parse($FirstPart.Chars(0)) + 7 * [int]::Parse($FirstPart.Chars(1)) + 6 * [int]::Parse($FirstPart.Chars(2)) + 1 * [int]::Parse($FirstPart.Chars(3)) + 8 * [int]::Parse($FirstPart.Chars(4)) + 9 * [int]::Parse($FirstPart.Chars(5)) + 4 * [int]::Parse($FirstPart.Chars(6)) + 5 * [int]::Parse($FirstPart.Chars(7)) + 2 * [int]::Parse($FirstPart.Chars(8))) % 11)
if($k1 -eq "11") {
$k1 = 0
}
$k2 = 11 - ((5 * [int]::Parse($FirstPart.Chars(0)) + 4 * [int]::Parse($FirstPart.Chars(1)) + 3 * [int]::Parse($FirstPart.Chars(2)) + 2 * [int]::Parse($FirstPart.Chars(3)) + 7 * [int]::Parse($FirstPart.Chars(4)) + 6 * [int]::Parse($FirstPart.Chars(5)) + 5 * [int]::Parse($FirstPart.Chars(6)) + 4 * [int]::Parse($FirstPart.Chars(7)) + 3 * [int]::Parse($FirstPart.Chars(8)) + 2 * $k1) % 11)
if($k2 -eq "11") {
$k2 = 0
}
return [int]::Parse($Check.Chars(0)) -eq $k1 -and [int]::Parse($Check.Chars(1)) -eq $k2
}
}
Get-IsSSNValid "12345678910"
Sending merged emails through the Microsoft Graph using PowerShell
Some times there is a need to send merged emails to users or customers, where certain placeholders are replaced by usernames, email addresses, names etc. This blog post contains a script that can do this for you, using the Microsoft Graph. You need a regular account with Office 365 and Exchange Online for this to work.
Continue reading “Sending merged emails through the Microsoft Graph using PowerShell”Getting all Azure AD consents using PowerShell
Customers should really start paying attention to their Azure AD application consents, which can be daunting. There are obviously tools for this, even provided by Microsoft through Cloud App Security (CAS), but you know – why not simply dump out everything in Excel and parse through it?
This blog post contains a simple PowerShell script that does exactly this.
Continue reading “Getting all Azure AD consents using PowerShell”Getting Azure AD domain authentication information using PowerShell
This is a quick blog post with an example PowerShell cmdlet allowing you to find out what type of authentication and branding exists for a domain in Azure AD.
function Get-AzureADDomainInfoFromPublicApi
{
[CmdletBinding()]
[Alias()]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
Position=0)]
[String] $Domain
)
Begin
{
}
Process
{
$Url = "https://login.microsoftonline.com/common/userrealm/?user=someone.random@" + $Domain + "&checkForMicrosoftAccount=true&api-version=2.1"
Invoke-RestMethod $Url
}
End
{
}
}
Get-AzureADDomainInfoFromPublicApi microsoft.com
Get-AzureADDomainInfoFromPublicApi innofactor.com
For example, in the output, if “AuthURL” contains a url you’ll see that ADFS is used and if is_dsso_enabled that means the Seamless SSO is active.
MIM – Finding users with certain changed attributes last 24 hours
This post contains a quick example on how to find users with certain attributes update the last 24 hours. The script uses the Lithnet PowerShell Module, which can be install using Install-Module LithnetRMA.
Continue reading “MIM – Finding users with certain changed attributes last 24 hours”Today I found out – Azure AD ID Token signed by “unknown KID”
Quick post today. Of course, when implementing Azure AD authentication, you should use the Microsoft Authentication Library. Some times, however, you have platform limitations that limits you to implement OpenID Connect “from scratch”. So one of my customers did, but we found the ID Token to be signed by a key with key identifier (kid) that we could not find in the jwks urls found in the OpenID Connect metadata. However, I found it eventually and here is how.
Continue reading “Today I found out – Azure AD ID Token signed by “unknown KID””Adding custom attributes to the Azure AD OpenID Connect ID Token
The following contains a quick reference for how to extend the OpenID Connect ID Token that we created in this blog post with additional attributes.
Continue reading “Adding custom attributes to the Azure AD OpenID Connect ID Token”Splitting objects into buckets using PowerShell
Today I quickly needed to split users into migration batches for Office 365, and with that I needed to create many buckets of 100 user objects each. The following script can help you out if you need something similar.
Continue reading “Splitting objects into buckets using PowerShell”Checking Azure AD tenant id using PowerShell
This is a short blog post with a PowerShell cmdlet that will return you the Azure AD tenant id for a given domain.
function Get-AzureADTenantId
{
[CmdletBinding()]
[Alias()]
[OutputType([string])]
Param
(
# Param1 help description
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$DomainName
)
Begin
{
Load-Assembly System.Xml.Linq | Out-Null
}
Process
{
$FederationMetadata = Get-AzureADFederationMetadata -Domain $DomainName
$FederationMetadata.EntityDescriptor.entityID -split "/" | where{$_ -match "^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$"}
}
End
{
}
}
Get-AzureADTenantId microsoft.com
Get-AzureADTenantId microsoft.onmicrosoft.com