如何管理自定义业务软件的身份验证

时间:2012-05-23 08:02:51

标签: c# security authentication password-encryption

我正在为公司编写业务线软件,我们想要对用户进行身份验证,因此我们可以管理工作流并进行一些审计。基本上我的雇主不希望我撇开Windows身份验证,因为某些网络限制(我真的不想进入它,但它混合了糟糕的网络设置和老板想知道是否有另一种方法可以做它)

我正在使用c#,wpf,MVVM,PRISM

我已经阅读了一些关于哈希密码,盐析等的内容,我读的越多,我就越发现我真的不应该写这个程序的安全部分了,因为我基本上是合格的faaaaaa。

Eric Lippert在安全方面有一个非常好的基本介绍,他在开始时警告读者你不应该设计自己的安全系统,因为你不够了解。

我想知道,有哪些替代方案?

看到我不应该自己写,我想知道我应该从哪里得到它?

我是否聘请安全专家来编写?

我是否应该与第三方安全程序进行交互?

我是否外包设计但是自己实施?

我应该关注这个行业的重要人物?

(我已经创建了这个问题here on IT Security Exchange,但我想知道有什么可说的,因为这是编程)


修改

我对IT Security Exchange question进行了一些调整,以便回答人们在那里提出的一些问题。如果您想了解更多信息,请查看它。

3 个答案:

答案 0 :(得分:1)

我认为你应该看看远程安全 - 即使你不打算使用远程,原则也很好。请参阅.NET Remoting Security Solution Part I".NET Remoting Security Solution Part II。这可以帮助您构建SSO(单点登录)解决方案。 或者要求用户使用Windows内置凭据框重新输入密码:Show Authentication dialog in C# for windows Vista/7

答案 1 :(得分:1)

警告:一些无耻的自我推销包含在以下内容中:

您正在寻找的是标准许可证管理,适用于SaaS类型的应用程序或桌面。您正在寻找的基本功能是创建和管理用户列表,并使应用程序自动遵守该列表。根据应用程序对内部业务流程的机密性或重要性,您可能需要考虑您的特定要求。

一旦你开始控制访问(对任何事情),就会有令人不愉快的潜在影响:要么让合法用户不能访问,要么允许非合法用户使用安全漏洞(例如,一个简单的命名用户/密码挑战和放大器) ;响应系统允许帐户共享 - 无论是有意还是无意的)。

如果您正在尝试审核,则需要知道系统足够可靠以提供准确的数据。

我们公司制作great license management solution;还有其他选择。一个好的系统应该(一旦设置和集成)允许您轻松地为单个用户或组设置业务规则 - 例如,您可能希望允许一组20人在任何时间运行5个应用程序实例,但或者您可能希望为临时用户提供在特定日期到期的临时帐户。自己滚动这些功能可能很难,但一个好的LM系统应该让它完全没用。

我向您保证,使用可靠的第三方解决方案(短期和长期)将比构建和维护自己的代码更便宜。

答案 2 :(得分:0)

我认为我们现在已经解决了这个问题。 SteveSmy IT Security Exchange question上发布了关于使用WCF,WIF和ASP.NET成员资格提供程序的好主意。这不是很理想,因为我会编写一些代码,因此它会变得不安全。

然而,它似乎是利用微软构建的利用安全技术的最佳选择,而我只是把它们拼凑在一起。

我只是担心接缝。