DotNetOpenAuth запросить логин у провайдера - PullRequest
1 голос
/ 22 марта 2011

Как я могу заставить пользователя войти в свой провайдер, прежде чем он будет перенаправлен обратно (добавив свое имя пользователя и пароль у провайдера, на которого он перенаправлен)?

Потому что теперь, если пользователь уже вошел в свою учетную запись Google, скажем, dotnetopenauth автоматически связывает его с этой учетной записью.

Есть ли в dotnetauth свойство, которое заставляет пользователя снова входить в свой провайдер, прежде чем перенаправить обратно?

1 Ответ

2 голосов
/ 26 марта 2011

Расширение 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 сам по себе означает очень мало. И большинство ОП не поддерживают это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...