Проблема с использованием DotNetOpenId со Службами Google - PullRequest
0 голосов
/ 11 октября 2011

Я нахожусь в критической ситуации, так как мы должны интегрировать поддержку Служб Google в наше приложение, которое находится в среде .Net 2.0.Поэтому для этого я использую DotNetOpenId v2.5.7.Ранее, чтобы достичь этого, мы создали отдельное приложение в платформе 4.0 с использованием DotNetOpenAuth v3.4.6, которое будет выполнять аутентификацию с помощью Google Apps и перенаправлять данные обратно со всей информацией.Но у этого процесса были дыры в петлях безопасности.Поэтому теперь мы обязаны использовать DotNetOpenId, поскольку наше приложение не может быть перенесено на более высокую платформу.

Основная проблема заключается в использовании его со Службами Google.Он отлично работает для учетных записей Gmail, у которых конечная точка OpenId имеет вид https://www.google.com/accounts/o8/ud. Однако, когда конечная точка OpenId выглядит примерно так https://www.google.com/a/example.com/o8/ud?be=o8, возникает ошибка подтверждения.Приложение правильно перенаправляет пользователя на страницу входа в Google Apps.Но когда он возвращается с данными, статус аутентификации не пройден, и в нем есть исключение:

Message: The OpenId Provider issued an assertion for an Identifier whose discovery information did not match.

Assertion endpoint info: 
ClaimedIdentifier: http://example.com/openid?id=11......010 
ProviderLocalIdentifier: http://example.com/openid?id=11......010 
ProviderEndpoint: https://www.google.com/a/example.com/o8/ud?be=o8 
OpenID version: 2.0 
Service Type URIs: (unavailable) 

Discovered endpoint info: 
{ClaimedIdentifier: http://specs.openid.net/auth/2.0/identifier_select 
ProviderLocalIdentifier: http://specs.openid.net/auth/2.0/identifier_select 
ProviderEndpoint: https://www.google.com/a/example.com/o8/ud?be=o8 
OpenID version: 2.0 
Service Type URIs: http://specs.openid.net/auth/2.0/server, }

Я поместил файл XRDS, который загружается по этому адресу http://example.com/openid, в котором есть данныеследующим образом

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
    <XRD>
        <Service priority="0">
            <Type>http://specs.openid.net/auth/2.0/server</Type>
            <URI>https://www.google.com/a/example.com/o8/ud?be=o8</URI>
        </Service>
        <Service priority="10">
            <Type>http://specs.openid.net/auth/2.0/signon</Type>
            <URI>https://www.google.com/a/example.com/o8/ud?be=o8</URI>
        </Service>
    </XRD>
</xrds:XRDS>

Но это тоже не помогло.

Я также поместил файл в папку http://example.com/.well-known/host-meta с таким содержанием:

Link: <https://www.google.com/accounts/o8/site-xrds?hd=example.com>; rel="describedby http://reltype.google.com/openid/xrd-op"; type="application/xrds+xml"

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

1 Ответ

0 голосов
/ 11 октября 2011

Вы правы в том, что DotNetOpenId v2.x предназначен для .NET 2.0. Он не может войти в систему пользователей через их OpenID Google Apps, потому что Google Apps не следуют протоколу OpenID, а скорее его собственному варианту от Google.

DotNetOpenAuth v3.x является подключаемым способом, который позволяет Google Apps работать, активируя поддержку их варианта OpenID.

Я думаю, что вам больше всего поможет знание того, что DotNetOpenAuth не требует .NET 4.0. Просто установите .NET 3.5, который является незначительным обновлением на месте для .NET 2.0. Ваши веб-сайты должны продолжать нормально функционировать, но DotNetOpenAuth v3.x будет работать на нем.

...