Расширение OpenID PAPE (в DotNetOpenAuth это называется PolicyRequest) позволяет RP запрашивать , что OP повторно аутентифицирует пользователя. Но в конечном итоге нет способа заставить его. Вот как вы отправляете запрос:
var pape = new PolicyRequest();
pape.MaximumAuthenticationAge = TimeSpan.Zero;
request.AddExtension(pape);
request.RedirectToProvider();
Если OP поддерживает вышеупомянутый запрос, они обычно включают ответ PAPE, который вы можете получить и проверить следующим образом:
var papeResponse = response.GetExtension<PolicyResponse>();
if (papeResponse != null && papeResponse.AuthenticationTimeUtc.HasValue && (DateTime.UtcNow - papeResponse.AuthenticationTimeUtc.Value) < TimeSpan.FromMinutes(1)) {
// Probably re-authenticated the user
}
Возможно, вам придется немного отрегулировать вышеупомянутую проверку. Также имейте в виду, что ОП может лгать об этом. Таким образом, если существует юридическое или другое существенное требование, чтобы OP повторно аутентифицировали пользователя, у вас должен быть деловой контракт с этим OP, настроенный для обеспечения такой гарантии - PAPE сам по себе означает очень мало. И большинство ОП не поддерживают это.