Я потратил большую часть дня, пытаясь понять, как работает 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/ для справки.