Аутентифицированы на двух отдельных сайтах с одним логином (и с использованием IFrame). Возможный? - PullRequest
1 голос
/ 03 октября 2009

В настоящее время создаем сайт в ASP.NET MVC и приходится интегрировать в него другой сайт в IFrame. Клиент желает иметь один логин для обеих систем, поэтому пользователь входит в систему на родительском сайте, а затем автоматически проходит аутентификацию на сайте IFramed. Конечно, если бы это было возможно, то можно предположить, что оба набора учетных данных были одинаковыми. Так что, в любом случае это легко сделать?

Стоит отметить, что мы не имеем никакого реального контроля над сайтом IFramed. Это в основном сайт, который наши клиенты предоставляют своим клиентам для обработки платежей.

Заранее спасибо!

1 Ответ

2 голосов
/ 03 октября 2009

(Полагаю, OpenID или WS * -Federation не может быть и речи?)

Если учетные данные совпадают, не могли бы вы просто отправить учетные данные в iframe перед отправкой собственной формы входа?

Или, если вы хотите сначала проверить учетные данные, а затем отправить их на свой сервер, установите флажок и верните их обратно клиенту в виде фрагмента JavaScript, который затем выполняет аутентификацию iframe. (Но учтите, что вы отправите учетные данные обратно клиенту как javascript .)

Пример, который может работать на вас:

Скажите, что ваш логин Url http://yourdomain/login, и вам также нужно войти в систему http://thirdparty/login

yourdomain / login хочет две переменные записи "username" и "pwd", тогда как thirdparty / login хочет "uname" и "password".

Попробуйте включить jQuery в свой проект (есть способы сделать это в javascript отдельно, но вам придется проверить, что jQuery делает в фоновом режиме - но я настоятельно рекомендую не изобретать колесо, если у вас нет к).

// this is the jQuery startup function, called once the page is loaded
$(function()
{
    // register an event for the form submit
    $("form[@action*='login']").submit(function(event){  
        // get username and pwd from the form
        var _user = $("#username").val();
        var _password = $("#pwd").val();

        // and submit to the second login page
        $.post("http://thirdparty/login", { user: _user, password: _password } );

        // once the method returns and you don't do return false then the login form     will be submitted as usual.
    });  

});

Здесь может быть одна проблема, заключающаяся в том, что вы публикуете URL-адрес, отличный от сервера, который обслуживал страницу. Это может быть недопустимо, но вы можете обойти это, отправив действие post оригинальной страницы входа на страницу третьей стороны и войдите в свою систему, используя приведенный выше код.

Ссылка: JQuery Post: http://docs.jquery.com/Ajax/jQuery.post Отправка формы перехвата JQuery: http://blog.james -carr.org / 2008/01/17 / jquery-binding-submit-on-a-forms-action-attribute /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...