将NodeJ连接到MarkLogic as SAML时发生UTF-8转义序列错误
我正在尝试使用SAML将NodeJS程序连接到MarkLogic。下面是代码片段将NodeJ连接到MarkLogic as SAML时发生UTF-8转义序列错误,marklogic,Marklogic,我正在尝试使用SAML将NodeJS程序连接到MarkLogic。下面是代码片段 var mytoken = fs.readFileSync('./token.token', 'ascii'); //mytoken = utf8.encode(mytoken); console.log(mytoken); var options = { port: '8060', authType: 'saml', ssl: true, token: mytoken, k
var mytoken = fs.readFileSync('./token.token', 'ascii');
//mytoken = utf8.encode(mytoken);
console.log(mytoken);
var options = {
port: '8060',
authType: 'saml',
ssl: true,
token: mytoken,
key: fs.readFileSync('./certs/localhost.key', 'ascii'),
cert: fs.readFileSync('./certs/localhost.crt', 'ascii')
};
var db = marklogic.createDatabaseClient(options);
db.documents.query(
qb.where(
qb.term('water')
)).result(function(response) {
console.log(JSON.stringify(response, null, 2));
});
下面是我得到的错误
body: {
errorResponse: {
statusCode: 500,
status: 'Internal Server Error',
messageCode: 'INTERNAL ERROR',
message: 'XDMP-UTF8SEQ: Invalid UTF-8 escape sequence . See the MarkLogic server error log for further detail.'
}
}
}
谢谢你在这方面的帮助。如果有任何线索,我将不胜感激。您正在以ascii
cert:fs.readFileSync('./certs/localhost.crt','ascii')读取文件。
您是否尝试过使用UTF-8编码读取内容:编码:'utf8'
?我尝试了以下两种方法,但均无效。var mytoken=fs.readFileSync('./token.token','utf8');我还尝试安装npm库utf8,并尝试了以下代码。mytoken=utf8.encode(mytoken);SAML令牌必须是base 64编码的。如果token.token文件是从JWT有效负载生成的,则它必须以与IDP中SAMLResponse表单字段的值相同的方式对SAML令牌进行编码。谢谢Ehennum。我想,我明白你的意思了。让我试着做几件事,然后再告诉你更多细节。非常感谢。@ehennum非常感谢!你是个救生员。这对我有用。我在开发两个不同的应用程序。1.反应JS2。节点JS。我使用React应用程序对Azure AD进行身份验证,获取令牌,在节点JS中手动复制粘贴令牌。我犯了一个愚蠢的错误。我的REACT应用程序没有为我获取SAML令牌,而是身份验证令牌。在我读了你的评论之后,我得到了线索。我做了一些改变,使用了工具名“SAML tracer”,得到了SAML标记,它对我来说就像一个符咒。非常感谢。您正在以asciicert:fs.readFileSync('./certs/localhost.crt','ascii')
的形式读取文件。您是否尝试过使用UTF-8编码读取内容:编码:'utf8'
?我尝试了以下两种方法,但均无效。var mytoken=fs.readFileSync('./token.token','utf8');我还尝试安装npm库utf8,并尝试了以下代码。mytoken=utf8.encode(mytoken);SAML令牌必须是base 64编码的。如果token.token文件是从JWT有效负载生成的,则它必须以与IDP中SAMLResponse表单字段的值相同的方式对SAML令牌进行编码。谢谢Ehennum。我想,我明白你的意思了。让我试着做几件事,然后再告诉你更多细节。非常感谢。@ehennum非常感谢!你是个救生员。这对我有用。我在开发两个不同的应用程序。1.反应JS2。节点JS。我使用React应用程序对Azure AD进行身份验证,获取令牌,在节点JS中手动复制粘贴令牌。我犯了一个愚蠢的错误。我的REACT应用程序没有为我获取SAML令牌,而是身份验证令牌。在我读了你的评论之后,我得到了线索。我做了一些改变,使用了工具名“SAML tracer”,得到了SAML标记,它对我来说就像一个符咒。多谢。