В ASP.Net вы обычно позволяете промежуточному программному обеспечению для проверки подлинности файлов cookie это обрабатывать, т.е. если вы делаете HttpContext.SignOut("...my cookie scheme...")
или срок действия файла cookie истекает, то следующий запрос к защищенному действию будет автоматически перенаправляться на URL-адрес входа в систему, связанный с этой схемой. .
Стоит также отметить, что намерение OpenID Connect состоит в том, чтобы вы выровняли время жизни файла cookie сеанса / аутентификации вашего клиентского веб-приложения с временем сеанса IDP, а НЕ со временем жизни access_token, который обычно был бы намного короче. (и обновляется в режиме без вывода сообщений с использованием токена обновления в серверном приложении, подобном этому).
Ознакомьтесь с дополнительной спецификацией управления сеансом здесь:
https://openid.net/specs/openid-connect-session-1_0.html
Вы, конечно, можете сами определять, как часто конечный пользователь вашего клиента должен проходить аутентификацию. Вы можете использовать аргументы max_age
или prompt=login
авторизации конечной точки для принудительной интерактивной аутентификации, а затем проверить утверждение auth_time
в клиентском приложении, чтобы убедиться, что пользователь действительно недавно прошел аутентификацию.
Для передачи дополнительных параметров с использованием обычного промежуточного программного обеспечения .Net Core 1.1 это может выглядеть следующим образом (2.x может немного отличаться):
//Initialising OpenIdConnectEvents...
OnRedirectToIdentityProvider = context => {
//context.Properties is of type AuthenticationProperties which can be passed via the Challenge() method.
if(context.Properties.Items.ContainsKey("prompt"))
context.ProtocolMessage.Prompt = context.Properties.Items["prompt"];
}