Как использовать OpenID, не спрашивая у пользователя его OpenID URL? - PullRequest
4 голосов
/ 17 января 2012

Я настраиваю провайдера OpenID с помощью DotNetOpenAuth, и я застрял.

Похоже, что OpenID требует, чтобы пользователь сначала указал свой OpenID URL, а затем потребитель перенаправил бы его к поставщику, указав URL в качестве параметра (режим checkid_setup).

Но с Google, и некоторыми другими провайдерами, это работает по-другому. Вы просто будете перенаправлены на общую страницу, на которой вы либо войдете в систему, либо выберете одну из учетных записей, в которую вы уже вошли. Или просто перенаправлен обратно, если вы вошли в систему с одной учетной записью.

Это как-то связано с режимом checkid_immediate? Если да, дайте мне ссылку на статью, объясняющую, как это работает.

1 Ответ

4 голосов
/ 17 января 2012

Различие в поведении, которое вы видите, ортогонально к режимам checkid_setup и checkid_immediate, которые вы заметили.

Если пользователь вводит свой собственный OpenID, он называется Заявленный идентификатор . Если вместо этого пользователь просто щелкает (или вводит) своего провайдера (например, Google в вашем примере), это называется OP Identifier .

Например, если вы введете https://www.google.com/accounts/o8/id в поле OpenID, вы увидите описываемое вами поведение, в котором Google поможет пользователю войти на ваш веб-сайт, кем бы он ни был.

Итак, на данный момент у вас есть несколько вариантов:

  1. Если ваш сайт основан на веб-формах ASP.NET, вы можете использовать элемент управления OpenIdButton, введя идентификатор https://www.google.com/accounts/o8/id в соответствующее свойство, а затем пользователь может нажать эту кнопку, чтобы просто войти в систему. в использовании своей учетной записи Google.

  2. Если вы используете MVC (или используете веб-формы, но хотите сделать это программно), вы можете позвонить OpenIdRelyingParty.CreateRequest("https://www.google.com/accounts/o8/id") и перенаправить пользователя с результатом в Google.

В любом случае, если пользователь уже вошел в Google, ему не нужно будет входить в Google. И если пользователь уже сказал Google, что он одобряет вход на ваш веб-сайт, то он вообще не увидит Google во время этого процесса входа.

...