我正在努力增强现有的GWT项目,我正在使用PING添加身份验证。
所以这是流程:
- 用户输入应用程序 URL http://...../library-ui
- 我想使用 servlet 过滤器来过滤所有 URL 并检查 URL 中的代码参数,如果我在 URL 中看不到代码参数,我想将它们重定向到 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);
打印 - 库-UI。
一旦我从 URL 获得代码,我将能够继续前进。
我能够解决这个问题,我不得不使用 window.location 从浏览器获取详细信息并对服务器端执行 RPC 调用。然后,我必须使用授权代码请求 JWT 令牌的 PING 并对其进行验证。