В соответствии с кодом и делами, которые вы публикуете ранее, я думаю, что это не о Azure ad b2 c, поэтому здесь я дам ответ для azure ad.
Когда вы запросить код авторизации, есть свойство prompt=login
, которое указывает , что пользователю необходимо предложить повторно подтвердить подлинность .
Также здесь есть статья о Принудительная повторная проверка подлинности с Azure AD , которые предлагают использовать Token Max Age для его достижения.
Вы можете добавить max_age = к URL авторизации (или просто поставить 0 для принудительной аутентификации по паролю в любое время). Поэтому, как только пользователь будет перенаправлен на URL, ему будет представлена информация для повторного входа в систему.
public class RequireReauthenticationAttribute : Attribute, IAsyncResourceFilter
{
private int _timeElapsedSinceLast;
public RequireReauthenticationAttribute(int timeElapsedSinceLast)
{
_timeElapsedSinceLast = timeElapsedSinceLast;
}
public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
{
var foundAuthTime = int.TryParse(context.HttpContext.User.FindFirst(AppClaimTypes.AuthTime)?.Value, out int authTime);
if (foundAuthTime && DateTime.UtcNow.ToUnixTimestamp() - authTime < _timeElapsedSinceLast)
{
await next();
}
else
{
var state = new Dictionary<string, string> { { "reauthenticate", "true" } };
await context.HttpContext.Authentication.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties(state)
{
RedirectUri = context.HttpContext.Request.Path
}, ChallengeBehavior.Unauthorized);
}
}
}