我正在研究解决该问题的方法,即 glassfish 不支持虚拟主机的单独证书。
我的应用程序应该根据哪个客户想要访问其数据来运行上下文。我实际上想为此使用单独的域,但由于这是不可能的,所以我想出了一个不同的想法:
我想通过客户进入的路径来区分他们。 例如: www.application.com/customer1/pages/page.jsf 或 www.application.com/customer2/pages/page.jsf
但我不知道如何实现。据我所知,这些地址表示网络服务器上的路径。我可以以某种方式做到这一点,应用程序仍然可以找到页面吗?
我希望将这些条目(customer1 和 customer2)存储在外部文件中,这样我就可以添加新条目而无需触摸代码。
最佳答案
我假设您指的是 SSL 证书。我会考虑设置一个反向代理来处理多个域及其 SSL 加密,并将请求转发到 Glassfish 上的正常 HTTP。
在应用程序本身中,客户可以通过他们使用的登录名(角色/组,...)进行区分。如果简单地使用路径或域来区分,就可以很容易地访问来自不同客户的安全资源。如果您想获得域信息,只需在代理服务器中向传入的 HTTP 请求添加 header 即可。
对于此类代理的候选人,我可以推荐 NGINX这很容易设置。您还可以使用 Apache 或许多其他工具来执行此操作。
关于Java EE,按路径区分上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568536/