我试图围绕bearer-onlyKeycloak中客户的概念。
我了解公共与机密的概念以及服务帐户和其他grant_type=client_credentials东西的概念。但是bearer-only,我被卡住了。
谷歌搜索只显示讨论的片段说:
您无法通过
bearer-only客户端从 keycloak 获取令牌。
文档也不清楚。他们只说:
不记名访问类型意味着应用程序只允许不记名令牌请求。
好的,如果我的应用程序只允许不记名令牌请求,如果我无法使用客户端 ID/客户端密码从 Keycloak 获取该令牌,我该如何获取它?
如果你不能获得令牌,你能得到什么?为什么会有这些客户?有人可以提供一个使用这种类型客户端的例子吗?
Sub*_*shi 40
Bearer-only 接入类型含义
不记名访问类型意味着应用程序只允许不记名令牌请求。如果启用此功能,则此应用程序无法参与浏览器登录。
因此,如果您选择您的客户端,bearer-only那么在这种情况下,keycloak 适配器将不会尝试对用户进行身份验证,而只会验证不记名令牌。这就是为什么 keycloak 文档还提到bearer-only应用程序不允许从浏览器登录的原因。
如果你不能获得令牌,你能得到什么?为什么会有这些客户?
您的客户端不能在 Keycloak 服务器上设置为仅承载。不过,您仍然可以在适配器配置上使用仅承载。Keycloak 不允许“仅承载”客户端(在服务器上设置客户端时)从服务器获取令牌。尝试在服务器上将您的客户端更改为“机密”,并在您的适配器配置 (keycloak.json) 上设置仅承载。
因此,如果您理解上述语句,那么如果您有两个微服务在这种情况下相互通信,则调用者将是confidential,被调用者将是bearer-only
而Keycloak也提到
仅承载客户端是从不启动登录的 Web 服务。它通常用于保护后端。
因此,如果您想使用任何适配器,您可以bearer-only根据需要使用
编辑-
让我们详细了解一下..让我们看一个示例,我有一个示例web-app,一个rest-app用于 Web 应用程序,我使用的是React/Angular/JSF任何前端技术,而对于后端,我使用的是基于 Java 的 rest-api或Nodejs。
现在对于上述要求,我必须确保产品(web-app,rest-api)的安全,那么我的工作是什么?我将如何通过 Keycloak 保护这两个应用程序?
所以这里是详细解释
public客户端,以便网络应用程序将要求通过 keycloak GUI 或您的登录页面登录,然后生成令牌bearer-only希望它会有所帮助。有人想添加更多他/她可以随意添加。
Yur*_*y P 10
在我的理解中,当你有一些内部服务时使用它。假设您有ServiceA和ServiceB。一个用户调用ServiceA它在手调用ServiceB。ServiceB永远不会被用户直接调用,只会被其他服务调用。ServiceA将使用用户的凭据获取令牌。然后将使用此令牌调用ServiceB. ServiceB永远不会启动登录。它只会使用令牌来验证权限。
在这种情况下,ServiceA 将是confidential,ServiceB 将是bearer-only客户端。
简短回答:您无法使用仅不记名客户端获取访问令牌,但您可以使用其他客户端获取仅不记名客户端可以接受的访问令牌。
更多细节 仅承载客户端有用地表示后端应用程序,如 Web 服务,由前端应用程序调用并由授权服务器保护(= keycloak)
后端/Web 服务应用程序不是由用户直接调用的,因此无法在Oauth2.0 用户交互流程中发挥作用。设置“bearer-only”将此事实记录到keycloak服务器,允许管理员配置客户端而无需其他强制值(例如重定向uri...),并在有人试图获取此类客户端的令牌时允许有用的错误消息
但是,这并不意味着您不能为此客户端配置特定角色:因此它需要出现在 keycloak 领域中。
此外,bearer-only 客户端需要验证收到的访问令牌,尤其是,如果激活了这个(推荐)适配器功能“verify-token-audience”,则bearer-only 客户端需要验证是否已为其颁发了访问令牌:仅承载客户端必须位于访问令牌的受众属性中:请参阅https://www.keycloak.org/docs/latest/server_admin/index.html#_audience
对于通过 keycloak 管理的受众,仅承载客户端需要在 keycloak 领域注册。
| 归档时间: |
|
| 查看次数: |
14907 次 |
| 最近记录: |