如何正确配置NGINX for WSO2 Identity Server Dashboard?

问题描述 投票:0回答:1

现在我面临着一个问题,代理WSO2身份服务器前端的NGINX的websocket。我在官方文档和其他博客中寻找相关信息,比如。https:/docs.wso2.comdisplayIS570Setting+Up+Deployment+Pattern+1#SettingUpDeploymentPattern1-Changinghostnamesandports。https:/medium.com@piraveenapalogarajahworking-with-wso2-is-5-8-0-dashboard-via-nginx-1b827cbaba23。 现在,在这一点上,我在IS集群节点内配置了以下文件。

  • repositorydeploymentserverjaggeryappsportalconfsite.json。
  • 仓库deployments服务器jaggeryappsdashboardconf。
  • repositoryconfidentitysso-idp-config.xml。
  • 部署webappsdashboardauthenticationauth_config.json。

    在这个文件中,我使用了 mgt.HostNamemgt.Port mydomain.is.wso2:443

    在nginx上,它的配置如下。

upstream ssl.wso2.is.com {
    server iskm01.wso2:9447;
    server iskm02.wso2:9447;
    ip_hash;
}
...
server {
    listen 443 ssl;
    server_name mydomain.is.wso2;
    error_log  /var/log/nginx/segurnacahml.log ;
    access_log /var/log/nginx/access-segurnacahml;

    #SSL CONFIG
    ...


    location /{
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_read_timeout 5m;
        proxy_send_timeout 5m;
        proxy_pass https://ssl.wso2.is.com;
        proxy_redirect https://ssl.wso2.is.com https://mydomain.is.wso2;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection “upgrade”;
    }


}

问题是:每次我尝试访问仪表板应用程序,如 "我的个人资料",websocket响应与 "WebSocket握手过程中出错。Unexpected response code. 400 400" 并产生如下的空响应。

enter image description here

我不知道如何处理这个问题,即使经过所有的研究......。

nginx websocket wso2 identityserver4 wso2is
1个回答
0
投票

门户网站的site.json

{
    "service" : {
        "serviceOrigin" : "${carbon.protocol}://${carbon.host}:${carbon.management.port}"
    },
    "proxy" : {
        "proxyHost" : "mydomain.is.wso2",
        "proxyHTTPSPort" : "443",
        "proxyContextPath" : ""
    },
    "fido" : {
        "appId" : ""
    }
}

来自dashboard的site.json

{
    "service" : {
        "serviceOrigin" : "${carbon.protocol}://${carbon.host}:${carbon.management.port}"
     },
    "proxy" : {
        "proxyHost" : "mydomain.is.wso2",
        "proxyHTTPSPort" : "443",
        "proxyContextPath" : "",
        "servicePath" : "/services"
    }

}

在日志里面.... 在仪表板中登录并展开一个App后,我收到了这行。

ERROR -  RuntimeException thrown from JDBCReporter#report. Exception was suppressed. {com.codahale.metrics.ScheduledReporter}
java.lang.IllegalArgumentException: Underflow
        at oracle.jdbc.driver.OraclePreparedStatement.setDoubleInternal(OraclePreparedStatement.java:5151)
        at oracle.jdbc.driver.OraclePreparedStatement.setDouble(OraclePreparedStatement.java:5127)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.setDouble(OraclePreparedStatementWrapper.java:183)
        at sun.reflect.GeneratedMethodAccessor150.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
        at com.sun.proxy.$Proxy20.setDouble(Unknown Source)
        at org.wso2.carbon.metrics.jdbc.reporter.JDBCReporter.reportTimer(JDBCReporter.java:421)
        at org.wso2.carbon.metrics.jdbc.reporter.JDBCReporter.reportTimers(JDBCReporter.java:385)
        at org.wso2.carbon.metrics.jdbc.reporter.JDBCReporter.report(JDBCReporter.java:200)
        at com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:162)
        at com.codahale.metrics.ScheduledReporter$1.run(ScheduledReporter.java:117)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

对于session_manager.jag浏览器网络,我得到的是 "WebSocket握手过程中出错。Unexpected response code. 400 400"

General
    Request URL: wss://mydomain.is.wso2/dashboard/session_manager.jag
