【问题标题】:Scope of a restful webservice(request,session,application)RESTful Web 服务的范围(请求、会话、应用程序)
【发布时间】:2014-02-25 21:07:27
【问题描述】:

什么是完整应用程序的范围。其实我想创建一个 Login 模块,这样只有在认证成功后才能访问下一个 web-service 。

【问题讨论】:

  • 范围是什么意思?为什么要创建自定义登录模块?您只需在名为 web.xml 的部署描述符文件中控制身份验证和授权

标签: java restful-authentication


【解决方案1】:

以下是如何将声明性容器管理的安全性用于 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>

由于&lt;ulr-patter&gt; 表达式的使用非常有限,因此这种安全性可能无法满足您的所有限制要求。在这种情况下,您可能需要使用编程安全性。更多信息请查看Oracle's documentation site

【讨论】:

    【解决方案2】:

    在这里.. JAX-RS 根资源类在请求范围内进行管理。 因此,默认情况下,其余的 web 服务案例是请求范围的,并且不需要注释来指定范围。无论如何,CDI(上下文或双端注入)托管 bean 都带有注释 @RequestScoped 或 @ApplicationScoped 可以转换为 JAX-RS 资源类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2011-02-18
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      相关资源
      最近更新 更多