我目前正在使用 JSF(前端)、JPA、EJB 和 CDI(后端)开发“基本”Java EE 6 应用程序。到目前为止一切都运转良好。
对于登录部分,我选择了基于表单的身份验证以及 JDBC-Realm。
现在我想提供一些 REST 服务 (Jersey),这些服务将由移动设备使用。因此我需要添加第二种方式进行身份验证。但根据我的理解,一次只能有一个。
我已经尝试过一些 PoC,但每次调用需要有效用户的 REST 服务时,该服务都会重定向到登录页面。
是否有处理此类问题的最佳实践?
是否可以将 Oauth 添加到当前登录机制中,因为我不想在每个请求中发送用户/密码或 session ID。某种 token 会很棒。
最佳答案
如果您的应用程序需要针对不同服务使用不同的身份验证机制,那么大多数 Java EE 实现(服务器)附带的登录模块实际上还不够。
您可能必须通过编写自定义登录/身份验证模块来亲自处理问题。 Java EE 6 有一个 API:JASPIC。或者,您可以使用特定服务器的专有登录模块 API。
在该登录/身份验证模块中,您可以检查请求,确定该请求属于哪个服务,然后委托(delegate)给适当的“真实”模块。
我写了an article about JASPIC不久前这可能会让你开始。
服务器通常有 an option to stack login modules 。这是一项专有功能,因此其中一个允许堆叠身份验证机制的可能性非常小。
关于security - Java EE 6 App不同的登录方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508909/