【问题标题】:Spring production ready authentication with OAuth2 [closed]使用 OAuth2 进行 Spring 生产就绪身份验证 [关闭]
【发布时间】:2021-06-16 09:03:19
【问题描述】:

我正在寻求帮助,帮助我选择正确、最现代和最安全的身份验证方式。我在前端使用 Spring 作为后端以及 Angular。我会补充一点,我想使用 OAuth2。我真的搜索了很多网站并没有找到直接的答案。我真的很困惑……

我从this implementation 开始,但在阅读this recommendations 后就停止了。到目前为止,我知道我应该将授权代码授予与 PKCE 一起使用。

它是如何在已经投入生产的应用程序中完成的? 到目前为止,最明智(我认为)的选择是使用 Keycloak 实现身份验证。 embedded version可靠吗?

【问题讨论】:

    标签: spring spring-security oauth-2.0 authorization


    【解决方案1】:

    如果您想使用 OAuth 保护您的 API,那么您可以使用许多产品(开源和付费解决方案,如果您搜索“身份服务器”,您应该能够找到一些解决方案)。 Keycloak 是一个可行的选择,但还有其他选择。

    在选择流程时,我也会使用 PKCE 的授权代码授予。这是目前推荐的方式,特别是如果您将直接从 Angular 应用程序执行 OAuth 流。

    这是您必须做出的另一个决定 - 您是否希望前端客户端直接联系授权服务器(然后您必须在前端应用程序中处理令牌),或者您希望调用您的后端并让后端与授权服务器(那么您可能会有一个会话 cookie,并将会话与任何访问令牌相关联)。

    【讨论】:

    • 感谢您的回复。我知道除了 Keycloak 还有其他一些产品。我选择这个是因为它是免费的。我认为最好的选择是使用以下流程登录:Angular Spring Keycloak Auth Server
    • 身份验证对我来说是新话题,我不想搞砸任何事情。据我了解:首先我应该安装 Keycloak,而不是在 Spring Application 中使用适配器。 Keycloak 将为我处理 PKCE 身份验证并将访问令牌返回给我的 Spring 应用程序,而不是我应该将令牌返回给 Angular 应用程序并使用它在我的应用程序中进行身份验证,或者我应该生成一个仅在我的应用程序中有效的新令牌......?
    • 在您描述的这个设置中,PKCE 将发生在 Spring 和 Keycloak 之间。 Spring 必须生成代码质询,Keycloak 将随后在发布令牌时对其进行验证。至于访问令牌 - 是否将访问令牌从 Keycloak 发送到 Angular,或者创建会话/不同的令牌,由您决定。
    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2019-03-18
    • 2014-09-15
    • 2015-07-30
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多