斯堪的纳维亚字符在 Shibboleth SP 标头属性中出现混乱

斯堪的纳维亚字符在 Shibboleth SP 标头属性中出现混乱

我在 Windows Server 2008 R2 上的 Domino 9.0.1 服务器前面安装了 Shibboleth SP 2.5 和 Apache 2.4。

这是来自 Shibboleth SP 调试日志的传入 SAML 消息的开头:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

以下是来自同一日志的属性值:

<saml:AttributeValue>Mäkelä Test</saml:AttributeValue>

属性作为 HTTP 标头传递到 Domino。在 Domino 表单中,我执行以下命令@GetHTTPHeader("cn")获取该属性值,结果为

M�ñkel�ñ 测试

在 Shibboleth SP 配置中我没有在任何地方设置字符集并且我相信它应该始终是 UTF-8。

我的 Apache 代理配置如下:

ServerName my.test.fi:8443
UseCanonicalName On
ProxyPass / http://my.test.fi/

我已经尝试过这些:

ProxyHTMLMeta On
RequestHeader unset Accept-Encoding
AddDefaultCharset utf-8
CharsetSourceEnc  UTF-8
CharsetDefault    UTF-8

在 domino 网站文档中,我将“使用 UTF-8 进行输出”设置为“是”,并将表单字符集设置为 UTF-8。Domino 响应标头包括以下内容:

Content-Type:text/html; charset=UTF-8

在我看来,当字符从 Shibbolet SP/Apache 到达 Domino 时,它们已经乱套了。有什么办法可以解决这个问题吗?

答案1

解决方案是在 Domino 中使用 XPage。此服务器端 Javascript (SSJS) 代码正确返回斯堪的纳维亚字符:

facesContext.getExternalContext().getRequestHeaderMap().get("cn");

相关内容