Pregledavajući dnevnik promjena Graph API-ja za mjesec, primijetio sam zanimljiv dodatak u resurs. Naime, na lastUsedDateTime vlasništvo je sada dostupno za “roditelja” /autentifikacija/metode endpoint i bilo koji od njegovih potomaka, dajući nam podatke o tome kada je određena metoda posljednji put korištena. To bi mogao biti mali dodatak, ali svakako koristan, jer stanarima daje uvid u podatke koji su inače dostupni samo putem zapisa za prijavu.
Najprije, prvo lastUsedDateTime imovina je trenutno izložena samo pod /betapa ga možda još ne želite dodati svojim rješenjima i skriptama. S druge strane, poznato je da Microsoft ostaje mjesecima, pa čak i godinama, prije nego što bilo koju novu funkcionalnost prebaci na službeno podržanu /v1.0 krajnja točka. Kao primjer, createdDateTime vlasništvo za isti resurs postoji već gotovo godinu dana. Dakle, ako smatrate da je važno znati kada je određena metoda autentifikacije posljednji put korištena, riskirajte i prijeđite na korištenje /beta krajnja točka 🙂
Što se tiče dozvola, ništa se nije promijenilo. Kao i prije, trebat će vam UserAuthenticationMethod.Read.All opseg kako bi se upitao /autentifikacija/metode krajnju točku, u obliku dopuštenja delegata ili aplikacije. Za prvo ćete također trebati odgovarajuću Entra administrativnu ulogu, a Global Reader je najmanje privilegirana.
Evo primjera kako se lastUsedDateTime nekretnina izgleda ovako za jednog od korisnika u mom najmoprimcu:
GET https://graph.microsoft.com/beta/users/user@domain.com/authentication/methods
Kao službena dokumentacija nas upozorava, ne popunjava svaka metoda provjere autentičnosti vremensku oznaku zadnje upotrebe. Zanimljivo je da je lozinka jedna od pogođenih metoda, budući da niti jedan korisnik unutar mog stanara ne prijavljuje podatke o korištenju za nju. Za metode koje izvješćuju o zadnjoj vremenskoj oznaci korištenja, čini se da su podaci retroaktivno popunjeni za najmanje zadnjih 12 mjeseci, vaša kilometraža može varirati.
Gore postavljamo upit “roditelju” /autentifikacija/metode krajnja točka, ali lastUsedDateTime Svojstvo se popunjava i na pojedinačnim krajnjim točkama specifičnim za metodu. Na primjer, na snimci zaslona u nastavku posebno tražimo podatke iz /authentication/microsoftAuthenticatorMethods krajnja točka:
GET https://graph.microsoft.com/beta/users/user@domain.com/authentication/microsoftAuthenticatorMethods?$select=id,lastUsedDateTime
Zanimljivo, dok je $odaberi operator sasvim dobro radi s gornjim upitom, čini se da ne radi s većinom ostalih srodnih, kao što je FIDO (/fido2Metode). Također možete koristiti $filter operator za dobivanje skupa metoda korištenih nakon (ili prije) određenog datuma. Nažalost, čini se da samo neke metode rade i za taj scenarij. Pa dobro, čuda Grafa… Evo primjera za svaki slučaj:
GET https://graph.microsoft.com/beta/users/user@domain.com/authentication/methods?$filter=lastUsedDateTime ge 2019-12-08T12:24:20Z
Još jedno zanimljivo zapažanje iz podataka unutar mog stanara je da je Microsoft izgleda promijenio format koji se koristi za lastUsedDateTime svojstvo u nekom trenutku, jer se čini da primjeri iz 2024. uključuju 7-znamenkasti decimalni razlomak, dok ga noviji izostavljaju. Nije značajna promjena, ali malo iskrivljuje rezultat 🙂
Govoreći o izlazu, ako odlučite postaviti upit lastUsedDateTime putem Graph SDK-a za PowerShell, morate se pozabaviti voljenom blobom AdditionalProperties. Evo primjera:
Get-MgBetaUserAuthenticationMicrosoftAuthenticatorMethod -UserId user@domain.com -Property id,lastUsedDateTime | select id,@n="lastUsedDateTime";e=$_.AdditionalProperties.lastUsedDateTime Id lastUsedDateTime -- ---------------- 8e51d283-acf4-4bf1-a94a-002712e1a55b 2025-10-17T07:23:56Z f7567984-c177-46bd-b8aa-933161652903 2024-03-23T16:43:22.1139067Z
Kao usporedna napomena, ako ipak odlučite dobiti posljednje podatke o korištenju putem cmdleta specifičnih za metodu (ili krajnjih točaka), trebali biste razmotriti načelo najmanje privilegije i koristiti smanjene opsege, tj. UserAuthMethod-MicrosoftAuthApp.Read.All umjesto šireg UserAuthenticationMethod.Read.All jedan.
Podatke naravno možete dobiti i preko roditelja Get-MgBetaUserAuthenticationMethod cmdlet. Međutim, ne zaboravite da naš dragi SDK još uvijek NE podržava rad s ništavan vrijednosti, pa se nemojte iznenaditi ako lastUsedDateTime svojstvo “nedostaje” u izlazu.
Primjer u nastavku trebao bi vam dati raščlambu zadnjih korištenih podataka po metodi za bilo kojeg korisnika:
Get-MgBetaUserAuthenticationMethod -UserId user@domain.com | ? $_.AdditionalProperties.lastUsedDateTime | select Id,@n="Type";e=$_.AdditionalProperties.'@odata.type',@n="lastUsedDateTime";e=$_.AdditionalProperties.lastUsedDateTime
A ako želite dobiti ove podatke skupno za skup korisnika, možete učiniti nešto poput ovoga:
Get-MgUser | % select @n="UserPrincipalName";e=$user.UserPrincipalName,Id,@n="Type";e=$_.AdditionalProperties.'@odata.type',@n="lastUsedDateTime";e=$_.AdditionalProperties.lastUsedDateTime
