У меня есть требование передавать данные из JavaScript, работающего в закрытой / защищенной среде (т.е. не публичной), на страницу ASP.NET на общедоступном веб-сайте. Метод, который я сейчас пробую, выглядит примерно так:
Javascript (вкл. Sha256.js):
var key = "myVeryLongAndUnguessableKey&#^@23981238#&#&!*";
var nonce = "<randomly generated value>";
var expiry = new Date().getTime();
var data_to_pass = "name1=value1&name2=value2&name3=value3";
var concatStr = key + nonce + expiry + data_to_pass;
var hashed = sha256_digest(concatStr);
var requestURL = "http://myPublicServer/myscript.aspx?" + data_to_pass +
"&nonce=" + nonce + "&expiry=" + expiry + "&checksum=" + hashed;
//do redirect to requestURL
На стороне C # я затем беру параметры строки запроса, разделяю одноразовый номер, срок действия и контрольную сумму, добавляю локальное значение ключа, перефразирую его и проверяю совпадение контрольной суммы и нового хэша. Если он совпадает, то я могу взять и использовать пары имя / значение «data_to_pass».
Это работает и выглядит довольно безопасно.
Мой босс просит, чтобы я проверил OAuth и, возможно, использовал его вместо этого, но я не могу понять, подходит ли OAuth для того, что я хочу сделать.
OAuth.net определяет OAuth как:
OAuth предоставляет пользователям способ предоставлять сторонним пользователям доступ к своим ресурсам без совместного использования их паролей. Он также предоставляет способ предоставления ограниченного доступа (по объему, продолжительности и т. Д.).
Я не собираюсь предоставлять доступ кому-либо или чему-либо, а скорее передавать данные относительно безопасным способом (настолько безопасным, насколько может быть JavaScript).
Я что-то упускаю из OAuth? Может ли это быть использовано для того, что я хочу сделать, и если да, то какие-нибудь статьи или примеры, которые могут помочь мне обернуть это вокруг?
Как всегда, большое спасибо - Это сообщество качается!
Кевин