Keycloak

Keycloak 简介

Keycloak是一个开源的身份和访问管理解决方案。其主要目标是通过极少或无需编码的方式简化服务和应用的安全保护。Keycloak的特点包括:

  • 集中认证和实现单一登录(SSO)。

  • 允许开发人员专注于业务功能,而无需担心授权和认证等安全问题。

  • 支持双因素认证。

  • 符合LDAP标准。

  • 提供多个适配器,轻松保护应用程序和服务器。

  • 允许自定义密码策略。

Keycloak 安全性组件

Keycloak的安全性可分解为四个组件:受保护资源资源所有者应用程序认证/授权服务器。上图展示了这四个组件之间的交互:

  • 受保护资源:需要保护的资源,确保只有经过身份认证且具有适当授权的用户可以访问。

  • 资源所有者:所有者定义了哪些应用程序被允许调用服务,哪些用户被授予对服务的访问权限,以及用户对服务可以执行什么操作。每个应用程序注册时都分配一个应用程序名称和一个密钥,这是在认证访问令牌时传递的凭据的一部分。

  • 应用程序:代表用户调用服务的应用程序。

  • 认证/授权服务器:认证服务器是应用程序和被消费的服务之间的中介。它允许用户进行身份认证,而无需将用户凭据传递给应用程序。

Keycloak的安全组件相互协作,对服务用户进行身份认证:

  • 用户通过提供凭据,和用于访问受保护资源的应用程序/设备进行身份认证。

  • 如果用户的凭据有效,Keycloak服务器提供一个身份认证令牌该令牌可以在用户每次使用服务时从一个服务传递到另一个服务

Authentication vs. Authorization

  • 认证(Authentication) 是用户通过提供凭据来证明他们是谁的过程。

  • 授权(Authorization) 则确定用户是否被允许执行他们想要进行的操作。

示例:设置认证和授权

为了了解如何设置认证和授权,我们将执行以下步骤:

  1. 将Keycloak服务添加到Docker中。

  2. 配置Keycloak服务并注册 learning 应用程序作为已授权的应用程序,该应用程序可以对用户身份进行认证和授权。

  3. 使用Spring Security保护O-stock服务。

  4. 保护 licensing 和 organization 服务,以便它们只能被经过身份认证的用户调用。

Last updated