我有一个使用 Spring 和 Spring Security 构建的 Web 应用程序,允许用户通过 Facebbok 注册以太或创建一个帐户,在这两种情况下都会创建一个 Web 应用程序帐户。所以两种注册方法如下:
- 直接在网络应用上注册:用户名和密码存储在数据库中。
- 通过 facebook 注册:用户登录 facebook (Outh),网络应用程序从 facebook 检索数据以填写注册表。Web 应用程序提示用户创建 Web 应用程序帐户。在我的数据库中,我存储了网络应用程序用户和 facebook 数据(访问令牌等),以便第二次尝试登录时,我可以将 facebook 帐户与网络应用程序帐户匹配(我使用 spring social)。
现在我正在为移动应用程序创建一个休息服务,它需要身份验证。我使用基本的 http 身份验证来访问 Web 服务。
我现在的问题是如何使用 Spring Security 在我的 Web 应用程序中登录用户?
我的想法是:
- 移动应用程序登录 facebook 并检索 access_token(尚未与 Web 应用程序服务器联系)
- 移动应用程序向 Web 应用程序发送访问令牌
- Web 应用程序使用 db 或直接使用 facebook 检查访问令牌是否有效
- 如果访问令牌有效,则应用程序将用户名和密码发送回移动应用程序(可以使用私钥算法加密)
- 一旦收到 Web 应用程序用户和密码,用户就会通过身份验证,并且此信息将存储在移动设备上并用于 http 身份验证。
你认为这个流程安全吗?你还有其他想法吗?
先感谢您