Механизм сброса пароля#

При необходимости, администраторы IDMX могут подключить функциональность сброса пароля учетной карточки для доступа пользователей в UI IDMX. Для этого следует:

  1. Добавьте в основую используемую Security Policy (которая указана как активная в файле системной конфигурации IDMX) следующий блок:

    <securityPolicy>
        ...
        <authentication>
            <modules>
                <!-- стандартные модули (loginForm и т.д.) тут пропущены -->
                <mailNonce>
                    <identifier>mailNonce</identifier>
                    <credentialName>mailNonce</credentialName>
                </mailNonce>
                <focusIdentification>
                    <identifier>userName</identifier>
                    <item>
                        <path>name</path>
                        <matchingRule>polyStringNorm</matchingRule>
                    </item>
                </focusIdentification>
                <hint>
                    <identifier>passwordHint</identifier>
                </hint>
            </modules>
            <!-- стандартные sequences (admin-gui-default и т.д.) тут пропущены  -->
            <sequence>
                <identifier>password-reset</identifier>
                <channel>
                    <channelId>http://midpoint.evolveum.com/xml/ns/public/common/channels-3#resetPassword</channelId>
                    <urlSuffix>resetPassword</urlSuffix>
                </channel>
                <module>
                    <identifier>userName</identifier>
                    <order>10</order>
                    <necessity>requisite</necessity>
                </module>
                <module>
                    <identifier>passwordHint</identifier>
                    <order>20</order>
                    <necessity>optional</necessity>
                    <acceptEmpty>true</acceptEmpty>
                </module>
                <module>
                    <identifier>mailNonce</identifier>
                    <order>30</order>
                    <necessity>required</necessity>
                </module>
            </sequence>
            <!-- ... -->
        </authentication>
        <credentials>
        <!-- значения для password credentials тут пропущены  -->
            <nonce>
                <name>mailNonce</name>
                <maxAge>PT24H</maxAge>
                <lockoutMaxFailedAttempts>3</lockoutMaxFailedAttempts>
                <lockoutFailedAttemptsDuration>PT3M</lockoutFailedAttemptsDuration>
                <lockoutDuration>PT15M</lockoutDuration>
            </nonce>
        </credentials>
        <credentialsReset>
            <identifier>global-credentials-reset</identifier>
            <authenticationSequenceName>password-reset</authenticationSequenceName>
        </credentialsReset>
    ...
    </securityPolicy>
    
  2. Добавьте в System Configuration (или файл системной конфигурации) следующие блоки:

    <systemConfiguration>
        <!-- ... -->
        <notificationConfiguration>
            <handler>
                <passwordResetNotifier>
                    <recipientExpression>
                        <script>
                            <code>requestee.emailAddress</code>
                        </script>
                    </recipientExpression>
                    <bodyExpression>
                        <script>
                            <code>
                                import com.evolveum.midpoint.notifications.api.events.ModelEvent
                                import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType
    
                                def user = (event as ModelEvent).focusContext.objectNew?.asObjectable() as UserType
                                def link = midpoint.createPasswordResetLink(user)
    
                                "Did you request password reset? If yes, click on the link below:\n\n$link\n"
                            </code>
                        </script>
                    </bodyExpression>
                    <transport>mail</transport>
                </passwordResetNotifier>
            </handler>
            <mail>
                <logToFile>/app/idmx-engine/var/log/mail.log</logToFile>
                <server>
                    <host>MAIL_SERVER_HOSTNAME</host>
                    <port>25</port>
                    <username>DOMAIN\USER_NAME</username>
                    <password>
                        <t:clearValue>PASSWORD</t:clearValue>
                    </password>
                </server>
            </mail>
        </notificationConfiguration>
        <infrastructure>
            <publicHttpUrlPattern>http://$host/midpoint</publicHttpUrlPattern>
            <!--  Изменить URL на котором доступен URL UI вашего  -->
        </infrastructure>
        <!-- ... -->
    </systemConfiguration>
    
  3. Убедитесь, что у всех пользователей указан почтовый ящик в учетной карточке.

После выполнения инструкции в окне аутентификации UI IDMX появится пункт Сброс пароля. Чтобы сбросить пароль:

  1. Нажмите на кнопку Сброс пароля.

  2. Введите логин пользователя в открывшейся форме.

  3. На почтовый ящик, указанный в учетной карточке пользователя, будет отправлена одноразовая ссылка для сброса пароля.

  4. Перейдите по одноразовой ссылке и введите новый пароль с подтверждением.