0

我目前正在开发一个内部网的Web应用程序,与一个主页和几个部门页面,Web应用程序仅用于查看信息,因此每个人都将具有相同的权限。我已经达到了一个点,我必须担心应用程序的访问和身份验证,我公司已与我可以用几组活动目录,搜索一会儿后,我得到了以下几个问题:asp.net c#web应用程序与活动目录和Windows身份验证

  • webconfig文件,我强制Windows身份验证和阻止未经过身份验证的用户(拒绝用户=?)
  • 我看到某处我需要几个webconfig文件,每个页面一个,是这样吗?它如何使每个页面连接到相应的webconfig?
  • 查看一些示例后,我无法弄清楚我的AD连接​​字符串(我当前在开发计算机上),我们的AD组位于我们的域控制器上,物理位置是“DCserver.company_name.local \ city文件夹\组“
  • 我需要创建一个登录页面吗?我的意思是这不符合Windows认证的要求?
  • 我不需要管理广告中的任何内容,我只想读取群组并确保例如营销人员只能访问主页和营销部门页面
  • 就像我已经在那里,没有特别的特权,例如,营销用户将能够点击他的部门页面中的所有内容。

我很抱歉所有的问题,但我相对比较c#和.net开发新功能

回答

0

以下是对最新一组问题的解答:

- 在webconfig中,我可以指定可访问每个部门页面以及主页的组吗?有点像下面的代码,如果是这样,我需要我的ldap连接字符串被放置在分配哪些组访问哪个页面之前,对吧?

[Dipra]您可能最好不要使用web.config中的角色进行身份验证,因为这还需要定义角色。我们在这里谈论AD组,其中用户将成为AD组的一部分。因此,在Page_Load()中,只需调用身份验证方法,可能会将用户名和AD组作为参数传递给页面。如果您想使您的解决方案可配置,请将允许的特定页面的AD组作为“密钥”存储在web.config中,然后在您的代码中读取它们。将该组与您的用户名一起传递给您的身份验证方法。

- 当用户打开网站时,他会被提示插入他的Windows凭据,这是自动的,对吧?他将能够看到主页,然后进入他的部门页面,对不对?

[Dipra]是的,这是自动的。这不需要单独的代码。只要他通过认证,他可以到他想要的任何页面。

- 如果我理解正确,在每一个page_load事件中,我需要做一个搜索用户名并检查他属于哪个组,是吗?

[Dipra]是的,你需要做的是检查每个Page_Load()方法。作为一种方法,您可以尝试获取用户所属的所有组,然后检查该页面允许的AD组是否为这些组中的一个。如果是,用户可以被认证。

-i以上是真的,现在我要解释页面的导航因为我认为搞乱page_load可能会给我带来一些问题 将检查看看用户属于哪个组每次页面加载时都会发生?这不会让应用程序变慢吗?

[Dipra]每个服务器端控件(例如asp按钮)都会导致回发。为确保Page_Load()中的验证码在每次页面发生回发时都不会运行,请将该位包含在if(!Page.IsPostBack) {}中。这意味着该块内的任何代码将在页面未被“回发”时运行,即,第一次被渲染。此页面上服务器端控件的任何后续回发将忽略此块内的代码。

-finally,要检查每个用户的成员身份,我需要一个类似的代码来对这个The Link that Dipra posted上的第二个答案进行粘贴,但在c#中,对不对?

[Dipra]您可以参阅接受的答案对上述职位,可能与一对夫妇自己的扭动。它已经在C#中。

0
  1. 是的,你的web.config就像你说的那样。
  2. 您不需要'授予'对页面特定组的访问权限。在web.config中,将允许访问特定页面的组存储为密钥,并在您的代码中读取配置,如this。例如,如果您有一个名为'Marketing'的key,则可以存储相应AD组的名称,该组的名称允许访问value字段中的Marketing页面。是的,一旦你有一页工作,其他人会更容易。
  3. 不,我谈到的身份验证方法是您自己编写的自定义方法,它将使用与我发布的链接中类似的逻辑。
  4. 整个验证代码应包含在try...catch块中。如果在对AD进行身份验证时遇到问题(例如,连接问题),那么您的代码将引发异常。捕获(并理想地记录)异常并将用户重定向到错误页面,可能表示存在一些妨碍认证的问题。在这种情况下,您不应该授予用户访问权限。
相关问题