Аутентификация форм через приложения

Я работаю над внутренним веб-инструментом для своей компании. Часть этого инструмента является другим приложением (Панель инструментов Круиз-контроля), который работает в ее собственном Виртуальном каталоге в соответствии с моим корневым приложением.

Я хотел ограничить доступ к этому внутреннему приложению путем установки Аутентификации Форм на нем и наличия формы входа в систему в корневом приложении.

Я поместил следующее в корневые приложения web.config:

<location path="ccnet">
  <system.web>
    <authentication mode="Forms">
        <forms loginUrl="/default.aspx" timeout="5000"/>
    </authentication>
    <authorization>
      <allow users="?"/>
      <deny users="?"/>
    </authorization>        
  </system.web>    
</location>

Однако Аутентификация Форм, кажется, не работает, она не перенаправляет назад к странице входа в систему, когда я получаю доступ к тому приложению непосредственно.

У меня есть чувство, что я имею <позволение> и <отклоняю> набор тегов неправильно. Кто-то может разъясниться?

8
задан FlySwat 21 August 2008 в 02:33
поделиться

7 ответов

Вы, возможно, также должны были бы поместить путь = "/" в <тег (теги) форм, я думаю. Извините, его некоторое время, так как я сделал это

1
ответ дан 5 December 2019 в 15:29
поделиться

Вы, возможно, также должны были бы поместить путь = "/" в

Вот и все!

Так, Сводка, inorder todo это;

В корне добавляют web.config:

<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />

Это должно быть сделано, потому что по умолчанию это - "AutoGenerate, IsolateApps".

Во-вторых, необходимо назвать cookie Автора формы тем же в обоих, я сделал это все в своем корне, с помощью тега местоположения:

<authentication mode="Forms">
   <forms name="ccAuth" loginUrl="/default.aspx"  path="/" timeout="5000"/>
</authentication>
<authorization>
   <deny users="?"/>
</authorization>

Наконец:

<location path="ccnet">
  <system.web>
    <authentication mode="Forms">
      <forms name="ccAuth" loginUrl="/default.aspx"  path="/" timeout="5000"/>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>      
  </system.web>    
</location>

Спасибо все для Вашей справки. Это было stumper.

8
ответ дан 5 December 2019 в 15:29
поделиться

Где тот код находится Jonathan? По моему опыту, у меня есть управление входом в систему, и в событии OnAuthenticate я установил бы Аутентифицируемый во лжи...

If CustomAuthenticate(Login1.UserName, Login1.Password) Then
    FormsAuthentication.RedirectFromLoginPage(Login1.UserName, False)
Else
    e.Authenticated = False
End If

Но это использует Microsoft Way

0
ответ дан 5 December 2019 в 15:29
поделиться

Это не работает, это все еще позволяет всем пользователям, (Аутентифицируемый или не) к доступу.

Я думал бы, что Вы могли даже опустить позволить тег, поскольку это избыточно. Просто:

<deny users="?"/>
0
ответ дан 5 December 2019 в 15:29
поделиться

FormsAuthentication шифрует маркеры, которые он дает пользователю, и по умолчанию он шифрует ключи, отличающиеся для каждого приложения. Чтобы заставить Автора Форм работать через приложения, существует несколько вещей, которые необходимо сделать:

Во-первых, определите Автора Форм "имя" то же на всех Приложениях. Это, покончите:

<authentication mode="Forms">  
    <forms name="{name}" path="/" ...>
</authentication>

Определите "имя", чтобы быть тем же в обоих приложениях web.configs.

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

<machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1" />

Согласно документам, это - значение по умолчанию, но оно не работало на меня, если я не указал его.

2
ответ дан 5 December 2019 в 15:29
поделиться

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

<deny users="?"/>
0
ответ дан 5 December 2019 в 15:29
поделиться

Каково расширение файла для этого приложения круиз-контроля? Если это не будет тип файла, который ASP.NET регистрируется для обработки (например, jsp, Java, и т.д.), то ASP.NET не будет действовать как механизм аутентификации (на IIS 5 и 6). Например, для статических файлов HTML, если Вам не реализовали подстановочный знак, отображающийся, IIS делает всю аутентификацию и авторизацию и подает файл, не включая ASP.NET isapi расширение. IIS7 может использовать новый интегрированный конвейерный режим для прерывания всех запросов. Для IIS6 Вы захотите посмотреть на статью Scott Gu о вопросе.

0
ответ дан 5 December 2019 в 15:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: