DotNetOpenId ClaimedIdentifier - Безопасно ли это жестко кодировать? - PullRequest
2 голосов
/ 13 апреля 2009

Я пытаюсь использовать OpenID, чтобы позволить мне войти на мой сайт через Google. В конце концов, он будет использоваться посетителями, но сейчас он просто жестко задан как Google, чтобы проверять только мой собственный логин.

Мой код выглядит так:

var openId = new OpenIdRelyingParty();

// If we have no response, start
if (openId.Response == null)
{
    // Create a request and send the user off
    openId.CreateRequest("https://www.google.com/accounts/o8/id").RedirectToProvider();
}
else
{
    // We got a response - check it's valid
    if (openId.Response.Status == AuthenticationStatus.Authenticated
        && openId.Response.ClaimedIdentifier == "blah_blah")
    {
    }
}

Теперь у меня есть несколько вопросов:

  1. Безопасно ли запускать его один раз, захватить ClaimedIdentifier и поместить его туда. Всегда ли это будет одинаково?

  2. Безопасно ли там жестко закодировать его (это секрет? Если пользователь видел это, будет ли это что-либо компрометировать? Может ли пользователь подделать это? Может ли только Google вызывать ClaimedIdentifiers, начинающийся с их URL?)

Я пробовал документы, но они немного скудны, и мне трудно найти ответы на эти вопросы.

** Редактировать: ** Возможно, я ответил на свой вопрос. Я использовал мета-тег на своем веб-сайте (openid.delegate), чтобы я мог использовать URL своего блога вместо неприятного URL-адреса Google для входа в систему. Когда я вхожу через Google, он возвращает ClaimedIdentifier в качестве URL-адреса моего блога. Это заставляет меня думать, что кто-нибудь может перейти на мою страницу входа в систему, используя свою учетную запись Google, и он вернет их в мой блог с моим собственным ClaimedIdentifier.

  1. Как я могу проверить пользователя, когда ClaimedIdentifier кажется так легко подделать?

Ответы [ 2 ]

4 голосов
/ 14 апреля 2009

Да, хранение заявленного идентификатора является безопасным, и это значение не является секретным, поэтому это не будет компромиссом в плане безопасности, если этот код с указанным здесь значением требуемым_идеем утек.

Да, оно всегда должно быть одинаковым, иначе пользователи не смогут восстановить доступ к созданным учетным записям. При этом Google уникален тем, что если URL-адрес Realm когда-либо изменится для вашего веб-сайта, Google начнет отправлять все новые утвержденные идентификаторы на ваш сайт. До тех пор, пока царство остается постоянным, будет и требуемый_ид. Поскольку вы используете DotNetOpenId, областью по умолчанию является просто корневой URL вашего веб-сайта, поэтому он, вероятно, останется постоянным, если вы не измените URL-адрес вашего сайта.

Как вы уже определили, требуемый_ид не может быть так легко подделан. Если это так, то OpenID действительно бесполезен.

1 голос
/ 13 апреля 2009

После долгих раздумий (и когда друг пытается войти под своим именем), я думаю, что у меня есть ответ ...

Тег на моем веб-сайте включает в себя мое имя пользователя Google, и если я пытаюсь войти в систему под другим именем для запроса, используя URL-адрес моего блога, это может привести к сбою (в Google не отправляет меня обратно на веб-сайт, на который я входил, вместо того, чтобы отослать меня обратно как провал).

Это заставляет меня думать, что возвращение моего собственного URL в качестве ClaimedIdentity является безопасным, не может быть подделано и т. Д. И т. Д.

...