Apache authentication with mod_dbd, unixodbc and firebird. lazarus / 16-Databases ---------------------------------------------------------------------- d.ioannidis · 2016-01-15 11:15 Hi all,    the following UDF can be used to store user's passwords in a firebirdsql's table to provide apache's basic authentication and mod_dbd with unixodbc ( or odbc in win ) SHA1 authentication.   Apache SHA1 Password format : "{SHA}" + Base64-encoded SHA-1 digest of the password. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i library ApacheAuthUDF; {$mode objfpc}{$H+} uses  Classes,  strings,  sha1,  base64;   procedure basic_auth_sha1_base64(StrToHash, HashedStr: PChar); cdecl; export;  var    Outstream: TStringStream;    Encoder: TBase64EncodingStream;    SHA1Digest: TSHA1Digest;  begin    Outstream := TStringStream.Create('');    try      Encoder := TBase64EncodingStream.Create(outstream);      try        SHA1Digest := SHA1String(StrPas(StrToHash));        Encoder.Write(SHA1Digest, Length(SHA1Digest));      finally        Encoder.Free;      end;      StrPCopy(HashedStr, Outstream.DataString);    finally      Outstream.Free;    end;  end; exports  basic_auth_sha1_base64 Name 'basic_auth_sha1_base64'; beginend.  SQL Declaration : Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i DECLARE EXTERNAL FUNCTION BASIC_AUTH_SHA1_BASE64cstring(256), cstring(256)RETURNS parameter 2ENTRY_POINT 'basic_auth_sha1_base64'MODULE_NAME 'ApacheAuthUDF'; It can be used like this : Code: XML  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i select BASIC_AUTH_SHA1_BASE64('12345') from rdb$database  or Code: XML  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i select BASIC_AUTH_SHA1_BASE64(PlainTextPassword) from users  Hope it helps anyone who need to use apache's basic auth with firebirdsql. PS:   In the Virtual Host conf of the apache, you configure mod_dbd like this : Code: XML  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i DBDriver odbcDBDParams "DATASOURCE=FBDatabase"#DBDKeep     10#DBDMax      10#DBDMin      10 AuthType basicAuthName "Secured Realm"AuthBasicProvider dbdAuthDBDUserPWQuery "select '{SHA}' || password from users where username = %s"Require valid-user