Как обойти принудительный вход в службу аутентификации токенов?

Итак, всякий раз, когда кто-либо заходит на наш сайт, кто не вошел в систему, он переходит на страницу входа и заставляет их войти в систему, а затем возвращает их на страницу, к которой они пытались получить доступ. Мне было поручено создать службу (используя ASHX), которая возвращает отчетные данные через xml. Это все сделано, однако, чтобы получить к нему доступ, вы должны войти в систему. Вместо входа в систему я собираюсь передать им токен через строку запроса, чтобы подтвердить, что это действительный запрос. Однако я не уверен, как обойти принудительный вход в систему. Это слишком расплывчато или у кого-нибудь есть идеи? Я полагаю, что последним отчаянным усилием было бы создание совершенно отдельного сайта в ISS, но я хотел бы избежать этого, если это возможно.


person Ryan    schedule 26.03.2009    source источник


Ответы (2)


Один из способов сделать это на том же сайте — сделать вашу службу доступной анонимно, а затем выполнить собственную аутентификацию внутри службы по токену.

Редактировать:

Чтобы разрешить анонимность, добавьте в свой web.config раздел, который разрешает полный доступ к каталогу, содержащему ваш сервис. Например, ваша служба: http://www.foo.com/Services/bar.asmx.. Добавьте это в свой web.config, где находятся другие разделы авторизации:

<location path="Services">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Затем в своей службе аутентифицируйте свой токен, который вы передали, как хотите. Если аутентификация не проходит, создайте исключение SoapException. Способ аутентификации зависит от того, как вы сейчас проходите аутентификацию на странице входа.

Надеюсь это поможет.

person Moose    schedule 26.03.2009
comment
это звучит здорово, но как именно это установить, это в IIS? - person Ryan; 26.03.2009

Просто измените свою страницу входа, чтобы проверить реферер или URL-адрес для ваших данных.

Если он найдет его, автоматически заставьте его аутентифицировать этого пользователя, которого вы настроили.

Eg.

// In your signin aspx file
bool bYourCriteriaIsMet = true; // do something here like check the referrer or querystring etc..";
if (bYourCriteriaIsMet)
{
    FormsAuthentication.RedirectFromLoginPage("Your Temp User Name", false);
}

Просто выясните, что вам нужно проверить, а затем выполните перенаправление вручную.

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

person Kelsey    schedule 26.03.2009