Как перестать раздражать всплывающее окно безопасности? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть это всплывающее окно безопасности для запроса имени пользователя и пароля. Это как каждый раз, когда я захожу на мой сайт, меня просят ввести их. Кстати, он работает нормально при разработке vs2010, но не после того, как я публикую в IIS. Однако, если я выбираю другой метод, включив анонимную аутентификацию, он работает, но мой HttpContext.Current.User.Identity.Name показывает пустой. Может кто-нибудь помочь мне удалить это надоедливое всплывающее окно?

Ниже приведены мои аутентификации:

  • Аномонная аутентификация (отключена)
  • Олицетворение ASP.NET (отключено)
  • Аутентификация по формам (отключено)
  • Аутентификация Windows (включена)

Код из web.config:

<system.web>
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>

            <authentication mode="Windows" />
            <identity impersonate="false"/>

    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
        </providers>
    </membership>
    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
        </providers>
    </profile>
    <roleManager enabled="false">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
        </providers>
    </roleManager>
</system.web>

1 Ответ

0 голосов
/ 21 марта 2012

Вы не упоминаете, где пытаетесь опубликовать свой веб-сайт. Если это происходит в интрасети, то сначала убедитесь, что Internet Explorer по умолчанию использует проверку подлинности Windows. Internet Options-> Advanced->Security->Enable Integrated Windows Authentication. Кроме того, если существует междоменный сценарий, убедитесь, что между ними есть доверительные отношения.
Это также может быть проблема с разрешением. Поскольку вы не указываете олицетворение, учетная запись, которую вы установили для пула приложений, должна иметь все необходимые разрешения для доступа к ресурсам, которые вы пытаетесь использовать (если они есть), например, к БД, файлам и т. Д.

Если вы пытаетесь опубликовать в общедоступных интернет-приложениях, проверка подлинности Windows не может работать без проблем. Если это ваш сценарий, то вы должны согласиться с подсказкой, так как II не могут проверить ваш (обычно NTLM или Kerberos) токен безопасности. На общедоступных IIs аутентификация с помощью форм (или OAuth, ACS и т. Д.) Имеет больше смысла.

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