我创建了一个 DSAPI 过滤器来使用客户端证书对用户进行身份验证。用户通过代理连接,代理将用户的证书添加到请求标头中。
#define HDR_SSL_CLIENT_CERT "SSL_CLIENT_CERT"
Run Code Online (Sandbox Code Playgroud)
我使用 Apache 作为 HTTPS 代理;客户使用 NGINX。我已经发现 NGINX 添加了 TABS 而不是空格,并且我还确保证书数据在由我的代码解析之前具有正确的格式
#define BUFFER_SIZE 4096
char certData[BUFFER_SIZE+1] = {0,};
Run Code Online (Sandbox Code Playgroud)
certData 包含证书的 Base64 表示形式( TABS 和 SPACES 被替换为 \n)
-----BEGIN CERTIFICATE-----
MIIDOTCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQGEwJERTEO
MAwGA1UECgwFRE9TWVMxETAPBgNVBAsMCFRSQVZFTEVSMRQwEgYDVQQDDAtUUkFW
RUxFUiBDQTAeFw0xNjA0MTgxMzA2MjdaFw0yNjA0MTgxMzA2MjdaMBUxEzARBgNV
BAMMCkdlb3JnIER1bWEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCG
ctEsl++/4LgK8RJId2NUPJgjFKDl76jp38GNMtcCqt+ADUPvR+suoy/zeuRXs7hw
25YAx49U/FYFlu3Xlmb57ACyPtbhLPpV2Y8fJ0EXD2pY1G3oEWlKWWk6ErT2vg7V
ppOajckkx3EmkVrALhQgdOqQDHJ6Y2xQSgpKWGORmoEtYQepJ/LGWBfE4muZjUJk
euUf0fmHFehMw8X0ErPDFxDuAH+d7kjjUl+EqSQCqLqqrg50GMrM0vKIqyqqbUQF
wLQYyFllYkj0h1VQ+KhyxwVkq2snR+Z2EJe1A7xsUwY5D/9dVK5ih6xeIrpgvgCd
6Amx2KF9lh8yEZi1NMPPAgMBAAGjYzBhMB8GA1UdEQQYMBaBFEdlb3JnRHVtYUBz
dGFkdGRvLmRlMB0GA1UdDgQWBBRIX2fz2ahSFgOCf03W4pn9t/BomjAfBgNVHSME
GDAWgBR7RJ1HsYOVlc4TOAzeqIqETopeCTANBgkqhkiG9w0BAQsFAAOCAQEALWre
gJYsSD6i3e4MhJOhR0FFincqdnVEeEoVMr4GDSZRMUPSTjNMTdGLLMFHpU9p/cGZ
4b30k7dQWhIao7aLIgDOXaATr14fLXrZqRM/MXusd27nFKQRZf1ktrxr0vIZqnw4
SuniS3NP7SuVEbUeTWU8nVub17aUWX8T4C8yAHKmancSSgMXwFhXTNq0aIvwRzIv
TzyK0SDXSc68kQkf3evTRvKfvlmQGWXL6BukTGJS1870x3IrDK19Phi5PUYXQtZV
uwaRg1fRUyPno0GCIZiMxCY4rWy+AaM3CO7Ua5+KEiAdWKrBP6Jd24hZuH8ZhuZ/
9u5SSvUA1bGAT02eqQ==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下代码从 certData 获取 X509:
BIO * bio = BIO_new(BIO_s_mem());
X509 * clientCert = X509_new();
bio = BIO_new_mem_buf(certData, -1);
PEM_read_bio_X509(bio, &clientCert, 0, NULL);
if (clientCert == NULL) …Run Code Online (Sandbox Code Playgroud) 我有一个组合框,用户可以选择一种可用的语言.该应用程序包含每种语言的属性文件.在页面的资源部分中,根据用户配置文档中的语言标记(DE,EN ...)计算资源包.
有没有简单的方法根据组合框的值更改onChange事件中的语言?我想到了context.setProperty(???).有什么建议吗?