一个客户端请求我们为他们开发一个站点,但是他们不使用标准的ASP.NET身份验证或使用Active Directory帐户,而是希望我们使用SQL server帐户进行身份验证。(也就是说,使用Server身份验证的帐户。)
该网站将公开给公众互联网,并将有用户不受雇于客户,客户的活动目录是无法在他们的非军事区。
所以我有几个问题要问:
( 1)这是个好主意吗?(我们的直觉是,事实并非如此。)
2)我们应该怎么做才是最好的呢?
对于如何做到这一点,我能想到的最好的答案就是根据用户在web表单中输入的凭据动态地构建一个连接字符串。如果连接成功,请继续到站点。否则,将它们踢回登录页面。(当然,如果有太多失败的登录,请确保帐户被注销。)
有更好的办法吗?
谢谢。
发布于 2017-03-13 20:30:53
( 1)这是个好主意吗?(我们的直觉是,事实并非如此。)
使用这个有几个问题。特别要注意的是,您必须以升级用户的身份运行应用程序来执行用户维护--添加/禁用用户、更改密码等.运行对数据库的权限升级的web应用程序通常是不允许的。如果您在应用程序之外运行此类操作,那么您需要让您的DBA运行所有的用户维护功能,这并不有趣。此外,如果您对密码复杂性、密码旋转等有要求,例如,您可能会发现SQL Server身份验证缺乏AD中可用的内容。
2)我们应该怎么做才是最好的呢?
您可以很容易地测试通过尝试使用提供的凭据登录到Server而提供的凭据。您可以从配置设置中读取连接字符串,但随后将其加载到SqlConnectionStringBuilder对象中(在某个System.Data.SqlClient中),操作它以使用提供的凭据,然后使用该操作的结果进行连接,以测试凭据是否有效。
您可能只想使用它来测试您的登录。在此之后,您可以返回到使用您的正常连接字符串。
https://stackoverflow.com/questions/42772283
复制相似问题