Как обойти принудительный вход в систему для службы проверки подлинности токена? - PullRequest
0 голосов
/ 26 марта 2009

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

Ответы [ 2 ]

1 голос
/ 26 марта 2009

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

Edit:

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

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

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

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

0 голосов
/ 26 марта 2009

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

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

Например.

// 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);
}

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

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

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