如何从java应用程序作为Windows用户身份验证sql server?

时间:2017-12-01 11:54:25

标签: java sql-server delphi authentication ldap

我有一个必须解决的难题。

在用Delphi + SQL Server编写的客户端服务器应用程序上,应用程序用户被映射到SQL Server用户。通过这种方式,用户使用SQL Server凭据从客户端登录,并对其进行身份验证和记录。 然后应用程序使用sa来运行所有查询,系统的设计方式是登录到数据库的用户只能查询加密的sa密码可见的表,因此应用程序读取密码,解密并记录日志在sa。

用户可以使用sql server身份验证而不是Windows身份验证。

在DB中有一个USERS表,其中存储了用户名,这些表与SQL Server登录名匹配,如果是Windows身份验证,则uesrname存储为"DOMAIN\User",以防sql身份验证简洁为"User"

我正在编写一个必须为用户保留相同身份验证系统的java Web应用程序:应用程序使用sa用户使用JDBC连接到数据库,但在登录表单中,用户必须输入其sql server登录数据。 由于webapp也必须在局域网/ VPN之外使用,我也希望Windows身份验证用户可以通过在名称字段中键入DOMAIN\User和在密码字段中输入密码来传递登录。

对于SQL身份验证用户来说,这很简单,我只是尝试在try catch块中执行查询密码表(唯一一个可见的),同时作为尝试登录的用户,在非引发异常的情况下i认为登录成功。它有效。

问题出在WIndows auth用户身上。经过大量研究后,我发现一个解决方案可能尝试连接到LDAP服务器,只是为了检查提供的DOMAIN\User和密码是否正确。我正在探索这个想法,我问this question这个原因。

我在这里问的问题是关于整个过程。这个aprpoach是正确的还是我应该考虑其他想法,例如创建一个“WebPassword”字段,以便在登录到webapp时由Win auth用户使用?

在我用Intraweb(用于网络的VCL)制作的另一个webapp中,我能够执行我的任务,因为我使用的DAC组件(SDAC)允许通过在运行时传递来连接到sql server DOMAIN\USER和任何其他用户的密码。这在jdbc中是不可能的,所以我已经放弃了这个想法。

请记住,这个问题是关于“通过保留旧的身份验证系统将旧的客户端服务器应用程序迁移到Web(因为客户端服务器和Web必须共存)”。

0 个答案:

没有答案