宁静的Web服务的范围(请求,会话,应用程序)

时间:2013-12-27 14:17:51

标签: java restful-authentication

休息完整申请的范围是什么。实际上我想创建一个Login模块,这样只有在认证成功后才能访问下一个web服务。

2 个答案:

答案 0 :(得分:0)

以下是如何为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>

您还需要创建一个自定义数据库领域,它知道所有用户和密码在数据库中的位置。此Realm需要映射到此应用程序。每个应用程序服务器都可以使用它自己的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

答案 1 :(得分:0)

这里是...... JAX-RS根资源类在请求范围内进行管理。 因此,默认请求作用域,并且不需要注释来指定范围。任何方式,CDI(上下文或二进制注入)托管bean注释为 @RequestScoped或@ApplicationScoped可以转换为JAX-RS资源类。