我们正在开发两个Web应用程序 应用程序A:在glassfish服务器上运行的Restful Web服务。 应用程序B:在Tomcat服务器上运行的Dynamics Web应用程序。
我只通过我的应用程序B访问应用程序A,我不希望任何其他应用程序访问我的应用程序A.为此,我计划在相应的服务器中安装客户端 - 服务器证书,以便我的应用程序A只能由我的应用程序B访问,我想阻止其他应用程序访问我的应用程序A.你能告诉我如何在相应的服务器中安装客户端 - 服务器证书????
如果有人有更好的选择,请解释我。
如果可能,请用示例解释。
谢谢
答案 0 :(得分:0)
您在寻找身份验证和授权吗?如果是,你可以使用弹簧安全。如果您只查找具有某些用户标识和密码的身份验证(根级别访问),请使用基本身份验证。它将检查用户是否有效并且可以访问网址。
代码和更多信息检查网址。
how to implements Basic Authentication?
How to consuming RESTful webservices with basic authentication?
答案 1 :(得分:0)
当您使用Java时,我认为您使用的是Spring Framework,如果是这样,您可以使用Spring Session
在应用程序之间共享身份验证答案 2 :(得分:0)
代码:
// 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();
}
}