使用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应用程序,类似于此处描述的内容:
可以这样做,或者更好的方法是什么?