没有表单的tomcat上的RESTful API身份验证/授权

时间:2014-10-10 17:32:03

标签: java angularjs rest tomcat authentication

使用Tomcat进行身份验证时,有没有办法关闭表单?

我在webapp中有一个RESTful API,没有任何UI,我希望通过AngularJS(一个不同的webapp)由不同的UI客户端提供登录表单和凭据。

对于服务器,我使用web.xml以声明方式要求安全约束,例如:

  <security-constraint>
      <web-resource-collection>
          <web-resource-name>Hello Services</web-resource-name>
          <url-pattern>/gbs/gbooks/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>hello-role2</role-name>
      </auth-constraint>
      <!--<user-data-constraint>-->
        <!--<transport-guarantee>CONFIDENTIAL</transport-guarantee>-->
      <!--</user-data-constraint>-->
  </security-constraint>

  <security-role>
    <role-name>hello-role2</role-name>
  </security-role>

  <login-config>
      <auth-method>FORM</auth-method> <!-- or BASIC -->
      <realm-name>default</realm-name>
  </login-config>

(最后我将添加领域,https等)我也在我的REST服务中使用CXF作为JAXRS端点,其中包含SecureAnnotationsInterceptor和jsr250 @RolesAllowed注释。

如果我使用FORM或BASIC上面的login-config,它可以工作,但我当然希望登录表单由客户端完成。如果省略login-form,那么tomcat似乎忽略了security-constraint,并且我的端点不需要身份验证。

重点是我只想要一个RESTful auth / auth服务,在那里我通过https发布凭据并取回成功(加上cookie或sessionId或我需要的任何内容)或401,403或419错误。我的客户端将是一个AngularJS应用程序,类似于此处描述的内容:

AngularJS example

可以这样做,或者更好的方法是什么?

0 个答案:

没有答案