msgraph-sdk-javascript
mgt-react-codetour
msgraph-sdk-javascript | mgt-react-codetour | |
---|---|---|
14 | 1 | |
714 | 20 | |
1.1% | - | |
9.2 | 0.0 | |
5 days ago | over 1 year ago | |
TypeScript | TypeScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
msgraph-sdk-javascript
- Import AzureAD app role assignments into Terraform state
-
Find the length of an email attachment name.
# Import the required modules Import-Module -Name AzureAD, Microsoft.Graph.Authentication, Microsoft.Graph.MailMessages -Force # Authenticate with MFA using the admin account $adminUsername = "XXXX.xxx" Connect-AzureAD -AccountUpn $adminUsername try { # Prompt for user's email address $userEmailAddress = Read-Host -Prompt "Enter the user's email address" # Get the user's emails with attachments $accessToken = Get-AzureADAccessToken -ResourceUrl "https://graph.microsoft.com" $graphClient = New-Object Microsoft.Graph.GraphServiceClient -ArgumentList ($accessToken.AccessToken) $emails = $graphClient.Users[$userEmailAddress].Messages.Request().Top(100).Filter("hasAttachments eq true").GetAsync().Result # Filter emails with attachments having names longer than 50 characters $longAttachments = $emails.Attachments | Where-Object { $_.Name.Length -gt 50 } # Output the attachments, subject, and date of the email if ($longAttachments.Count -gt 0) { Write-Host "Attachments with names longer than 50 characters for $userEmailAddress" foreach ($attachment in $longAttachments) { $email = $emails | Where-Object { $_.Attachments -contains $attachment } Write-Host "Subject: $($email.Subject)" Write-Host "Date: $($email.ReceivedDateTime.DateTime)" Write-Host "Attachment Name: $($attachment.Name)" Write-Host "" } } else { Write-Host "No attachments found with names longer than 50 characters for $userEmailAddress." } } catch { Write-Host "Failed to retrieve email attachments: $($_.Exception.Message)" } finally { # Disconnect from Azure AD Disconnect-AzureAD -Confirm:$false }
- La ville de bordeaux met en libre accès les vitesses enregistrées par ses radars pédagogiques : la grande majorité des automobilistes ne respectent pas les limitations de vitesse.
-
Container access to containers based on azure AD groups
labels: - "traefik.http.middlewares.traefik-azure-auth-group1.azure.authProvider=traefik-forward-auth" - "traefik.http.middlewares.traefik-azure-auth-group1.azure.resource=https://graph.microsoft.com/" - "traefik.http.middlewares.traefik-azure-auth-group1.azure.requiredGroup=group1"
-
Filtering app names that start with
$AccessToken = (Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com").Token $AccessToken = ConvertTo-SecureString -AsPlainText $AccessToken -Force If($connect -eq $null){$connect = Connect-MgGraph -AccessToken $AccessToken} $Apps = Get-MgServicePrincipal -All $today = Get-Date $credentials = foreach ($App in $Apps) { foreach ($Credential in $App.PasswordCredentials) { [pscustomobject]@{ DisplayName = $App.DisplayName.where({ $_ -notlike "sp-*" }) Id = $App.Id AppId = $App.AppId EndDateTime = $Credential.EndDateTime PwdDisplayName = $Credential.DisplayName KeyId = $Credential.KeyId } } }
- Have you worked with Microsoft Graph API?
-
Backup DNS if/when AdGuard container doesn't work
The results from that host are almost all MS (graph.microsoft.com, c1-shared-15.cdn.office.net, teams.microsoft.com, webshell.suite.office.com) This happens to be my linux laptop, but I use several MS products in chrome and do a lot of api testing with MS products. So this makes sense.
-
Need some script helping - M365 API
$ApplicationID = 'applicationid from my app registration with relevant permissions' $ApplicationKey = 'application secret' $tenantid = 'obviously the tenant id' $URI = 'teams webhook url' $Minutes = '2' $ExchangeOnline = 'yes' $MicrosoftForms = '' $MicrosoftIntune = '' $MicrosoftKaizala = '' $SkypeforBusiness = '' $MicrosoftDefenderATP = '' $MicrosoftFlow = '' $FlowinMicrosoft365 = '' $MicrosoftTeams = 'yes' $MobileDeviceManagementforOffice365 = '' $OfficeClientApplications = '' $Officefortheweb = '' $OneDriveforBusiness = 'yes' $IdentityService = '' $Office365Portal = 'yes' $OfficeSubscription = '' $Planner = '' $PowerApps = '' $PowerAppsinMicrosoft365 = '' $PowerBI = '' $AzureInformationProtection = '' $SharePointOnline = 'yes' $MicrosoftStaffHub = '' $YammerEnterprise = '' $Microsoft365Suite = '' $Incident = 'yes' $Advisory = '' $ServicesArray = @() if($ExchangeOnline){$ServicesArray += '$_.service -eq "Exchange Online"'} if($MicrosoftForms){$ServicesArray += '$_.service -eq "Microsoft Forms"'} if($MicrosoftIntune){$ServicesArray += '$_.service -eq "Microsoft Intune"'} if($MicrosoftKaizala){$ServicesArray += '$_.service -eq "Microsoft Kaizala"'} if($SkypeforBusiness){$ServicesArray += '$_.service -eq "Skype for Business"'} if($MicrosoftDefenderATP){$ServicesArray += '$_.service -eq "Microsoft Defender ATP"'} if($MicrosoftFlow){$ServicesArray += '$_.service -eq "Microsoft Flow"'} if($FlowinMicrosoft365){$ServicesArray += '$_.service -eq "Flow in Microsoft 365"'} if($MicrosoftTeams){$ServicesArray += '$_.service -eq "Microsoft Teams"'} if($MobileDeviceManagementforOffice365){$ServicesArray += '$_.service -eq "Mobile Device Management for Office 365"'} if($OfficeClientApplications){$ServicesArray += '$_.service -eq "Office Client Applications"'} if($Officefortheweb){$ServicesArray += '$_.service -eq "Office for the web"'} if($OneDriveforBusiness){$ServicesArray += '$_.service -eq "OneDrive for Business"'} if($IdentityService){$ServicesArray += '$_.service -eq "Identity Service"'} if($Office365Portal){$ServicesArray += '$_.service -eq "Office 365 Portal"'} if($OfficeSubscription){$ServicesArray += '$_.service -eq "Office Subscription"'} if($Planner){$ServicesArray += '$_.service -eq "Planner"'} if($PowerApps){$ServicesArray += '$_.service -eq "PowerApps"'} if($PowerAppsinMicrosoft365){$ServicesArray += '$_.service -eq "PowerApps in Microsoft 365"'} if($PowerBI){$ServicesArray += '$_.service -eq "Power BI"'} if($AzureInformationProtection){$ServicesArray += '$_.service -eq "Azure Information Protection"'} if($SharepointOnline){$ServicesArray += '$_.service -eq "Sharepoint Online"'} if($MicrosoftStaffHub){$ServicesArray += '$_.service -eq "Microsoft StaffHub"'} if($YammerEnterprise){$ServicesArray += '$_.service -eq "Yammer Enterprise"'} if($Microsoft365Suite){$ServicesArray += '$_.service -eq "Microsoft 365 Suite"'} $ServicesString = $ServicesArray -Join " -or " $ClassificationArray = @() if($Incident){$ClassificationArray += '$_.Classification -eq "incident"'} if($Advisory){$ClassificationArray += '$_.Classification -eq "advisory"'} $ClassificationString = $ClassificationArray -Join " -or " $body = @{ grant_type="client_credentials"; resource="https://graph.microsoft.com"; client_id=$ApplicationID; client_secret=$ApplicationKey; earliest_time="-$($Minutes)m@s"} $oauth = Invoke-RestMethod -Method Post -Uri "https://login.microsoftonline.com/$tenantid/oauth2/token?api-version=1.0" -Body $body $headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"} $messages = (Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/issues" -Headers $headerParams -Method Get) $incidents = $messages.Value | Where-Object ([scriptblock]::Create($ClassificationString)) | Where-Object ([scriptblock]::Create($ServicesString)) $Now = Get-Date ForEach ($inc in $incidents){ # Add updates posted last $Minutes If (($Now - [datetime]$inc.lastModifiedDateTime).TotalMinutes -le $Minutes) { # Set the color line of the card according to the Classification of the event, or if it has ended if ($inc.Classification -eq "incident" -and $inc.EndTime -eq $null) { $color = "ff0000" # Red } else { if ($inc.EndTime -ne $null) { $color = "00cc00" # Green } else { $color = "ffff00" # Yellow } } $Message = $inc.posts.description.content[$inc.Messages.Count-1] | ConvertTo-Json $Payload = @" { "@context": "https://schema.org/extensions", "@type": "MessageCard", "potentialAction": [ { "@type": "OpenUri", "name": "Post INC document", "targets": [ { "os": "default", "uri": "$($inc.PostIncidentDocumentUrl)" } ] }, ], "sections": [ { "facts": [ { "name": "Service:", "value": "$($inc.service)" }, { "name": "Status:", "value": "$($inc.Status)" }, { "name": "Classification:", "value": "$($inc.classification)" } ], "text": $($Message) } ], "summary": "$($Inc.Title)", "themeColor": "$($color)", "title": "$($Inc.Id) - $($Inc.Title)" } "@ Invoke-RestMethod -uri $uri -Method Post -body $Payload -ContentType 'application/json; charset=utf-8' } }
-
AzureAD -filter string multiple values
$token = (Get-AzAccessToken -ResourceUrl https://graph.microsoft.com).token
-
How do your create a JWT to access MSGRAPH API with Certificate Based Authentication???
# Get the certificate from the certificate store $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("MY", "LocalMachine") $store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadOnly) $cert = $store.Certificates | Where-Object { $_.Subject -eq "CN=your_certificate_name" } # Build the JWT assertion $header = @{alg="RS256";typ="JWT"} $payload = @{iss="your_client_id";sub="your_client_id";aud="https://graph.microsoft.com";exp=(Get-Date).AddMinutes(10).ToUnixTime()} $headerEncoded = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(($header | ConvertTo-Json))) $payloadEncoded = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(($payload | ConvertTo-Json))) $data = "{0}.{1}" -f $headerEncoded, $payloadEncoded $signature = [System.Convert]::ToBase64String($cert.GetRSAPrivateKey().SignData(([Text.Encoding]::UTF8.GetBytes($data)), "SHA256")) $jwt = "{0}.{1}.{2}" -f $headerEncoded, $payloadEncoded, $signature # Make the request to the Microsoft Graph API $response = Invoke-WebRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/users?$select
mgt-react-codetour
-
Learn code interactively
If you haven't seen code tours in action, I'd suggest you take a look at a code tour we've recently put together for Microsoft Graph Toolkit. If you haven't heard of the Microsoft Graph Toolkit, it's the easiest way to connect your app to Microsoft 365. No matter if you know the toolkit already or not, I'd like to ask you to try the tour and tell me what you think. Does it work for you as a way to learn code? Would you like to see more tours for other technologies and scenarios? Hit reply and let me know!
What are some alternatives?
cli-microsoft365 - Manage Microsoft 365 and SharePoint Framework projects on any platform
office365-cli - Manage Microsoft 365 and SharePoint Framework projects on any platform [Moved to: https://github.com/pnp/cli-microsoft365]
vscode-msgraph-autocomplete - This VSCode extension allows you to auto-complete the Microsoft Graph API URLs you are writing. You get the most useful Microsoft Graph Explorer functionality in your favorite editor.
TimelineExtension - Windows Timeline & Project Rome Web Extension
upload-files-to-sp-using-graph - Example of how you can upload files to sharepoint using microsoft graph
storybook - Storybook is a frontend workshop for building UI components and pages in isolation. Made for UI development, testing, and documentation.
Angular - Deliver web apps with confidence 🚀
Visual Studio Code - Visual Studio Code
AdGuardHome - Network-wide ads & trackers blocking DNS server
traefik-forward-auth - Minimal forward authentication service that provides Google/OpenID oauth based login and authentication for the traefik reverse proxy