java - OAuth 2 是保护无需社交登录的简单 Web 应用程序的方法吗?

标签 java security oauth-2.0 session-state

我最近一直在尝试为新应用程序实现身份验证,但在执行此操作时遇到了一个兔子洞,这给我留下了许多问题。

我知道目前围绕此的流行词是 OAuth 2 或 JWT,我们就是这样开始实现的。但是,当您的应用程序是私有(private)应用程序,不使用任何社交登录并且永远不会与任何其他应用程序共享其用户帐户以允许任何类型的 SSO 时,我不知道有什么好处(如果有的话)。据我所知,对于此应用程序来说,实现依赖于 cookie session 的典型身份验证机制要容易得多。我的假设正确吗? Facebook 或 Twitter 如何让用户在其 native 网络应用程序中保持登录状态?据我所知,Facebook 使用 cookie。

我知道我将来可能会遇到的一个问题是是否会有移动应用程序,因为 cookie 不能很好地与这些应用程序配合使用。在这种情况下,使用基于 token 的方法可以解决问题吗?我是否可以简单地用 token 替换 sessionId 并使用 Authentication: Bearer 类型,该类型在每个请求中都进行验证,就像 session 一样?我知道 JWT 会通过直接在 token 中添加信息来简化此操作,因此无需在服务器端进行任何查找。但我读过一种使这些 token 无效的方法,即保留一个黑名单来运行它们,以防安全漏洞或仅仅因为用户已被删除。这实际上不会使实现类似于服务器在使用 session 时执行的查找吗?

谢谢。

最佳答案

通过使用一些标准的 sso 解决方案,例如 oauth 2、saml2 等,您可以使您的应用程序准备好接受“登录数据库”之外的其他登录提供程序

如果您的客户不想多次登录并且他们拥有 oath2/saml2 基础设施(例如 Azure Active Directory),这可能会很有用。

您可以通过不同的方式决定如何“记住客户端已通过身份验证”,但最好是使用您正在开发的平台的标准。

关于java - OAuth 2 是保护无需社交登录的简单 Web 应用程序的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45526910/

相关文章:

security - 最安全的 OpenID 实现

c++ - 安全的 C++ 编码实践

python - 使用 PyQt4/5 隐式 OAuth2 授权

javascript - OAuth2认证js客户端

java - 如何让 EDT 等待后台线程?

java - 按键不起作用

java - 这种 AES 加密是否足够安全?

java - 用户在数组中输入 10 个数字,我该如何编写代码来查找该数字并输出它在数组中的位置?

java - 如何给JBoss打JDK 6补丁

php - 通过 CURL 尝试 OAuth2 - 请求中未指定授权类型