如何将 URL 参数从 GWT 客户端发送到服务器端进行验证
Posted
技术标签:
【中文标题】如何将 URL 参数从 GWT 客户端发送到服务器端进行验证【英文标题】:How to send URL parameters from GWT client to Server side for validation 【发布时间】:2017-04-12 23:58:01 【问题描述】:我正在改进现有的 GWT 项目,我正在使用 PING 添加身份验证。
这就是流程:
-
用户输入应用程序 URL http://...../library-ui
我想使用 servlet 过滤器过滤所有 URL 并检查 URL 中的 code 参数,如果我没有在 URL 中看到 code 参数,我想将它们重定向到 PING 身份验证 URL。
一旦 PING 验证它会重定向到http://...../library-ui/?code=xxxxxx
此“代码”是获取与用户相关的 JwT 令牌所必需的
我在下面添加一个过滤器:
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException
HttpServletRequest httpRequest = (HttpServletRequest) request;
System.out.println(httpRequest);
String requestURI = httpRequest.getParameter("code");
System.out.println(requestURI);
if (!requestURI.contains("code"))
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("https://pingwebsite/as/authorization.oauth2?client_id=XXX&response_type=code");
filterChain.doFilter(request, response);
但问题是我的请求 URI 没有代码参数。
System.out.println(requestURI);
打印 - library-ui。
一旦我从 URL 中获得代码,我就可以继续进行。
【问题讨论】:
这不会是安全的。您如何使用 OpenID Connect 库而不是在没有完全理解的情况下自行开发?redirect_uri
s 应该设置 cookie 和重定向。
在 URL 中我只获得 Auth 代码,这没有关于用户或令牌的任何信息。一旦我得到这个,我将调用后端服务器来获取实际的令牌。让我知道它是否仍然容易受到攻击,我是 GwT 世界的新手,任何指导都将不胜感激。
我建议您仔细查看tools.ietf.org/html/rfc6819
3 个问题:1)String requestURI = httpRequest.getParameter("code");
这不是requestUri
,它是代码参数,这实际上是你需要的。 2)if (!requestURI.contains("code"))
这不是正确的控制。你已经有了代码。您应该检查 not null 且不是空字符串 3) 在此 httpResponse.sendRedirect(.....
之后您没有返回语句,因此过滤器将继续处理请求,就好像它通过了控制一样。
【参考方案1】:
我能够解决这个问题,我必须使用 window.location 从浏览器获取详细信息并对服务器端执行 RPC 调用。然后,我必须使用授权码向 Jwt 令牌请求 PING 并对其进行验证。
【讨论】:
以上是关于如何将 URL 参数从 GWT 客户端发送到服务器端进行验证的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 fileUpload 在 GWT 中将文件从客户端传输到服务器