iServer GPA 免登录访问方案:Token + Nginx 反向代理

作者:laughterhxy

前言

SuperMap GPA 是 SuperMap 提供的可视化地理处理建模工具,在 iServer 中以 Web 应用形式运行,支持通过浏览器拖拽构建和执行模型。在项目中,常需将 iServer 上的 GPA 页面集成到自有系统中。本文介绍一种安全、免密、无需前端存储凭证的方案——通过 Token 认证结合 Nginx 反向代理,实现对 GPA 页面的无缝免登录访问。

一、详细操作步骤

1. 申请访问令牌(Token)

  •   登录 SuperMap iServer 管理界面(例如:http://localhost:8090/iserver);
  •  进入菜单 【用户】→【令牌】;
  •  点击 【生成令牌】,填写以下信息:
    • 用户名/密码:iServer 的登录账号密码;
    • 客户端标识类型;
    • 有效期:根据项目需求设置(支持长期有效);
  • 点击生成,复制返回的 令牌字符串(形如 eyJhbGciOiJIUzI1NiIs...)

2.配置nginx反向代理

通过 Nginx 在请求转发时自动携带 Token,使 iServer 认为该请求已通过身份验证,关键配置如下:

server {
    listen 8081;
    server_name localhost 127.0.0.1;

    # 将申请的 Token 存储在变量中(避免硬编码在多处)
    set $real_token "tPp0b5bsQonlehO39Z8hJzePb9bvLPH8YUK7KNk7qmN3O3echo0b9h8q3NWeoEUZA3QGUC8eAqT8XIQJ7Xx2NmfB";

    location / {
        if ($request_uri ~ "^(/iserver/.*)\?([^#]*&)?token=$") {
            return 302 $scheme://$host:$server_port$1?$2token=$real_token;
        }

        # 反向代理到真实 iServer 地址
        proxy_pass http://172.16.13.79:8090;  # 替换为你的 iServer 实际 IP 和端口

        # 透传原始请求信息
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 关键:将 Token 通过请求头传递给 iServer
        proxy_set_header token $real_token;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
}

3.访问GPA页面

配置完成后,重启nginx,然后直接访问

http://localhost:8081/iserver/apps/gpmodeler/index.html

二、注意事项

1.当将单页面嵌套到系统中可能会出现如下报错

【问题原因】SuperMap iServer 默认启用了 Clickjacking 防护(防嵌套攻击)

【解决办法】修改iServer根目录\webapps\iserver\lWEB-INF\web.xml中

  • 不做限制:将antiClickJackingEnabled的param-value设置为false
  • 需要限制将antiClickJackingOption的param-value设置为ALLOW-FROM http://xxx 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值