我正在开发 2 个 Grails 应用程序 - A 和 B - 我想支持以下用例
如果用户有 A 的帐户,他们也可以使用它来注册/登录 B(与您可以使用 Twitter、Google 等凭据注册/登录到 http://stackoverflow.com 的方式大致相同)。同理,如果用户有B的账号,可以用来注册/登录A。用户还可以选择在每个站点上使用单独的帐户,即他们不会被迫在 B 上使用其 A 凭据(反之亦然)如果用户已使用其 A 凭据向 B 进行身份验证(反之亦然),这将在 2 个站点之间建立信任,允许 A 调用 B 的 API 以检索有关用户的其他信息。需要有一种机制来确保 API 只能被同意在两个站点之间共享身份验证数据的用户调用。 理想情况下,我想使用基于标准的方法,例如通过使每个站点成为 OAuth 消费者/提供者,但我不确定哪些标准是最相关的标准。如果有任何插件可以帮助我实现解决方案,那么了解这也很有用。
我认为 Stormpath正是您需要的:
具有不同 SDK 的用户管理 API:node.js、express、java、rest、python、flask。 现成的托管登录:登录、注册和密码重置。 现成的 ID 站点支持跨应用程序的单点登录 用户的 API key ,使用 HTTP Basic Auth 或 OAuth2 进行保护
社交登录:Facebook、谷歌、LinkedIn、Github 与 Shiro 和 Spring Security 集成 与 Active Directory 和 LDAP 集成 在第 3 个项目符号中,您正在谈论
SSO .您可以使用 Stormpath 和 Shiro 实现这一目标。请
read here .
免责声明,我是 Stormpath 的贡献者。