Большую часть дня я провел, пытаясь понять, как работает OpenID.Моя цель - создать простой сайт, на котором после нажатия кнопки входа в систему пользователи попадают на страницу входа в Steam, где им предлагается ввести имя пользователя и пароль.После успешного входа в систему пользователь перенаправляется на страницу в моем домене, где я собираю параметры строки запроса.Они выглядят так:
{
"openid.ns": "http://specs.openid.net/auth/2.0",
"openid.mode": "id_res",
"openid.op_endpoint": "https://steamcommunity.com/openid/login",
"openid.claimed_id": "https://steamcommunity.com/openid/id/7656119[0000000000]",
"openid.identity": "https://steamcommunity.com/openid/id/7656119[0000000000]",
"openid.return_to": "http://127.0.0.1:8000/resolve",
"openid.response_nonce": "2018-12-01T14:49:46Z30hhn2/[someTEXTendingIN=]",
"openid.assoc_handle": "1234567890",
"openid.signed": "signed,op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle",
"openid.sig": "[someTEXTandNUMBERSendingIN=]"
}
Что я не могу решить, так это фактическую проблему аутентификации.Я не уверен, что делать с этими данными.Я хочу иметь свою собственную базу данных, в которой я храню дополнительную информацию о пользователе, такую как друзья, сообщения, валюта и т. Д. Для этого очень важно убедиться, что кто-то не просто принял это тело запроса, изменил его идентификатордля другого и таким образом получить доступ к их учетной записи.
Я почти уверен, это соответствующие документы, но мне все еще не ясно.Как я должен аутентифицировать пользователя с этими данными?
В этом посте я опустил некоторые значения, которыми, боюсь, было бы плохо поделиться.Эти заполнители были выделены скобками []
.Кроме того, assoc_handle
на самом деле 1234567890
, что меня отталкивает, поскольку, согласно документации OpenID, оно используется для определения подписи.
Для ясности: эта страница, где собираются учетные данныене управляется мной, но является официальной страницей входа в OpenID для Steam.Steam - игровая платформа.https://steamcommunity.com/dev/ для справки.