Мы используем OAuth 2 с Microsoft Azure Active Directory для единого входа. Когда пользователь выходит из системы, мы передаем его по следующему URL-адресу, в котором мы можем передать параметр запроса post_logout_redirect_uri
:
https://login.microsoftonline.com/<tenant-id>/oauth2/logout?post_logout_redirect_uri=https%3A%2F%2Fexample.com%2F
Когда пользователь пытается войти на наш сайт, если он не аутентифицирован, он перенаправляется на страницу входа в Microsoft, и мы также передаем здесь параметр redirect_uri
(с некоторыми другими не относящимися к делу параметрами запроса).
https://login.microsoftonline.com/<tenant-id>/oauth2/authorize?redirect_uri=https%3A%2F%2Fexample.com%2F
Если пользователь щелкает ссылку «забыли пароль» на странице входа, он может использовать самостоятельный сброс пароля Microsoft для сброса своего пароля, а затем получает ссылку для входа в систему с новым паролем (см. ниже). Нажав на эту ссылку, они вернутся на страницу входа в систему, а после входа в систему они будут перенаправлены обратно на наш сайт.
Однако мы также отправляем пользователям ссылку для прямого доступа к странице сброса пароля:
https://passwordreset.microsoftonline.com
Когда пользователь переходит по этой ссылке и сбрасывает свой пароль, ссылка To sign in with your new password, click here.
не отображается. Есть ли способ передать параметр запроса в этот URL-адрес, аналогичный конечным точкам входа и выхода, чтобы эта ссылка отображалась и перенаправляла на значение, переданное для этого параметра?
Я пытался использовать redirect_uri
и post_reset_redirect_uri
безрезультатно и не смог найти никакой документации по этому поводу.
Изучив процесс сброса пароля и все параметры строки запроса, которые он использует, я смог получить ссылку для To sign in with your new password, click here.
, используя параметр строки запроса ru
Новая ссылка, которую вы должны попробовать
https://passwordreset.microsoftonline.com?ru = {url encoded value for return url}
Пример:
https://passwordreset.microsoftonline.com?ru=https%3A%2F%2Flogin.microsoftonline.com%2F<tenant-id>%2Foauth2%2Fauthorize%3Fredirect_uri%3Dhttps%253A%252F%252Fexample.com%252F%26client_id%3DmyclientGUID%26response_type%3Did_token%26state%3D123456%26nonce%3DGUID
ПРИМЕЧАНИЕ. Закодированное значение URL-адреса, которое я использовал, в основном является тем же URL-адресом и параметрами, которые используются, когда я пытаюсь войти на свой сайт, т. е. беру URL-адрес из браузера, когда вам предоставляется страница входа в Microsoft как часть обычного входа на сайт. . (ничего общего со сбросом пароля). Затем предоставил новый случайный GUID для одноразового номера и другое случайное значение для параметров состояния.
Отказ от ответственности: я не нашел официальной документации для этого. Это скорее пробная версия и обработка HTTP-запросов, созданных с помощью обычного потока сброса пароля.
Ах, я могу оставить сгенерированные Azure параметры отключенными, и это работает! Единственное, что нужно знать моему приложению, генерирующему ссылку, — это идентификатор арендатора и идентификатор клиента, которые являются статическими значениями, которые я могу предоставить ему через файл свойств.
К сожалению, мое приложение не сможет сгенерировать все соответствующие параметры, так как я считаю, что некоторые из них являются токенами oauth и параметрами, которые указывают состояние и т. д. (некоторые из которых, как мне кажется, генерируются самой Azure). Я попытался передать только URL-адрес моего приложения в качестве параметра
ru
, но ссылка не появилась.