# API авторизации
Чтобы авторизовать пользователя в вашем сервисе с помощью его учетной записи WX Network, перенаправьте пользователя на официальное приложение WX Network (https://wx.network (opens new window)) с приведёнными ниже параметрами запроса, включая некоторые произвольные данные, которые пользователь должен подписать.
Это необходимо для работы с личными данными пользователя, а также чтобы убедиться, что учетная запись из блокчейна принадлежит именно этому пользователю.
# Процесс
Вы размещаете на своём сайте ссылку вида:
https://wx.network#gateway/auth?r=https://example.com&n=ServiceName&d=0123456789abc&i=/img/logo.png&s=/wavesAuth.
где:
r=https://example.com
- URL вашего сервиса.n=ServiceName
- имя вашего сервиса.d=0123456789abc
- данные, подписанные закрытым ключом пользователя.i=/img/logo.png
- путь, к логотипу вашего приложения.s=/wavesAuth
- путь к методу, который перенаправляет пользователя в случае успешной подписи.При переходе по ссылке пользователь будет перенаправлен в официальное приложение WX Network для входа в систему.
При входе в систему пользователь предоставляет вашему сайту доступ к своему адрес, а данные подписываются закрытым ключом пользователя.
Затем пользователь перенаправляется обратно на ваш сайт вместе с подписью и открытым ключом пользователя.
Вы проверяете достоверность подписи, сверяя её с данными, предоставленными пользователю.
Если все сходится, пользователь будет аутентифицирован в вашем сервисе.
# Детали
Из-за ограничений длины строки запроса все параметры выражаются одним символом.
# Запрос
Пример:
https://wx.network#gateway/auth?r=https://example.com&n=ServiceName&d=0123456789abc&i=/img/logo.png&s=/wavesAuth
Основной путь - https://wx.network#gateway/auth
. Далее идут параметры.
# Referrer
r=https://example.com
— URL вашего сервиса. Только HTTPS. Обязательный параметр.
# Name
n=Service%20Name
— имя вашего сервиса. Обязательный параметр.
# Data
d=randomChars
— данные, подписанные закрытым ключом пользователя. Обязательный параметр.
# Icon path
i=/path/to/the/icon.png
— путь относительно параметра Referrer. Содержит логотип вашего приложения. Необязательный параметр.
# Success path
s=/path/to/an/API/method
— путь к методу, который перенаправляет пользователя в случае успешной подписи. По умолчанию пользователь перенаправляется в корень реферера. Необязательный параметр.
# Debug mode
debug=true
— параметр для включения отображения сообщений об ошибках. Необязательный параметр.
# Ответ
Пример:
https://example.com/?s=2w7QKSkxKEUwCVhx2VGrt5YiYVtAdoBZ8KQcxuNjGfN6n4fi1bn7PfPTnmdygZ6d87WhSXF1B9hW2pSmP7HucVbh&p=2M25DqL2W4rGFLCFadgATboS8EPqyWAN3DjH12AH5Kdr&a=3PCAB4sHXgvtu5NPoen6EXR5yaNbvsEA8Fj
# Signature
s=base58EncodedSignature
— подпись данных, подписанных закрытым ключом пользователя.
# Public key
p=base58EncodedPublicKey
— открытый ключ пользователя.
# Address
a=base58EncodedAddress
— WX Network адрес пользователя.
# Как проверить валидность подписей
Подписанные данные состоят из трёх объектов: Prefix string
+ URL host
+ Provided Data
. Подпись берётся из данных в следующем порядке: стока WavesWalletAuthentication
, затем строка со параметрами вашего хоста, затем строка с параметрами ваших данных. Все строки конвертируются в length bytes
+ value bytes
в качестве строки Data Transactions Prefix. Хост нужен в целях безопасности, на случай, если вредоносные сервисы попытаются использовать данные транзакции и подписи из Auth API.
Мы рекомендуем использовать валидацию адреса на случай, если подпись и открытый ключ действительны, но адрес был подменен.
Примеры кода приведены в документации Keeper Wallet API (opens new window).