DotNetOpenAuth: как реализовать простой поставщик OpenId? - PullRequest
5 голосов
/ 24 августа 2010

У каждого провайдера OpenId есть URL-адрес провайдера (например, Google: https://www.google.com/accounts/o8/id)

Использование OpenIdRelyingParty.CreateRequest Мне удалось перенаправить пользователя на URL-адрес провайдера Google и получить обратный вызов провайдера. Все работало нормально.

Сейчас я пытаюсь реализовать свой собственный простой поставщик OpenId (я хочу выступить в качестве Google на моем примере). DotNetOpenAuth имеет демонстрационную версию поставщика под названием OpenIdProviderWebForms. Последние 4 или 5 часов я пытался подключиться к нему, используя ту же демонстрацию, которую мне удалось подключить в Google. Во-первых: мне не понятно, по какому URL мне звонить. Я перепробовал все URL-адреса (server.aspx, provider.ashx ...), и все они вызывают исключение «Конечная точка OpenID не найдена». Все конфигурации, кажется, просто отлично.

Как реализовать простой поставщик OpenId? Какой URL я должен позвонить в OpenRelyingParty.CreateRequest?

Ответы [ 2 ]

16 голосов
/ 25 августа 2010

Сначала давайте установим несколько терминов:

User-supplied identifier - это строка, в которую пользователь фактически вводит (или запускается нажатием предопределенной кнопки на RP), которая запускает обнаружение OpenID.Он не нормализован и никогда не должен использоваться для представления пользователя в вашей базе данных, поскольку он не является безопасным или уникальным, но является необходимой отправной точкой.Обнаружение по этому идентификатору дает либо claimed identifier, либо OP Identifier.Примеры: yahoo.com, myopenid.com и andrewarnott.myopenid.com

Claimed Identifier - это идентификатор OpenID, который пользователь «контролирует» или использует в качестве своей личности.Это может быть или может не быть URL (это может быть XRI).Положительное утверждение от OP всегда будет заявленным идентификатором (даже если обнаружение началось с идентификатора OP).Примеры: https://andrewarnott.myopenid.com/

OP Identifier, или «Идентификатор поставщика OpenID» - это идентификатор OpenID, для которого RP может выполнить обнаружение, чтобы начать поток identifier select, где RP еще не знает, что заявлено пользователемИдентификатор будет.Примеры: https://me.yahoo.com/, http://www.myopenid.com/ и https://www.google.com/accounts/o8/id

OP Endpoint - это фактический URL-адрес, на который RP перенаправляет пользователя для аутентификации пользователя, и используется дляустановить общие ассоциации или выполнить прямую проверку утверждения, которое использует частную ассоциацию OP.Примеры: http://localhost/server.aspx, http://localhost/provider.ashx, https://www.google.com/accounts/o8/ud (обратите внимание на окончание ud вместо id)

Так что со всем этим фоном ваш OpenIdRelyingParty.CreateRequest вызов должен получить пользователяидентификатор, который также может быть заявленным идентификатором или идентификатором OP.Он должен , а не быть конечной точкой OP.Например, вы можете указать:

openIdRelyingParty.CreateRequest("http://localhost/sampleop/")

или

openIdRelyingParty.CreateRequest("http://localhost/user.aspx?username=bob")
2 голосов
/ 10 сентября 2013

Для примеров DotNetOpenAuth MVC URL идентификатора Open Id для использования равен http://localhost:4864/User/Identity (где OpenIdProviderMvc настроен для работы на порту 4864 на локальном хосте)

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