java中的Restful Web应用程序(安全性)

时间:2015-08-04 08:38:08

标签: java tomcat7 java-ee-6 restful-authentication glassfish-4

我们正在开发两个Web应用程序 应用程序A:在glassfish服务器上运行的Restful Web服务。 应用程序B:在Tomcat服务器上运行的Dynamics Web应用程序。

我只通过我的应用程序B访问应用程序A,我不希望任何其他应用程序访问我的应用程序A.为此,我计划在相应的服务器中安装客户端 - 服务器证书,以便我的应用程序A只能由我的应用程序B访问,我想阻止其他应用程序访问我的应用程序A.你能告诉我如何在相应的服务器中安装客户端 - 服务器证书????

如果有人有更好的选择,请解释我。

如果可能,请用示例解释。

谢谢

3 个答案:

答案 0 :(得分:0)

您在寻找身份验证和授权吗?如果是,你可以使用弹簧安全。如果您只查找具有某些用户标识和密码的身份验证(根级别访问),请使用基本身份验证。它将检查用户是否有效并且可以访问网址。

代码和更多信息检查网址。

how to implements Basic Authentication?

How to consuming RESTful webservices with basic authentication?

答案 1 :(得分:0)

当您使用Java时,我认为您使用的是Spring Framework,如果是这样,您可以使用Spring Session

在应用程序之间共享身份验证

答案 2 :(得分:0)

  1. 我有一些示例代码,使用纯java来做简单的&基本认证。它可能符合您的需求。
  2. 使用邮递员设置&未设置基本身份验证以进行测试。
  3. 好处:简单。除了javax.ws.rs。*
  4. 之外,不需要任何其他东西
  5. 只有当您对应用程序B(这与我的项目相同)100%控制时才可以,这是一个内部应用程序(不是公共访问的网页)
  6. 代码:

    //  to inject request 
    @Context
    private HttpServletRequest request; 
    
    @GET
    @Path("/testAuth")
    @Produces(MediaType.APPLICATION_JSON)
    public Response testAuth() {
        // TODO 
        // this is only a template for doing authentication in the near future
        String returnString = "";
    
        //check if authenticated
        String authorization = request.getHeader("Authorization");
        if (authorization == null || authorization.toUpperCase().startsWith("BASIC ") == false) {
            //no authenticated
            returnString =  "{\"testAuth\", \"need authentication\"}"; 
            return Response.status(401).entity(returnString).build();
        } else{
    
            String credentials = authorization.substring("Basic".length()).trim();
            byte[] decoded = DatatypeConverter.parseBase64Binary(credentials);
            String decodedString = new String(decoded);
            String[] actualCredentials = decodedString.split(":");
            String ID = actualCredentials[0];
            String Password = actualCredentials[1];
            String Result = userAuthenticate(ID, Password);
    
            returnString =  "{\"testAuth\", \"" + 
                " (" + Result + ") \"}";
            return Response.status(200).entity(returnString).build();
        }   
    
    }