Не удалось авторизовать URL для запроса - PullRequest
3 голосов
/ 27 мая 2009

Я нахожусь в процессе перемещения некоторых сайтов к новой установке Windows 2003, работающей под управлением IIS6. Однако я сталкиваюсь с проблемами с проверкой подлинности форм. Сайты, о которых идет речь, нормально работают на старой коробке, которая является той же версией ОС и IIS.

Когда я пытаюсь войти на сайт, я получаю журнал событий «Не удалось авторизовать URL для запроса», и страница перенаправляется обратно на: -

http://www.demo.socialclause.net/logout.aspx?ReturnUrl=/Secure/Procurement/Default.aspx

И старый, и новый серверы имеют одинаковые настройки и одинаковые разрешения. Очевидно, я где-то пропускаю настройки, но не могу понять это. Кто-нибудь может помочь?

Мой web.config содержит это: -

<authentication mode="Forms">
  <forms slidingExpiration="true" name=".ASPXAUTH" protection="All" loginUrl="~/logout.aspx" timeout="60" ></forms>
</authentication>

и внутри / secure dir (это не виртуальный каталог) мой web.config содержит: -

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

Журнал событий показывает:

Event Type: Information
Event Source:   ASP.NET 2.0.50727.0
Event Category: Web Event 
Event ID:   1314
Date:       26/05/2009
Time:       21:01:05
User:       N/A
Computer:   WILDEAA1
Description:
Event code: 4007 
Event message: URL authorization failed for the request. 
Event time: 26/05/2009 21:01:05 
Event time (UTC): 26/05/2009 20:01:05 
Event ID: af3bac34e6d74630b937a5a05d0f25f2 
Event sequence: 4 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2067908276/Root-1-128878416581538912 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Inetpub\websites\www.demo.socialclause.net\htdocs\ 
    Machine name: WILDEAA1 

Process information: 
    Process ID: 1076 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 

Request information: 
    Request URL: http://demo.socialclause.net/Secure/Procurement/Default.aspx 
    Request path: /Secure/Procurement/Default.aspx 
    User host address: 91.84.25.241 
    User: richard@wildesoft.net 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

Ответы [ 5 ]

1 голос
/ 27 мая 2009

Попробуйте запретить пользователям? (аноним) вместо * (все)

<authentication mode="Forms">
    <forms name=".ASPXFORMSAUTH" loginUrl="~/Common/Login.aspx" timeout="450" />
  </authentication>
  <authorization>
    <deny users="?" />
    <allow roles="Admin" />
  </authorization>
0 голосов
/ 27 июля 2010

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

0 голосов
/ 14 мая 2010

Попробуйте это? По сути, вы указали разрешение x, y, z, а затем запретили все.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="*"/>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
    </authorization>
  </system.web>
</configuration>

Если это не сработает, попробуйте это.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>
0 голосов
/ 28 мая 2009

До сих пор я использовал только поставщика ролей sql ... Я думаю, что ответ лежит в вашем поставщике ролей, который вы используете. Ваши пользователи, кажется, не получают назначенные роли. Можете ли вы предоставить вам раздел web.config по этому вопросу? Например, это мое:

      <roleManager enabled="true" defaultProvider="IDTSqlRoleProvider" cacheRolesInCookie="true" cookieProtection="All">
    <providers>
      <clear/>
      <add
        name="IDTSqlRoleProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlMembershipConnectionString"
        applicationName="ConsumerSynergy"/>
    </providers>
  </roleManager>
0 голосов
/ 27 мая 2009

Просто угадайте, потому что я бы не стал использовать IIS, если бы вы заплатили мне, но, возможно, вам не хватает некоторых сертификатов или файлов паролей, которые необходимо установить на сервере? Возможно, вам нужно рассказать IIS о ролях / пользователях, с которыми вы пытаетесь соответствовать.

РЕДАКТИРОВАТЬ: исходя из дополнительной информации, которую вы раскрыли, я исключил бы сертификаты и сконцентрировался на том, как определяются роли. Вы говорите, что они определены в базе данных, но тот факт, что они стали недействительными, когда вы переключили сервер, предлагает три возможности:

  1. Ваши роли определены как Windows Системные учетные записи или пользователи IIS.
  2. Ваши роли определяется как пользователи базы данных, но ваш скопированы только таблицы данных, а не пользователи (под этим я подразумеваю базу данных пользователи, а не таблица "пользователи" в база данных).
  3. Ваши роли определены но разрешения на их чтение Измененное.

Я подозреваю, что это 1.) Пользователи IIS.

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