Request Headers
    Provisional headers are shown
    Accept-Encoding: gzip, deflate, br
    Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
    Cache-Control: no-cache
    Connection: Upgrade
    Cookie: JSESSIONID=470C788F644B8F57BE2C498B25F2BD1A027EF51BC91F9F31659893250232CF2CC9C5BFF13D130E84652844A0BA3E53B4AA4292ECE4E5DC92EFE9739491DBA95AC6AAC5DC681139A51836598387E41602CC00E83702CC99BA8F78B415C66958D5D44995E5A6D7A63BA68DC659076215F47ACD28345D90E695193E646612C4411A; commonAuthId=52026cd8-6580-432c-a574-af46739815b8; samlssoTokenId=ce5f6576-ea73-4d50-9b42-039c00d0f678
    Host: mydomain.is.wso2
    Origin: https://mydomain.is.wso2
    Pragma: no-cache
    Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
    Sec-WebSocket-Key: 37CWGcy9FclgHVlP1ebW2w==
    Sec-WebSocket-Version: 13
    Upgrade: websocket
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36

对于响应http 302代码的acs

General
    Request URL: https://mydomain.is.wso2/dashboard/acs
    Request Method: POST
    Status Code: 302 Found
    Remote Address: 10.19.52.64:443
    Referrer Policy: no-referrer-when-downgrade
