- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试理解 Keycloak 中仅承载
客户端的概念。
我了解公共(public)与 secret 的概念以及服务帐户的概念和 grant_type=client_credentials
内容。但对于bearer-only
,我陷入了困境。
谷歌搜索仅显示讨论片段:
You cannot obtain a token from keycloak with a
bearer-only
client.
文档也不清楚。他们只说:
Bearer-only access type means that the application only allows bearer token requests.
好的,如果我的应用程序只允许不记名 token 请求,如果我无法使用客户端 ID/客户端 key 从 Keycloak 获取此 token ,我该如何获取此 token ?
如果你无法获得 token ,你能得到什么呢?为什么会有这些客户存在?有人可以提供使用此类客户端的示例吗?
最佳答案
仅承载访问类型含义
Bearer-only access type means that the application only allows bearertoken requests. If this is turned on, this application cannotparticipate in browser logins.
因此,如果您选择客户端作为仅承载
,那么在这种情况下,keycloak 适配器将不会尝试对用户进行身份验证,而只会验证承载 token 。这就是为什么 keycloak 文档还提到 bearer-only
应用程序不允许从浏览器登录。
如果你无法获得 token ,你能得到什么呢?为什么会存在这些客户?
Your client can't be set as bearer-only on Keycloak Server. You canstill use bearer-only on the adapter configuration though. Keycloakdoesn't allow "bearer only" clients (when setting up your client onthe server) to obtain tokens from the server. Try to change yourclient to "confidential" on the server and set bearer-only on youradapter configuration (keycloak.json).
因此,如果您理解上述陈述,那么如果您有两个微服务在这种情况下相互通信,调用者将是 secret
,被调用者将是仅承载
Keycloak也提到了
Bearer only client are web service that never initiate a login .It’s typically used for securing the back-end.
因此,如果您想使用任何适配器,您可以根据需要使用bearer-only
编辑-
让我们更详细地了解一下..让我们看一个示例,我有一个 web-app
和一个用于我正在使用 React 的 web-app 的
任何前端技术,对于后端,我使用基于Java的rest-api或Nodejs。rest-api
/Angular/JSF
现在,对于上述要求,我必须保护这两个产品(web-app、rest-api),那么我的行动工作是什么?我如何通过 Keycloak 保护这两个应用程序的安全?
这里是详细说明
公共(public)
客户端,以便网络应用程序将要求通过 keycloak GUI 或您的登录页面登录,然后生成 token <仅承载
,因此网络应用程序生成的 token 将传递给rest-api,然后用于授权用户。希望能有所帮助。有人想要添加更多他/她可以自由添加的内容。
关于keycloak 仅持有者客户端 : why do they exist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911507/
我在 SQL 查询中使用了一个简单的 IF NOT EXISTS/WHERE NOT EXISTS 语句(我都尝试过),但我总是收到 mysql 错误,不知道为什么。尝试使用不同的引号,检查我的 My
我有 2 个表:tbl1 和 tbl2。我想从 tbl1 返回一行,其中包含以下列:col1、col2、col3、can_be_deleted 、有重要项目。这个想法是,can_be_deleted
如果您是 "t1".persona_1_id = 2,则预期结果应返回 persona_id = 4。 like --- id persona_1_id persona_2_id liked 1 2
我遇到了这个用于执行幂等插入的 github SQL 代码示例。完全按照我想要的方式工作。我不想使用 EXISTS,因为我觉得它有点困惑。可以使用联接对相同的操作进行编码吗? 下面是我在 github
public bool CheckTblExist(string TblName) { try { string cmTxt = "s
表1 Id Name DemoID 1 a 33 2 b 44 3 c 33 4 d 33 5 e 44 表2 Id DemoID IsT
我对 SQL 非常陌生。我想知道当我使用“IF EXISTS”或“IF NOT EXISTS”时会发生什么。例如:以下两个语句有什么区别: 语句 1:(存在) IF EXISTS( SELECT OR
我正在更新 exist-db 集合中的 XML 文件,我必须检查是否存在 id 以决定是否必须在我的文档中替换或插入某些内容。 我注意到随着文件的增长,查询执行时间显着恶化,我决定为我的文件添加一个索
我有一个正在尝试更新的数据库,但我不明白为什么会收到有关不存在的列的奇怪错误。当我使用“heroku pg:psql”访问数据库时,我完全可以看到该列。我找到了couple其他questions遇到类
我有一个这样的查询 SELECT ... FROM ... WHERE (SELECT EXISTS (SELECT...)) which did not return anything th
我有一个可以对数据库执行插入和更新的程序,我从 API 获取数据。这是我得到的示例数据: $uname = $get['userName']; $oname = $get['offerNa
我的批处理文件中有这个脚本 -- if not exist "%JAVA_HOME%" ( echo JAVA_HOME '%JAVA_HOME%' path doesn't exist) -
有没有办法让 Directory.Exists/File.Existssince 区分大小写 Directory.Exists(folderPath) 和 Directory.Exists(folde
考虑使用这两个表和以下查询: SELECT Product. * FROM Product WHERE EXISTS ( SELECT * FROM Codes
我正在使用 Subclipse 1.6.18 使用 Eclipse 3.72 (Indigo) 来处理 SVN 1.6 存储库。这一切都在 Ubuntu 下运行。 我有一个项目,在我更新我的 Ecli
我正在尝试使用 Terraform 配置 Azure 存储帐户和文件共享: resource "random_pet" "prefix" {} provider "azurerm" { versi
我有兴趣为需要使用 NOT EXISTS 的应用程序编写查询。子句来检查一行是否存在。 我正在使用 Sybase,但我想知道一般 SQL 中是否有一个示例,您可以在其中编写具有 NOT EXISTS
我正在尝试使用 Terraform 配置 Azure 存储帐户和文件共享: resource "random_pet" "prefix" {} provider "azurerm" { versi
下面是代码示例: CREATE TABLE #titles( title_id varchar(20), title varchar(80)
我曾经这样编写 EXISTS 检查: IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET
我是一名优秀的程序员,十分优秀!