【问题标题】:Windows Authentication in Firebird 2.5Firebird 2.5 中的 Windows 身份验证
【发布时间】:2017-05-23 13:16:36
【问题描述】:

我可以使用 Windows 用户而不是使用 SYSDBA 和 MASTERKEY 凭据登录到 firebird 数据库吗?如果是,请告诉我连接到 firebird 数据库的方法。

我正在使用 Delphi XE3 和 Firebird 2.5。我需要在更新“受信任”的配置文件代替此处指定的默认“本机”后,通过登录用户对用户进行身份验证:https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-fbconf-authent.html

这是我的代码:

SQLConnection1.LoginPrompt := False;
//SQLConnection1.Params.add('user_name='); 
//SQLConnection1.Params.add('password='); 
SQLConnection1.Params.add('os authentication=True') ; 
SQLConnection1.Connected:= True

它仍然要求提供凭据。

【问题讨论】:

  • 您正在使用哪个 DB 客户端 - FireDAC、UniDAC、Interbase、ADO 或...?获得具体答案至关重要。
  • 我正在使用 DbExpress。需要在不提供用户名和密码的情况下访问 firebird 数据库表数据。只想使用 Windows 身份验证来访问表。非常感谢。
  • @MarkRotteveel,我做到了。但它被拒绝了stackoverflow.com/review/suggested-edits/16221614 :(我试图在这个问题上做到最好。
  • @VictoriaMarotoSilva 我正在向 OP 发表讲话,因为他在最初提出问题时应该这样做。我会在几秒钟内自己添加它们
  • @Victoria 我无法恢复已经做出的决定,我想马克也不能,但如果你真的想提出来,我想你可以在 META.stackexchange 上做.net

标签: delphi login windows-authentication firebird2.5 dbexpress


【解决方案1】:

(V.2.1) 从 Firebird 2.1 开始,Windows “受信任的用户”安全可以 用于在 Windows 主机上对 Firebird 用户进行身份验证。这 受信任用户的安全上下文被传递到 Firebird 服务器,并且, 如果成功,则用于确定 Firebird 安全用户 名字。

只需从 DPB/SPB 中省略用户和密码参数即可 自动导致应用 Windows 受信任的用户身份验证, 在几乎所有情况下。请参阅下面的环境部分 例外

来自official documentation

另外,看看这个问题 - https://dba.stackexchange.com/questions/154735/how-to-enable-windows-authentication-in-firebird-2-5

【讨论】:

  • 我知道如何使用ISC_USER & ISC_PASSWORD:C:\Pr~\bin>set ISC_USER=user1 C:\Pr~\bin>set ISC_PASSWORD=12345。如何向 DPB 添加新的 isc_dpb_trusted_auth 参数?我需要使用什么语法?谢谢。
  • @Vinod_cmdl 读取 dbExpress 源代码并找到创建 DPB 的函数并检查它使用的字符串名称。统一的 Interbase 库使用“trusted_auth”名称 - stackoverflow.com/a/44311652/976391
【解决方案2】:

如果TSQLConnection对象的User_Name参数未设置(User_Name= ),则使用Windows身份验证连接模式。

同时设置Authentication = mixed或信任firebird.conf文件,重启FirebirdServer服务

如果您没有在代码中设置user_name 和“密码”参数(在您的代码中已被注释),请在设计时添加它们。只添加User_Name 就足够了。

如果你想使用:

SQLConnection1.Params.add('user_name='); // this is enough
SQLConnection1.Params.add('password='); 

在设计时从 SQLConnection.Params 中删除 user_namepassword 参数。

注意:请勿使用:

SQLConnection1.Params.Values['User_Name'] := '';

这只是从列表中删除参数。

更新

这对我有用。正如您在 firebird.conf 中看到的,身份验证仅受信任。 SQLConnection 参数:用户名和密码为空。 并且 SQLConnection 已连接。

试着重复这张图片。

我正在使用 Delphi 2010。

【讨论】:

  • “马丁,我不想惹你。”不用担心。无论如何,我已经完成了我应该做的事情,并使用服务器的身份验证 = 受信任尝试了我的代码。它无法连接,并给出 OP 引用的错误消息。所以我删除了我的答案。
  • @Val Marinov 我尝试过但收到此消息“您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录。”有什么帮助吗?
  • 如果他将用户名和密码设置为 Windows 环境变量,那将停止工作。我不确定 DBX 是否具有强制执行可信身份验证所需的常量。不过,Unified Interbase 确实有 - stackoverflow.com/a/44311652/976391
  • 我是否必须在 security2.fdb 数据库或其他地方添加 Windows 用户?我收到“您的用户名和密码未定义。请您的数据库管理员设置 Firebird 登录..”消息。
  • @Vinod_cmdl 号
猜你喜欢
  • 1970-01-01
  • 2010-10-05
  • 2013-10-30
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2015-07-18
  • 2023-03-22
相关资源
最近更新 更多