1

我需要使用 XQuery 将用户登录到 eXist-db。当然我可以使用这段代码:

xquery version "3.0";

declare namespace exist = "http://exist.sourceforge.net/NS/exist"; 
declare namespace request="http://exist-db.org/xquery/request";
declare namespace xmldb="http://exist-db.org/xquery/xmldb";
declare option exist:serialize "method=json media-type=text/javascript";

let $userName := request:get-parameter("userName", ()) 
let $hash := request:get-parameter("hash", ()) 
let $login := xmldb:authenticate('/db', $userName, $hash)
return
    <ajax-response>
        <success>{$login}</success>
        <username>{$userName}</username>
    </ajax-response>

问题是,由于我从另一个服务接收密码和用户名,我以用 MD5 加密的散列形式接收它们(因为它们不能从一个服务明文传递到另一个服务)。

但该xmldb:authenticate功能需要密码明文。我该如何解决这个问题?任何想法?有没有办法在不使用该authenticate功能的情况下在 eXist-db 中“手动”登录?

4

1 回答 1

1

不,这是不可能的:eXist-db 不适用于身份验证功能上的哈希,因为 MD5 不安全,这将是一个安全风险。此外,eXist-db 内部不使用 MD5 对密码进行哈希处理,因此验证密码会很困难(不可能匹配两种不同的哈希技术)

不幸的是,没有办法使用标准函数来解决这个问题。

于 2013-08-02T20:19:38.097 回答