#SignInLogs
Pushed a #KQL for: Successful device code sign-in from an unmanaged device.

Query is available for AADSignInEventsBeta and SigninLogs. Less known is the AADSignInEventsBeta filter for device code:
| where EndpointCall == "Cmsi:Cmsi"

🏹Query: github.com/Bert-JanP/Hu...
February 17, 2025 at 6:53 PM
Time to get a #KQL query from the shelve: Potential Adversary in the middle Phishing

If you have High-Risk users and axios useragents in the results please revoke some sessions.

🏹 github.com/Bert-JanP/Hu...

Query is available for both SigninLogs and AADSignInEventsBeta.
December 2, 2024 at 5:37 PM
Quick KQL for MFASweep detection. Bin of 1d works too :)

SigninLogs
| summarize uniqueCount = dcount(UserAgent), make_set(UserAgent),make_set(ResultType),make_set(IPAddress) by bin(TimeGenerated, 10m), UserPrincipalName
| where set_UserAgent has_all ('Android','Macintosh','iPhone','Windows phone')
November 21, 2024 at 4:36 PM
@liorbela.bsky.social
[IMP Post] 📌Track User Authentication and Analyze Sign-in Logs in Microsoft Intune -
howtomanagedevices.com/intune/5426/...
#SignInLogs #UserAuthentication #AuthenticationLogs #MSIntune #HTMDCommunity
July 27, 2026 at 6:42 AM
Now you can run queries! :)

SigninLogs
| extend AuthMethod = ['authenticationDetails'][0]['authenticationMethod']
| extend AuthMethodDetail = ['authenticationDetails'][0]['authenticationMethodDetail']
| extend MfaMethod = ['authenticationDetails'][1]['authenticationMethod']
February 9, 2026 at 8:33 PM
Previously, these details were only available in XDR Hunting table "AADSignInEventsBeta", Portal and/or Graph API. These added properties offer the opportunity to write new analytics rules and hunting queries, for example in the area of #TokenTheft. (2/3)
learn.microsoft.com/en-us/azure/...
Azure Monitor Logs reference - SigninLogs - Azure Monitor
Reference for SigninLogs table in Azure Monitor Logs.
learn.microsoft.com
February 11, 2025 at 5:31 PM
2/2 Example of the #KQL query:

SigninLogs
| take 10
| extend MyOwnDynamicFields = strcat(AppDisplayName, " using Client App ", ClientAppUsed, " and user ", UserDisplayName )
| project MyOwnDynamicFields, UserPrincipalName

#Kusto
November 27, 2024 at 6:31 AM
Investigation Scenario 🔎

You've received an alert from the pictured Sigma rule indicating an account lockout occurred in your Azure environment.

What do you look for to investigate whether an incident occurred?

#InvestigationPath #DFIR #SOC
December 31, 2024 at 3:17 PM
If you work with #EntraID #AzureAD SignInLogs you may encountered the ResultDescription "Other" quite often.

In my latest blog post I show you how to easily resolve those messages to a meaningful error message and without leaving the KQL query windows. #Sentinel #KQL
Other Entra ID / Azure AD SignIn errors
The challenge Most of us analyzing Azure AD SignIn logs have been there. You come across a failed sign-in, but the ResultDescription is not really helpful, but only shows “Other”. Other? But what ...
cloudbrothers.info
August 6, 2023 at 11:48 AM
Microsoft Authenticator App Details now exposed in Entra SignInLogs
Microsoft Authenticator App Details now exposed in Entra SignInLogs
tech.nicolonsky.ch
May 24, 2026 at 3:09 PM
Microsoft Drops Bombshell on Network Defenders: SigninLogs Update Exposes All Authentication Secrets + Video

Introduction: Understanding how applications authenticate within a tenant has long been a blind spot for security teams, with sign‑in logs often showing the protocol value as “None” and…
Microsoft Drops Bombshell on Network Defenders: SigninLogs Update Exposes All Authentication Secrets + Video
Introduction: Understanding how applications authenticate within a tenant has long been a blind spot for security teams, with sign‑in logs often showing the protocol value as “None” and leaving defenders to guess whether legacy, vulnerable protocols were in use. Microsoft has finally addressed this critical gap by updating Microsoft Entra sign‑in logs to explicitly surface the authentication protocols and flows used during every sign‑in, delivering real, actionable visibility into how applications authenticate across the entire environment without the need for extra tooling or guesswork.
undercodetesting.com
April 30, 2026 at 8:34 PM
Pro tip: Set up a weekly automated report of sign-in failures and risky sign-ins. Patterns in failed logins often reveal brute force attacks in progress.

