Graph API获取密码到期时间

问题描述 投票:0回答:1

几天以来,我一直在努力解决ADAL / MSAL Graph API实现的一个问题,以获取用户密码的有效期。我尝试了以下代码,

var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(ADsettings.AADInstance + ADsettings.Tenant);

var clientCred = new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(ADsettings.AppTokenClientID, ADsettings.ClientSecret);

Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult resulttoken = await authContext.AcquireTokenAsync(ADsettings.ResourceId, clientCred);

但是幸运的是,这没有用,因为返回的带有空值的“ resulttoken.UserInfo”。我还尝试通过开放ID api使用用户信息端点。

https://login.microsoftonline.com/ceppr.onmicrosoft.com/.well-known/openid-configuration

Openid用户信息端点api在下面,

https://login.microsoftonline.com/87268ca1-*************************9cf131cc33ac/openid/userinfo

但是那对我也不起作用。我需要您的帮助以从Azure AD检索密码到期日期。请提供一些意见或解决方案。

c# adal msal
1个回答
0
投票

没有您无法从“ resulttoken.UserInfo”获取密码的到期日期。

首先,您应该无法从令牌中获取用户信息。其次,即使您获得了userinfo,也不会获得密码的到期日期。

我认为我们目前无法通过Microsoft Graph API获得它。

相关信息只能从Powershell获得。

您可以使用Get-MsolUser -UserPrincipalName 'Username' |Select LastPasswordChangeTimestamp获取LastPasswordChangeTimestamp,这表示此Azure AD用户最后一次更改其密码的时间。

然后您需要从密码策略中获取密码有效性:

$PasswordPolicy = Get-MsolPasswordPolicy
$UserPrincipal  = Get-MsolUser -UserPrincipalName 'Username'

$PasswordExpirationDate = $UserPrincipal.LastPasswordChangeTimestamp.AddDays($PasswordPolicy.ValidityPeriod)

您可以参考类似的文章here

© www.soinside.com 2019 - 2024. All rights reserved.