Muthu Karunarathna Ответов: 1

Доступ к междоменным сайтам единого входа с помощью .NET


Допустим, у меня есть два веб-сайта, которые живут на разных доменах, и они были аутентифицированы с помощью единого входа. Я вхожу на первый сайт и аутентифицируюсь, а теперь решаю посетить второй сайт, используя ссылку, видимую на 1-м сайте. Эта ссылка перенаправляет на второй сайт, и никаких учетных данных не требуется. (Обратите внимание, что эти веб-сайты разработаны и размещены какой-то другой компанией, и у меня нет доступа к исходному коду. У меня есть один логин, и я ожидаю получить доступ к данным страницы второго веб-сайта)

Что я уже пробовал:

Я хочу получить доступ к веб-сайтам с помощью кода .net. Я проделал некоторую работу и дошел до доступа к ссылке первого веб-сайта, используя HTTP-запросы и файлы cookie, которые перенаправляют на второй веб-сайт. Но вскоре после того, как я нажал на ссылку, он открыл домен 2 на новой вкладке браузера и также генерирует новый идентификатор сеанса. Он не имеет никакой связи с первым файлом cookie веб-сайта. Но я могу получить доступ к данным веб-сайта 2, Когда я передаю URL-адрес и текущий идентификатор сеанса веб-сайта 2 вручную.

Существует ли какой-либо механизм безопасности за логином SSO, который можно взломать, чтобы получить доступ к общему идентификатору сеанса как для веб-сайта 1, так и для веб-сайта 2?Как я могу найти связь между двумя доменами, когда у них есть два идентификатора сеанса? Я не могу разместить коды здесь, так как они содержат некоторую личную информацию моего клиента.

Nathan Minier

Ооочень ... передайте идентификатор сеанса как часть ссылки.

В чем проблема?

Muthu Karunarathna

идентификатор сеанса меняется с 1-го домена на 2-й.и нет никакой связи между файлами cookie между двумя доменами. Если я начну первый запрос с 1-го домена, у меня должно быть правильное соединение между файлами cookie, чтобы идти дальше. Но в промежутке оно теряется. Это работает, если я передаю идентификатор сеанса вручную. Но это не то, чего я хочу.

Nathan Minier

Если вы заходите на эти сайты с .Сетевой код, вы создаете и отправляете HTTP-пакеты (предположительно с помощью System.Net.Http.HttpClient). Это означает, что вы можете создавать заголовки во время выполнения.

Это означает, что ваша система может присвоить ID сессии для второго сайта....во время выполнения.

Опять же, я не понимаю, в чем дело.

Muthu Karunarathna

Пожалуйста, обратитесь по этой ссылке. Я опубликовал его на форуме .net, и он, возможно, ясно объясняет проблему.
http://forums.asp.net/p/2104102/6082102.aspx?Re+Access+the+cross+domain+single+sign+on+websites+using+net

1 Ответов

Рейтинг:
11

Muthu Karunarathna

Я решил проблему. Был запрос SAML и состояние ретрансляции, которые были отправлены на сервер входа из обоих доменов. Даже если они не идентичны, мы должны учитывать их при доступе к данным формы. Кроме того, с помощью файлов cookie я должен был отправлять pls_login_cookietime специально от самого первого запроса до последнего запроса.

Экс:

var cookie =
новый
{
pls_login_cookieTime = Cookietime.CookieValue ("pls_login_cookieTime"),
pls_login_SimpleSAMLSessionID = HttpUtility.UrlEncode (логин.CookieValue ("pls_login_SimpleSAMLSessionID")),
TimeOutCheckID = логин.CookieValue ("TimeOutCheckID"),
pls_login_SimpleSAMLAuthToken = логин.CookieValue ("pls_login_SimpleSAMLAuthToken"),
pls_login_rememberme =логин.CookieValue ("pls_login_rememberme")



Здесь Cookietime и login - это два разных url-адреса, где CookieTime-это начальный url-адрес, а login включает url-адрес сервера входа. Несмотря на то, что login не предоставляет файл cookie ответа как pls_login_cookieTime, мне пришлось передать его для окончательного url-адреса в качестве заголовков запроса.

Они были очень маленькими путаницами. Если вы используете такие инструменты, как fiddler, для проверки http-запросов, вы можете понять большую часть того, как они обрабатывают файлы cookie в нескольких доменах. Отдых в ваших руках. Вы должны думать немного жестко и по-другому. Но в целом это не сложно. Это просто смущает только.