График API для получения срока действия пароля - PullRequest
0 голосов
/ 26 марта 2020

В течение нескольких дней я боролся с одной проблемой, связанной с реализацией 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" был возвращен с нулевым значением. Я также пытался использовать конечную точку информации о пользователе через open id apis.

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

Openid Конечная точка информации о пользователе ниже,

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

, но это также не сработало для меня , Мне нужна ваша помощь, чтобы получить дату истечения срока действия пароля от Azure AD. Пожалуйста, предоставьте некоторую информацию или решение.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете рассмотреть возможность использования следующего вызова API Graph;

Запрос: GET https://graph.microsoft.com/beta/users/ {userPrincipalName}? $ Select = displayName, lastPasswordChangeDateTime

Ответ:

{

    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(displayName,lastPasswordChangeDateTime)/$entity",

    "displayName": "User 1",

    "lastPasswordChangeDateTime": "2017-11-09T07:29:09Z"

}

Подробную информацию об этом можно найти здесь.

Надеюсь, это поможет.

0 голосов
/ 27 марта 2020

Нет. Вы не можете получить дату истечения срока действия пароля из "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)

Вы можете сослаться на аналогичный пост здесь .

...