Response Headers
    Connection: keep-alive
    Content-Length: 0
    Content-Type: text/html
    Date: Thu, 21 May 2020 12:53:56 GMT
    Location: https://mydomain.is.wso2/dashboard/index.jag
    Server: nginx/1.18.0
    Set-Cookie: JSESSIONID=470C788F644B8F57BE2C498B25F2BD1A027EF51BC91F9F31659893250232CF2CC9C5BFF13D130E84652844A0BA3E53B4AA4292ECE4E5DC92EFE9739491DBA95AC6AAC5DC681139A51836598387E41602CC00E83702CC99BA8F78B415C66958D5D44995E5A6D7A63BA68DC659076215F47ACD28345D90E695193E646612C4411A; Path=/dashboard; Secure; HttpOnly
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block
Request Headers
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate, br
    Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
    Cache-Control: no-cache
    Connection: keep-alive
    Content-Length: 8655
    Content-Type: application/x-www-form-urlencoded
    Cookie: JSESSIONID=EE9002E0765956D04DF279FAA082C64423AD70BDEB7A3FAD25B1FE86F2D7694942586A9BB48D17E8B0CA9DFA4438916DC39E5AEEFAA6597502918F325266389848B32685E75CA17C7E842608A7C97F19B8B31FDA453D803FB352531C58251A9C546BBCEACCA4466AD9032BC7E0E9B8EA199FE4457794CC88F83C14575073727E; commonAuthId=52026cd8-6580-432c-a574-af46739815b8; samlssoTokenId=ce5f6576-ea73-4d50-9b42-039c00d0f678
    Host: mydomain.is.wso2
    Origin: https://mydomain.is.wso2
    Pragma: no-cache
    Referer: https://mydomain.is.wso2/samlsso
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: same-origin
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
   SAMLResponse:PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNhbWwycDpSZXNwb25zZSBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9zZWd1cmFuY2FobWwtd3NvMi5hbnMuZ292LmJyOjQ0My9kYXNoYm9hcmQvYWNzIiBJRD0iXzA5ZTRmOGUyYjA4YmUyOGUzMjY3MDBkM2QxZDc2ZTJkIiBJblJlc3BvbnNlVG89Il9hYmQzZmY4YmY3MGZiYzI5NTMzNDY3YjBiMjM1ZmExYyIgSXNzdWVJbnN0YW50PSIyMDIwLTA1LTIxVDEyOjUzOjM4LjExMVoiIFZlcnNpb249IjIuMCIgeG1sbnM6c2FtbDJwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiPjxzYW1sMjpJc3N1ZXIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDplbnRpdHkiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5zZWd1cmFuY2FobWwtd3NvMi5hbnMuZ292LmJyPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CjxkczpSZWZlcmVuY2UgVVJJPSIjXzA5ZTRmOGUyYjA4YmUyOGUzMjY3MDBkM2QxZDc2ZTJkIj4KPGRzOlRyYW5zZm9ybXM+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CjwvZHM6VHJhbnNmb3Jtcz4KPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+CjxkczpEaWdlc3RWYWx1ZT5pT3dpczQySXhYSFFtUk5kVzBVSlh4aU0wMW89PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgpZWVRCcmNhalNhdXZaSDlTZXBwZmFJU0trdnFsalFGMUt6d1Vqd0I5MHZBOUNtak0zYlZadllza091ak4yb1hHNWd6T05lU01oQ2VkCmVDbmhldjJnV2d3Ujl4dkRpOThzODZ3cXlhT3RyODZ2Mm9HQlZRT1N5ZU9Gc3NWQlNmMFBwc2M5RGpWZWczOFpSNzdaaHIvSUxBSWsKYzNuOXpPdzI4NUtKRkpGSUQ4UXhGNGgvNUw0OVd3RmdkcDdlMmJRNmJkNTRlZ2I0UDNoMGRLS244TWVmeXY5V0NCSE5weVZHN2tHagpPRXluN1lWZFd5dDV1K1ZhZXdFS3QrR3FaMk5zcjBybkNJWEFPdkR2b1hqYVZIT3dqTmVvWjhGZVpTTmQrWXVDTjlXZEVFS2NRZGNMCnNoT2tCY3ZFL0hMMzdGaEpveGRPU1B0L29wUDlYUzR5WUxXaTZRPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFNUQ0NBakdnQXdJQkFnSUVBb0xRL1RBTkJna3Foa2lHOXcwQkFRc0ZBREJWTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQpDQk1DUTBFeEZqQVVCZ05WQkFjVERVMXZkVzUwWVdsdUlGWnBaWGN4RFRBTEJnTlZCQW9UQkZkVFR6SXhFakFRQmdOVkJBTVRDV3h2ClkyRnNhRzl6ZERBZUZ3MHhOekEzTVRrd05qVXlOVEZhRncweU56QTNNVGN3TmpVeU5URmFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3cKQ1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlRXOTFiblJoYVc0Z1ZtbGxkekVOTUFzR0ExVUVDaE1FVjFOUE1qRVNNQkFHQTFVRQpBeE1KYkc5allXeG9iM04wTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFsdVpGZFcxeW5pdHp0a1dMCkM2eEtlZ2JSV3hreSs1UDBwNFNoWUVPa0hzMzBRSTJWQ3VSNlFvNEJ6NXJUZ0xCcmt5MDNXMUdBVnJaeHV2S1JHajlWOStQbWpkR3QKYXU0Q1RYdTlwTExjcW5ydWFjem9TZHZCWUEzbFM5YTd6Z0ZVMCtzNmtNbDJFaEIrcms3Z1hsdUVlcDdsSU9lbnpmbDJmNklvVEthMgpmVmdWZDNZS2lTR3N5TDR0enRTNzB2bW1YMTIxcW0wc1RKZEtXUDRIeFh5cUs5bmVvbFhJOWZZeUhPWUlMVk5aNjl6LzczT09WaGtoCi9tdlRtV1pMTTdHTTZzQXBteUxYNk9YVXA4ejBwa1krdlQvOSt6Unh4UXM3R3VyQzQvQzFuSzNySS8weVNVZ0dFYWZPMWF0TmpZbWwKRk4rTTN0Wlg2bkVjQTZnOTRJYXZ5UUlEQVFBQm95RXdIekFkQmdOVkhRNEVGZ1FVdFM4a0lZeFE4VVZ2VnJaU2RneWlkZTlPSHhVdwpEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQmZrNW1xc1ZVcnBGQ1lUWlpoT3hUUlJwR1hxb1cxRzA1Yk94SHhzNDJQYXh3OHJBSjA2ClB0eTlqcU0xQ2dSUHBxdlphMmxQUUJRcVpySGtkREUwNnE0TkcwRHFNSDhOVCt0TmtYQmU5WVRyZTNFSkNTZnN2c3d0TFZEWjdHRHYKVEhLb2pKalF2ZFZDelJqNlhINVRydXdlZmI0Qkp6OUFQdG5seUpJdmpIazFoZG96cXlPbmlWWmQwUU94TEFiY2R0OTQ2Y2hOZFF2QwptNmFVT3B1dHA4WG9ncjBLQm5FeTNVOGVzMmNBZk5aYUVrUFU4VmE1YlU2WGpueTh6R1FuWENYeFBLcDdzTXBnTzkzblBCdC9saVgxCnFmeVhNN3hFb3RXb3htbTZIWng4b1dROFU1YWlYalo1UktEV0NDcTRadVhsNndWc1V6MWlFNjFzdU81eVdpOD08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDJwOlN0YXR1cz48c2FtbDJwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbDJwOlN0YXR1cz48c2FtbDI6QXNzZXJ0aW9uIElEPSJfMDk3OTNhNWYwYTg1YWQ5ZWNhNjU3YzY1MjA0YTEzNjEiIElzc3VlSW5zdGFudD0iMjAyMC0wNS0yMVQxMjo1MzozOC4xMTFaIiBWZXJzaW9uPSIyLjAiIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj48c2FtbDI6SXNzdWVyIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm5hbWVpZC1mb3JtYXQ6ZW50aXR5Ij5zZWd1cmFuY2FobWwtd3NvMi5hbnMuZ292LmJyPC9zYW1sMjpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CjxkczpTaWduZWRJbmZvPgo8ZHM6Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CjxkczpSZWZlcmVuY2UgVVJJPSIjXzA5NzkzYTVmMGE4NWFkOWVjYTY1N2M2NTIwNGExMzYxIj4KPGRzOlRyYW5zZm9ybXM+CjxkczpUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CjwvZHM6VHJhbnNmb3Jtcz4KPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+CjxkczpEaWdlc3RWYWx1ZT5UREFqTkhZbGc0aHBiQzJqdHQ4WGV1dzBkcWs9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgpod28yWGVMbG5nQVQxUmVwVEJaU000cHd6Rk40NzJ4SUlnRlVGdWJmV3pVRmlEbk9qVlJnNXlqZGlkR0ZLNGdDSUdudjREVVF5MWRBCnM0YndCUEg1QTI1RGVNcXFYdStjOE1zUVRoRWgvUU5Nby9GUEJOZ1hhbWFhaUsvbG1IYjBzaENxVnhoZUFaVy9NMGp3alZvby93dUcKSklValF5VnhrTjVIbXVyS3hBdkFYRktxNVlod2NjZ2FmTGhCWU9oT24wK2tmRWFMK3JkSXk3VUpmbFRnUVFsUDAycTMzZm5FRnBOeAptdVBlb1JGSnRFenc1QTFpeVAyZWFrcEFGTnhTVDF1UCtwTHU0VlNiYkhZNyt2dUUzY0h6ZjJHR1Zzc1Y3V0FxZGgvK1c3Q3hyTzNuCkV6SFo5Q2NiUHpVNVo4dzJQd2FydUt3ZE1UR2FYOEpFVFhIWFBRPT0KPC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRFNUQ0NBakdnQXdJQkFnSUVBb0xRL1RBTkJna3Foa2lHOXcwQkFRc0ZBREJWTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRQpDQk1DUTBFeEZqQVVCZ05WQkFjVERVMXZkVzUwWVdsdUlGWnBaWGN4RFRBTEJnTlZCQW9UQkZkVFR6SXhFakFRQmdOVkJBTVRDV3h2ClkyRnNhRzl6ZERBZUZ3MHhOekEzTVRrd05qVXlOVEZhRncweU56QTNNVGN3TmpVeU5URmFNRlV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3cKQ1FZRFZRUUlFd0pEUVRFV01CUUdBMVVFQnhNTlRXOTFiblJoYVc0Z1ZtbGxkekVOTUFzR0ExVUVDaE1FVjFOUE1qRVNNQkFHQTFVRQpBeE1KYkc5allXeG9iM04wTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFsdVpGZFcxeW5pdHp0a1dMCkM2eEtlZ2JSV3hreSs1UDBwNFNoWUVPa0hzMzBRSTJWQ3VSNlFvNEJ6NXJUZ0xCcmt5MDNXMUdBVnJaeHV2S1JHajlWOStQbWpkR3QKYXU0Q1RYdTlwTExjcW5ydWFjem9TZHZCWUEzbFM5YTd6Z0ZVMCtzNmtNbDJFaEIrcms3Z1hsdUVlcDdsSU9lbnpmbDJmNklvVEthMgpmVmdWZDNZS2lTR3N5TDR0enRTNzB2bW1YMTIxcW0wc1RKZEtXUDRIeFh5cUs5bmVvbFhJOWZZeUhPWUlMVk5aNjl6LzczT09WaGtoCi9tdlRtV1pMTTdHTTZzQXBteUxYNk9YVXA4ejBwa1krdlQvOSt6Unh4UXM3R3VyQzQvQzFuSzNySS8weVNVZ0dFYWZPMWF0TmpZbWwKRk4rTTN0Wlg2bkVjQTZnOTRJYXZ5UUlEQVFBQm95RXdIekFkQmdOVkhRNEVGZ1FVdFM4a0lZeFE4VVZ2VnJaU2RneWlkZTlPSHhVdwpEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQmZrNW1xc1ZVcnBGQ1lUWlpoT3hUUlJwR1hxb1cxRzA1Yk94SHhzNDJQYXh3OHJBSjA2ClB0eTlqcU0xQ2dSUHBxdlphMmxQUUJRcVpySGtkREUwNnE0TkcwRHFNSDhOVCt0TmtYQmU5WVRyZTNFSkNTZnN2c3d0TFZEWjdHRHYKVEhLb2pKalF2ZFZDelJqNlhINVRydXdlZmI0Qkp6OUFQdG5seUpJdmpIazFoZG96cXlPbmlWWmQwUU94TEFiY2R0OTQ2Y2hOZFF2QwptNmFVT3B1dHA4WG9ncjBLQm5FeTNVOGVzMmNBZk5aYUVrUFU4VmE1YlU2WGpueTh6R1FuWENYeFBLcDdzTXBnTzkzblBCdC9saVgxCnFmeVhNN3hFb3RXb3htbTZIWng4b1dROFU1YWlYalo1UktEV0NDcTRadVhsNndWc1V6MWlFNjFzdU81eVdpOD08L2RzOlg1MDlDZXJ0aWZpY2F0ZT48L2RzOlg1MDlEYXRhPjwvZHM6S2V5SW5mbz48L2RzOlNpZ25hdHVyZT48c2FtbDI6U3ViamVjdD48c2FtbDI6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5BRE1XU08yQGNhcmJvbi5zdXBlcjwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2FiZDNmZjhiZjcwZmJjMjk1MzM0NjdiMGIyMzVmYTFjIiBOb3RPbk9yQWZ0ZXI9IjIwMjAtMDUtMjFUMTI6NTg6MzguMTExWiIgUmVjaXBpZW50PSJodHRwczovL3NlZ3VyYW5jYWhtbC13c28yLmFucy5nb3YuYnI6NDQzL2Rhc2hib2FyZC9hY3MiLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMC0wNS0yMVQxMjo1MzozOC4xMTFaIiBOb3RPbk9yQWZ0ZXI9IjIwMjAtMDUtMjFUMTI6NTg6MzguMTExWiI+PHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWwyOkF1ZGllbmNlPndzbzIubXkuZGFzaGJvYXJkPC9zYW1sMjpBdWRpZW5jZT48c2FtbDI6QXVkaWVuY2U+Y2FyYm9uU2VydmVyPC9zYW1sMjpBdWRpZW5jZT48L3NhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sMjpDb25kaXRpb25zPjxzYW1sMjpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjAtMDUtMjFUMTI6NTM6MzguMTEyWiIgU2Vzc2lvbkluZGV4PSIxMDQyMzRlYy04MjljLTRhYjMtOTZkMi00ZTZjMjcxZWY3ZDYiPjxzYW1sMjpBdXRobkNvbnRleHQ+PHNhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sMjpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWwyOkF1dGhuQ29udGV4dD48L3NhbWwyOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDI6QXNzZXJ0aW9uPjwvc2FtbDJwOlJlc3BvbnNlPg==

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.