The expired password changing procedure breaks an administrator's account page in Magento 2.2 (and my workaround)

When a backend password it expired, Magento forces the administrator to change it and shows the message: «It’s time to change your password.».
But at the same time Magento 2.2 failed to properly load the administator’s account page and shows the message «Something went wrong.».
So, the Magento 2.2. backend is totally locked: Magento forbids the administrator to use the backend without the expired password changing, but the administrator is unable to change its password because its account form is not properly loaded.

Step 1.

In accordance with the generic article: How to diagnose a «Something went wrong.» failure? I have set breakpoints and found that the error message is generated here:


Step 2.

The error message is generated a s a response to the following request:


The request tries to access the following location via AJAX:

https://<my domain>/<my admin path>/mui/index/render/?namespace=notification_area&sorting%5Bfield%5D=created_at&sorting%5Bdirection%5D=asc&isAjax=true

It looks like the request location is wrong, because the server responds with the current page’s HTML, and then the jQuery code raises the error, because it expects the resonse to be a JSON, not HTML.

Step 3.

Obviously, the Magento_Ui/js/grid/provider should not be loaded on an administrator’s account page at all, because there are no grids on an administrator’s account page.

Step 4.

It looks like the problem is caused by the Magento_AdminNotification module: it tries to load its grid (with the backend notifications) on an administrator’s account page, and it is wrong.

This notification_area UI component is absent in the Magento 2.1.x, it is new to Magento 2.2, and it looks like it is incorrect.

The notification_area UI component was added on 2017-04-09 by the following commit:

Step 4.

The notification_area UI component is loaded to the page in Magento 2.2 by the following layout rules:

As the layout file is named default.xml, it is applied to the all backend pages.

It Magento 2.1.x the file is different:

My workaround:

The shortest way is:

bin/magento config:set admin/security/password_lifetime 0 && \
bin/magento cache:clean