2012-01-05 2 views
3

У меня есть два веб-приложения ASP.NET, работающих на одном и том же веб-сервере IIS 7.5/.NET 4.0. Первое приложение делает асинхронные вызовы через jquery ко второму приложению, которое действует как бэкэнд веб-службы (подключен к серверу базы данных). Два приложения будут установлены в контексте интрасети, поэтому я хочу использовать встроенную «Аутентификацию Windows».Совместное использование ASP.NET Аутентификация между двумя приложениями

В обоих Web.config у меня есть:

<authentication mode="Windows" /> 

<authorization> 
    <deny users="?" /> 
</authorization> 

<identity impersonate="true" /> 

Если открыть браузер и получить доступ к тестовой странице, это нормально на обоих веб-приложений: браузер запрашивает пользователя пары/пароль и IIS позволяет страницу для загрузки. Но если я получаю доступ к тестовой странице первого веб-приложения, которое делает асинхронный запрос к веб-службе, установленной во втором приложении, возвращается код ошибки 401. Похоже, что аутентификация теряется между двумя приложениями.

Я попытался также MachineKey но ничего ...

Любая идея?

Любая помощь приветствуется, спасибо заранее.

Alex

+0

Вы сказали, что они на одной машине, находятся ли они на одном и том же имени/порту? – BNL

ответ

1

Вы, вероятно, пытается сделать запрос асинхронной на другой домен, который isn't allowed.

Вы можете обойти это, создав «прокси» вызов веб-службы. Вы вызываете асинхронный вызов в свое местное приложение asp.net, которое делает звонок на веб-службу от вашего имени. Это позволяет избежать такой же политики происхождения , о которой говорится в ссылке выше.

Другой вариант, поскольку у вас есть контроль над приложением на обоих концах, нужно посмотреть на JSONP. У меня нет большого опыта с этим, но у меня есть видел, как он использовался для создания асинхронных вызовов через домены.

Удачи вам!

+0

Большое спасибо. Так я принял ;-) – Alex