【发布时间】:2014-02-25 21:07:27
【问题描述】:
什么是完整应用程序的范围。其实我想创建一个 Login 模块,这样只有在认证成功后才能访问下一个 web-service 。
【问题讨论】:
-
范围是什么意思?为什么要创建自定义登录模块?您只需在名为 web.xml 的部署描述符文件中控制身份验证和授权
标签: java restful-authentication
什么是完整应用程序的范围。其实我想创建一个 Login 模块,这样只有在认证成功后才能访问下一个 web-service 。
【问题讨论】:
标签: java restful-authentication
以下是如何将声明性容器管理的安全性用于 Java Web 应用程序的示例:
添加强制使用 HTTPS 的约束
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL Secured WebService</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
防止非管理用户插入、更新和删除位于:/services/products/*
<security-constraint>
<web-resource-collection>
<web-resource-name>Authenticated administrators only</web-resource-name>
<url-pattern>/services/products/*</url-pattern>
<http-method>POST</http-method>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
强制执行基本身份验证
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>BookStore-Authentication-REALM</realm-name>
</login-config>
定义安全角色 ADMIN
<security-role>
<role-name>ADMIN</role-name>
</security-role>
您还需要创建一个自定义数据库领域,它知道所有用户和密码在数据库中的位置。这个领域需要映射到这个应用程序。每个应用程序服务器都可以使用自己的 shema 来完成此操作。下面是 JBoss AS 7.1 的示例
在WEB-INF 文件夹中创建一个jboss-web.xml 文件,其中包含以下内容。
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<security-domain>RealmName</security-domain>
</jboss>
由于<ulr-patter> 表达式的使用非常有限,因此这种安全性可能无法满足您的所有限制要求。在这种情况下,您可能需要使用编程安全性。更多信息请查看Oracle's documentation site
【讨论】:
在这里.. JAX-RS 根资源类在请求范围内进行管理。 因此,默认情况下,其余的 web 服务案例是请求范围的,并且不需要注释来指定范围。无论如何,CDI(上下文或双端注入)托管 bean 都带有注释 @RequestScoped 或 @ApplicationScoped 可以转换为 JAX-RS 资源类。
【讨论】: