问题标签 [container-managed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 如何在使用容器管理的安全性时从数据库中检索用户名、密码和角色,而不是从 tomcat-user.xml 中检索它们
我有一个部署在 Tomcat 中的 Web 应用程序。我想保护 url 路径管理/*下的所有页面。
我已经设置了容器管理的安全性,在 web.xml 文件中输入了下一个片段:
在 $CATALINA_HOME/conf/tomcat-users.xml 我有
一切正常。我得到一个登录框,我可以将自己验证为 userA。
但是,我希望能够通过使用 Web 应用程序直接存储新用户、更改用户密码等。
是否可以通过其他方式告诉 tomcat 获取用户、密码和角色?例如从数据库中检索它们的类。
c++ - 帮助我使这段代码异常安全
所以我有这个库代码,看...
在我的客户代码中......
我坚持的是异常安全。就目前而言,如果任何 Obj 构造函数抛出,或者 Thing 构造函数抛出,已经在向量中的 Objs 将会泄漏。向量需要包含指向 Objs 的指针,因为它们被多态地使用。而且,我需要在这里处理任何异常,因为这是从不知道异常的旧代码库中调用的。
在我看来,我的选择是:
- 将客户端代码包装在一个巨大的 try 块中,并清理 catch 块中的向量。
- 在所有分配周围放置 try 块,其中的 catch 块调用公共清理函数。
- 一些我还没有想到的基于 RAII 的聪明想法。
- 平底船。实际上,如果构造函数抛出异常,应用程序无论如何都会陷入火海,但我想更优雅地处理这个问题。
java - 使用 web.xml 之外的容器管理安全配置安全约束的替代方法?
如果您使用 Java EE 6 容器管理的安全性,您可以为 web.xml 部署描述符中的资源配置安全约束。有没有其他方法可以做到这一点?
例如,容器可以从数据库中获取它们,就像处理用户数据一样。
这样的事情可能吗?我想要一种不需要重新部署 webapp 的方法。
提前致谢。
java - 如何从容器管理的事务提交中捕获异常?
我有一个@Stateless
带有@WebService
接口的 EJB,使用容器管理的事务,这意味着事务在调用方法后由容器自动提交,如果它不引发系统异常。
如果我尝试对EntityManager.persist(...)
具有唯一约束的列使用具有相同值的两个对象,则容器将PersistenceException
在我的代码之外提交时向客户端抛出一个。我如何捕捉这个异常,以便我可以重新抛出我自己的应用程序异常?
我是否必须在我的方法中手动提交事务才能在提交时捕获异常?(EntityManager.flush()
这样做是正确的方法吗?)如果是这样,容器管理事务的意义何在?
java - Weblogic 10.3:在 WLS 控制台中使用 web.xml 和 DB 角色的 Webapp 安全性
设想
我们正在使用 Weblogic Server 10.3.4 运行我们的 web 应用程序,该应用程序启用了安全约束,以要求用户在他/她可以使用该应用程序之前登录。用户和组信息应驻留在应用程序数据库中,身份验证应由 WLS(容器)处理。
我已经按照这篇博客文章中的描述设置了一个数据库模式,在 WLS 控制台中设置了一个新的安全领域“app.realm”并在SQLAuthenticator
其中定义了一个。
重新启动 WLS 后,我可以在 WLS Web 控制台的“app.realm”中的数据库中看到我的用户和组定义。我尝试验证的用户是该WEBAPP_USER
组的成员(我在 WLS 控制台的用户详细信息页面上看到了组成员身份)。
当我部署应用程序(使用标准设置,未在 WLS Web 控制台中进行调整)并调用受保护的 URL 时,我会login.html
按预期重定向到表单。但是,无论我尝试什么,输入(正确的)密码总是会导致身份验证失败,将我发送到该login_error.html
页面。出于调试目的,我在我的 中启用了纯文本密码SQLAuthenticator
,所以我很确定使用了正确的凭据。
更新 1
感谢 emzy 的评论,我现在看到 WLS 正在根据默认领域“myrealm”检查凭据,并尝试根据嵌入式 LDAP 解析登录用户名:
更新 2
我现在执行了这些步骤并使身份验证工作:
- 在 WLS 控制台中添加
SQLAuthenticator
到默认领域“myrealm” - 在各自的提供程序设置中设置 Weblogic
DefaultAuthenticator
和新SQLAuthenticator
的SUFFICIENT
(“JAAS 控制标志”他们如何称呼它) - 重启 WLS
不过,还有一个问题:
问题
除了文件夹中的标准日志文件之外,WLS 是否还有一些额外的日志记录<domain>/server/AdminServer/logs
,我可以在其中看到发生了什么?我做错了什么/为了让我的基于表单的身份验证与我的应用程序一起工作,我错过了难题的哪一部分?- 当我在我的 中明确给出“app.realm”时,为什么 WLS 使用“myrealm”进行身份验证
web.xml
?
这是我的配置详细信息:
web.xml
weblogic.xml
登录.html
transactions - EJB 中的一些 CMT 和 BMT 疑虑?
在会话 bean 中使用 CMT 时,我们在哪里提交事务?
使用 REQUIRES_NEW 属性容器创建一个新事务,调用者事务被挂起只要更好地理解 REQUIRES_NEW ,它是否通过将事务与新连接关联来实现上述行为。一旦完成当前事务,它会假设以前的连接?当新事务发生提交时?
有人可以指出我使用 JDBC 的会话 bean 的简要 eamxple CMT 和 BMT。基本上看我们如何在 CMT 和 BMT 中获得连接、提交、回滚
在 CMT 中,事务管理器完成与当前线程关联的事务。我的问题是它如何提交事务。我知道使用连接提交事务,但在这里如何知道与当前线程关联的连接,如在一个示例中,我看到使用 new 运算符在方法内创建连接。
java - 受保护的 URL 将 webapge 的未受保护组件泄露给未经身份验证的用户
<login-config>
我相信通过++<security-constraint>
和<security-role>
通过使用实现 JSF 应用程序的安全性<filter>
是两种不同的方式!?他们是吗?
我尝试通过上面的第一种方法(使用 <login-config>
+ <security-constraint>
+ <security-role>
)实现安全性,但发现我的受保护网页同时使用受保护和不受保护的 HTML 组件,甚至向未经身份验证的用户提供了不受保护的资源。
我需要完全保护 URL,以便受保护的 URL 甚至不会将该网页的任何部分泄露给未经身份验证的用户。我该怎么做?
而且,安全实施是否<filter>
以web.xml
自我管理的方式来处理安全问题?我相信然后您可以在过滤/捕获每个请求时更细粒度地自定义安全性?
hibernate - Glassfish/Hibernate 保存而不显式调用保存
我正在使用 Glassfish 2 和容器管理的持久性以及 Hibernate 3.2 作为持久性提供程序。我的业务逻辑中有一些 finder 方法,它操作一些持久实体,这些实体是通过EntityManager
. 操作只是更改一个String
属性(从集合中删除一个元素会导致相同的效果)。
我不会在我的EntityManager
. 我只想将一些更改的实体返回给我的客户。
似乎当容器提交事务时,对我的实体的更改会自动保存。到目前为止我是否完全错过了一些神奇的 Hibernate 或 Glassfish 行为?
java - Java 容器管理的安全性未重定向到登录页面
我有一个在 GlassFish 3 上构建的 JSF 2 Web 应用程序。我正在使用容器管理的安全性来处理登录。我的网络应用程序中的每个页面都需要安全。所有页面与登录页面一起位于根目录中。问题是当我输入一个 URL 以直接访问受保护的页面时,即使用户未登录,它也会显示。我希望我网站上的每个页面都受到保护,但登录页面除外,因此用户必须访问该站点通过这个登录页面。有什么想法为什么在用户未登录时它不阻止对其他页面的请求?
这是我的 web.xml 中的相关片段: