首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 6程序安全、glassfish和JDBC领域

Java 6程序安全、glassfish和JDBC领域
EN

Stack Overflow用户
提问于 2013-04-18 13:45:58
回答 2查看 2.8K关注 0票数 3

我正在探索实现编程安全的纯Java方法,特别是基于我的glassfish服务器的jdbc领域的登录用户。

所以,基本上,在我的登录servlet中,我正在做

代码语言:javascript
复制
String username = request.getParameter("username");
String password = request.getParameter("password");

try {
    request.login(username, password);
....

在我的web.xml中不执行任何操作,就会使用默认的领域(文件)。我不想那样,我想使用名为jdbcsecurerealm的jdbcRealm。

因此,我要在我的web.xml中添加以下内容

代码语言:javascript
复制
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbcsecurerealm</realm-name>
</login-config>

请注意,我没有添加任何表单登录配置来定义表单登录页面和表单错误页面。

如果我定义了安全约束,例如

代码语言:javascript
复制
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Pages</web-resource-name>
        <description></description>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>administrator</role-name>
    </auth-constraint>
</security-constraint>

好吧..。起作用了!request.login检查我的jdbcRealm,如果我尝试访问安全页面而不被登录,那么我将得到一个不错的403。

但是,我似乎把声明性安全和编程性安全混为一谈,因为我觉得我不应该在web.xml中声明任何东西,而应该使用request.isUserInRole。

问题

我是碰到了玻璃鱼特有的行为,还是允许在没有窗体登录-配置的情况下使用在request.login中定义的jdbc领域的编程安全性(request.login)?

Update我刚刚看到有可能在glassfish-application.xml中指定一个领域,为了指定领域,构建ear而不是war是更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-19 07:03:12

当您使用特定于容器的(专有的)登录模块(如GlassFish JDBC登录模块/领域)时,不可能采用可移植(纯Java )的纯编程方法。

Java 6中有这样一个API : JASPIC。使用该API (技术上的SPI),您可以构建可移植的身份验证模块,并对它们进行完全编程配置,而不需要任何声明。

我写了一个关于这个的博客文章,希望能为您提供更多的细节。

票数 3
EN

Stack Overflow用户

发布于 2013-04-18 14:09:23

那么,web应用程序的安全性有两个方面:身份验证和授权。这里使用的是编程身份验证(用户登录的方式)和声明性授权(定义允许用户查看的内容)。在我看来,两者混合是没有问题的。

如果您将您的领域保留在您的web.xml中,您的应用程序将更加可移植。(这意味着您可以将war部署在tomcat服务器中,而不需要更改)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16084710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档