我在 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");