#SignInLogs #ThreatDetection #M365
https://365securityassessment.com
March 24, 2026 at 5:02 PM
What EndpointCall do you use for these detections? Or do you only rely on SignInLogs for device code auth?
February 18, 2025 at 4:52 PM
These fields look new to me in SignInLogs
September 12, 2025 at 4:21 PM
isTenantRestricted is new to me in SignInLogs...
August 15, 2025 at 4:39 PM
Sentinel - Analytic template - MFA Rejected by User
Hi, we are having a few issues with the Sentinel templated analytic rule - MFA Rejected by User (version 2.0.3) - <https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Microsoft%20Entra%20ID/Analytic%20Rules/MFARejectedbyUser.yaml> Over the last 30 days this analytic rule has generated 98 incidents which are all false positives. The analytic rule works on looking at Entra ID signinlogs against result type 500121 with one or more of the following additional details reported "MFA denied; user declined the authentication" or "fraud". It maps UEBA identity information then join the behavior analytics data summarised by IP Address. It's the summarising of the IP address data which has me questioning the code. When we get an event in the signin logs it also generates an event in the UEBA behavior analytic table along with a IP investigation score. If you have multiple events in the time period of the rules query period then the summarizing does a SUM() against the IP investigation data which can turn into a high which breaches the threshold. The default threshold is 20 but I have seen IP investigation scores summed again being between 60 and 100+ but the individual event record for the MFA rejection gives a score of 3 or 4. Anyone an expert with UEBA and KQL be able to tell me if the original code looks ok? - <https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Microsoft%20Entra%20ID/Analytic%20Rules/MFARejectedbyUser.yaml>  Would to be better served by the following code? let riskScoreCutoff = 20; //Adjust this based on volume of results SigninLogs | where ResultType == 500121 | extend additionalDetails_ = tostring(Status.additionalDetails) | extend UserPrincipalName = tolower(UserPrincipalName) | where additionalDetails_ =~ "MFA denied; user declined the authentication" or additionalDetails_ has "fraud" | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), UserId = any(UserId), AADTenantId=any(AADTenantId), DeviceName=any(DeviceDetail.displayName), IsManaged=any(DeviceDetail.isManaged), OS = any(DeviceDetail.operatingSystem) by UserPrincipalName, IPAddress, AppDisplayName | extend Name = tostring(split(UserPrincipalName,'@',0)[0]), UPNSuffix = tostring(split(UserPrincipalName,'@',1)[0]) | join kind=leftouter ( IdentityInfo | summarize LatestReportTime = arg_max(TimeGenerated, *) by AccountUPN | project AccountUPN, Tags, JobTitle, GroupMembership, AssignedRoles, UserType, IsAccountEnabled | summarize Tags = make_set(Tags, 1000), GroupMembership = make_set(GroupMembership, 1000), AssignedRoles = make_set(AssignedRoles, 1000), UserType = make_set(UserType, 1000), UserAccountControl = make_set(UserType, 1000) by AccountUPN | extend UserPrincipalName=tolower(AccountUPN) ) on UserPrincipalName | join kind=leftouter ( BehaviorAnalytics | where ActivityType in ("FailedLogOn", "LogOn") | where isnotempty(SourceIPAddress) | project UsersInsights, DevicesInsights, ActivityInsights, InvestigationPriority, SourceIPAddress | project-rename IPAddress = SourceIPAddress | summarize UsersInsights = make_set(UsersInsights, 1000), DevicesInsights = make_set(DevicesInsights, 1000) //IPInvestigationPriority = tostring(InvestigationPriority) by IPAddress, IPInvestigationPriority=InvestigationPriority) on IPAddress | extend UEBARiskScore = IPInvestigationPriority | where UEBARiskScore > riskScoreCutoff | sort by UEBARiskScore desc
techcommunity.microsoft.com
September 13, 2024 at 1:14 PM
Now go to dataexplorer.azure.com/ and set up your free cluster if you've never done that before. Once you have created the cluster and database, right click on the database, select Get data, select Local file, create a table for SigninLogs, select it, add your JSON, and import.
February 9, 2026 at 8:33 PM
I bet this is different per tenant based on rollout Anyone able to check and share? SigninLogs
| extend AuthenticationMethod = tostring(parse_json(AuthenticationDetails)[0].authenticationMethod)
| where AuthenticationMethod in ('FIDO2 security key','Passkey (device-bound)') https://t.co/JSyCpbepCI
November 18, 2024 at 10:17 PM
SigninLogs
| extend AuthenticationMethod = tostring(parse_json(AuthenticationDetails)[0].authenticationMethod)
| extend AuthenticationMethodDetail = tostring(parse_json(AuthenticationDetails)[0].authenticationMethodDetail)
| extend MfaMethod =…
November 18, 2024 at 10:17 PM