Если вы можете создать нового пользователя со случайным паролем, используя API-интерфейс Azure AD Graph , а не с помощью портала Azure, то вы можете реализовать пользовательскую политику, которая инструктирует нового пользователя сбрасывать случайное числопароль.
Для реализации этого необходимо создать пользовательский атрибут , например, ForceChangePasswordNextSignIn , установить этот пользовательский атрибут для нового пользователя на true
, а затем протестироватьнастраиваемый атрибут во время входа в систему, как показано ниже.
Чтобы задать для настраиваемого атрибута для нового пользователя значение true
:
{
"accountEnabled": true,
"creationType": "LocalAccount",
"displayName": "Alex Wu",
"passwordProfile": {
"password": "Test1234",
"forceChangePasswordNextLogin": false
},
"signInNames": [
{
"type": "emailAddress",
"value": "AlexW@example.com"
}
],
"extension_<b2cExtensionApplicationObjectIdWithoutHyphens>_ForceChangePasswordNextSignIn": true
}
Для проверки настраиваемого атрибута во время знака-в потоке:
- Объявите тип заявки, представляющий пользовательский атрибут.
<ClaimType Id="extension_ForceChangePasswordNextSignIn">
<DisplayName>Force Change Password Next Sign-In</DisplayName>
<DataType>boolean</DataType>
</ClaimType>
Объявление
и AssertBooleanClaimIsEqualToValue преобразование утверждений , чтобы гарантировать, что для пользовательского атрибута не установлено значение
true
(т. Е. Новому пользователю не нужно сбрасывать на случайный пароль).
<ClaimsTransformation Id="EnsureForceChangePasswordNextSignInIsFalse" TransformationMethod="AssertBooleanClaimIsEqualToValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_ForceChangePasswordNextSignIn" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="valueToCompareTo" DataType="boolean" Value="false" />
</InputParameters>
</ClaimsTransformation>
Вызывает
EnsureForceChangePasswordNextSignInIsFalse запрашивает преобразования из копии технического профиля
AAD-UserReadUsingEmailAddress , чтобы проверить, что настраиваемый атрибут не установлен в
true
.
<TechnicalProfile Id="AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse">
...
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames" Required="true" />
</InputClaims>
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="extension_ForceChangePasswordNextSignIn" />
</OutputClaims>
<OutputClaimsTransformations>
...
<OutputClaimsTransformation ReferenceId="EnsureForceChangePasswordNextSignInIsFalse" />
</OutputClaimsTransformations>
</TechnicalProfile>
Вызвать
AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse из технического профиля
SelfAsserted-LocalAccountSignin-Email , чтобы показать сообщение об ошибке, если для пользовательского атрибута установлено значение
true
(новый пользователь должен сбросить случайный пароль).
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
...
<Metadata>
...
<Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Whoops, you have to change your admin-created password, so please click 'Forgot your password?'.</Item>
</Metadata>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingSignInName-EnsureForceChangePasswordNextSignInIsFalse" />
<ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
</ValidationTechnicalProfiles>
...
</TechnicalProfile>