我有多个 Web 应用程序,前端使用 angularjs,后端使用 servlet。使用 ajax 调用发出请求。然后,Servlet 初始化 Java 对象,该对象使用 JDBC 连接获取数据并返回结果。
- 如何为多个应用程序实现单点登录?
- 我是否需要向现有项目添加身份验证代码,还是应该实现单独的项目进行身份验证并跨应用程序使用它?
最佳答案
只是好奇,你见过 Storm 之路吗Java SDK ?还有一个功能叫做 ID Site这为您构建的应用程序提供了一个登录位置(如果您想使用它 - 它是可选的)。
Stormpath Java SDK 更新很快就会发布,它可以为基于 servlet 的 Web 应用程序进一步实现自动化,包括通过 OAuth 2 进行 token 身份验证。例如:
- 用户在 AngularJS 登录面板中输入用户名/密码。
- 用户名/密码将发送到其中包含 Stormpath SDK 的 Java Web 应用。
- SDK 对用户进行身份验证,并在响应正文或 Cookie(或两者)中返回安全身份 token (实际上是 JWT )。
- 您的 Angular 应用会获取该 token ,并在所有 future 请求中将其发送到您的网络应用。
- SDK 会对 token 进行身份验证并查找相应的用户帐户。
- 用户帐户附加到 ServletRequest,以便在请求处理期间随时进行访问(例如,
Account account = request.getAttribute("account");
无需服务器端编码即可启用此功能:)
如果您想尽早尝试此功能,请使用以下分支:https://github.com/stormpath/stormpath-sdk-java/tree/servlet-module
还有一个示例应用程序展示了如何启用它:https://github.com/stormpath/stormpath-sdk-java/tree/servlet-module/examples/servlet
该 SDK 通过商业友好型 Apache 2 许可证实现 100% 开源。
披露:我是 Stormpath 的 CTO,同时也是开源安全倡导者 - 无论您是否使用 Stormpath,我都希望看到每个人都可以轻松保护应用程序。
关于java - Java 中多个 Web 应用程序的单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26787201/